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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Nov 12 22:06:17 EST 2008


Author: porcelli
Date: 2008-11-12 22:06:09 -0500 (Wed, 12 Nov 2008)
New Revision: 23849

Modified:
   labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java
   labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
   labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java
   labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapLexer.java
   labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapParser.java
   labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapWalker.java
   labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaLexer.java
   labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaParser.java
   labs/jbossrules/branches/etirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g
   labs/jbossrules/branches/etirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g
   labs/jbossrules/branches/etirelli/drools-compiler/src/test/java/org/drools/lang/Tree2TestDRL.java
   labs/jbossrules/branches/etirelli/pom.xml
Log:
update to antlr 3.1.1

Modified: labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java
===================================================================
--- labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2008-11-13 00:09:49 UTC (rev 23848)
+++ labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2008-11-13 03:06:09 UTC (rev 23849)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 src/main/resources/org/drools/lang/DRL.g 2008-11-11 20:36:18
+// $ANTLR 3.1.1 /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2008-11-13 00:52:51
 
 	package org.drools.lang;
 
@@ -132,7 +132,6 @@
     public static final int VT_IMPORT_ID=41;
     public static final int EOL=121;
     public static final int VK_ACTIVATION_GROUP=50;
-    public static final int Tokens=132;
     public static final int OctalEscape=126;
     public static final int VK_ACTION=80;
     public static final int VK_EXCLUDES=70;
@@ -140,7 +139,7 @@
     public static final int VT_TEMPLATE_ID=10;
     public static final int VK_DECLARE=64;
     public static final int C_STYLE_SINGLE_LINE_COMMENT=130;
-    
+
     	/** The standard method called to automatically emit a token at the
     	 *  outermost lexical rule.  The token object should point into the
     	 *  char buffer start..stop.  If there is a text override in 'text',
@@ -148,33 +147,41 @@
     	 *  custom Token objects.
     	 */
     	public Token emit() {
-    		Token t = new DroolsToken(input, type, channel, tokenStartCharIndex, getCharIndex()-1);
-    		t.setLine(tokenStartLine);
-    		t.setText(text);
-    		t.setCharPositionInLine(tokenStartCharPositionInLine);
+    		Token t = new DroolsToken(input, state.type, state.channel, state.tokenStartCharIndex, getCharIndex()-1);
+    		t.setLine(state.tokenStartLine);
+    		t.setText(state.text);
+    		t.setCharPositionInLine(state.tokenStartCharPositionInLine);
     		emit(t);
     		return t;
     	}
-    
+
     	/** Overrided this method to not output mesages */
     	public void emitErrorMessage(String msg) {
     	}
 
+
+    // delegates
+    // delegators
+
     public DRLLexer() {;} 
     public DRLLexer(CharStream input) {
-        super(input);
-        ruleMemo = new HashMap[50+1];
-     }
-    public String getGrammarFileName() { return "src/main/resources/org/drools/lang/DRL.g"; }
+        this(input, new RecognizerSharedState());
+    }
+    public DRLLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
 
-    // $ANTLR start WS
+    }
+    public String getGrammarFileName() { return "/Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g"; }
+
+    // $ANTLR start "WS"
     public final void mWS() throws RecognitionException {
         try {
             int _type = WS;
-            // src/main/resources/org/drools/lang/DRL.g:1731:9: ( ( ' ' | '\\t' | '\\f' | EOL )+ )
-            // src/main/resources/org/drools/lang/DRL.g:1731:17: ( ' ' | '\\t' | '\\f' | EOL )+
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1704:9: ( ( ' ' | '\\t' | '\\f' | EOL )+ )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1704:17: ( ' ' | '\\t' | '\\f' | EOL )+
             {
-            // src/main/resources/org/drools/lang/DRL.g:1731:17: ( ' ' | '\\t' | '\\f' | EOL )+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1704:17: ( ' ' | '\\t' | '\\f' | EOL )+
             int cnt1=0;
             loop1:
             do {
@@ -206,37 +213,37 @@
 
                 switch (alt1) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1731:19: ' '
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1704:19: ' '
             	    {
-            	    match(' '); if (failed) return ;
+            	    match(' '); if (state.failed) return ;
 
             	    }
             	    break;
             	case 2 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1732:19: '\\t'
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1705:19: '\\t'
             	    {
-            	    match('\t'); if (failed) return ;
+            	    match('\t'); if (state.failed) return ;
 
             	    }
             	    break;
             	case 3 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1733:19: '\\f'
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1706:19: '\\f'
             	    {
-            	    match('\f'); if (failed) return ;
+            	    match('\f'); if (state.failed) return ;
 
             	    }
             	    break;
             	case 4 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1734:19: EOL
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1707:19: EOL
             	    {
-            	    mEOL(); if (failed) return ;
+            	    mEOL(); if (state.failed) return ;
 
             	    }
             	    break;
 
             	default :
             	    if ( cnt1 >= 1 ) break loop1;
-            	    if (backtracking>0) {failed=true; return ;}
+            	    if (state.backtracking>0) {state.failed=true; return ;}
                         EarlyExitException eee =
                             new EarlyExitException(1, input);
                         throw eee;
@@ -244,33 +251,34 @@
                 cnt1++;
             } while (true);
 
-            if ( backtracking==0 ) {
-               channel=HIDDEN; 
+            if ( state.backtracking==0 ) {
+               _channel=HIDDEN; 
             }
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end WS
+    // $ANTLR end "WS"
 
-    // $ANTLR start EOL
+    // $ANTLR start "EOL"
     public final void mEOL() throws RecognitionException {
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1740:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
-            // src/main/resources/org/drools/lang/DRL.g:1741:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1713:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1714:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             {
-            // src/main/resources/org/drools/lang/DRL.g:1741:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1714:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             int alt2=3;
             int LA2_0 = input.LA(1);
 
             if ( (LA2_0=='\r') ) {
                 int LA2_1 = input.LA(2);
 
-                if ( (LA2_1=='\n') && (synpred1())) {
+                if ( (LA2_1=='\n') && (synpred1_DRL())) {
                     alt2=1;
                 }
                 else {
@@ -280,32 +288,32 @@
                 alt2=3;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1741:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )", 2, 0, input);
+                    new NoViableAltException("", 2, 0, input);
 
                 throw nvae;
             }
             switch (alt2) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1741:14: ( '\\r\\n' )=> '\\r\\n'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1714:14: ( '\\r\\n' )=> '\\r\\n'
                     {
-                    match("\r\n"); if (failed) return ;
+                    match("\r\n"); if (state.failed) return ;
 
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1742:25: '\\r'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1715:25: '\\r'
                     {
-                    match('\r'); if (failed) return ;
+                    match('\r'); if (state.failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1743:25: '\\n'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1716:25: '\\n'
                     {
-                    match('\n'); if (failed) return ;
+                    match('\n'); if (state.failed) return ;
 
                     }
                     break;
@@ -319,16 +327,17 @@
         finally {
         }
     }
-    // $ANTLR end EOL
+    // $ANTLR end "EOL"
 
-    // $ANTLR start INT
+    // $ANTLR start "INT"
     public final void mINT() throws RecognitionException {
         try {
             int _type = INT;
-            // src/main/resources/org/drools/lang/DRL.g:1748:2: ( ( '-' )? ( '0' .. '9' )+ )
-            // src/main/resources/org/drools/lang/DRL.g:1748:4: ( '-' )? ( '0' .. '9' )+
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1721:2: ( ( '-' )? ( '0' .. '9' )+ )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1721:4: ( '-' )? ( '0' .. '9' )+
             {
-            // src/main/resources/org/drools/lang/DRL.g:1748:4: ( '-' )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1721:4: ( '-' )?
             int alt3=2;
             int LA3_0 = input.LA(1);
 
@@ -337,16 +346,16 @@
             }
             switch (alt3) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1748:5: '-'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1721:5: '-'
                     {
-                    match('-'); if (failed) return ;
+                    match('-'); if (state.failed) return ;
 
                     }
                     break;
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:1748:10: ( '0' .. '9' )+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1721:10: ( '0' .. '9' )+
             int cnt4=0;
             loop4:
             do {
@@ -360,16 +369,16 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1748:11: '0' .. '9'
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1721:11: '0' .. '9'
             	    {
-            	    matchRange('0','9'); if (failed) return ;
+            	    matchRange('0','9'); if (state.failed) return ;
 
             	    }
             	    break;
 
             	default :
             	    if ( cnt4 >= 1 ) break loop4;
-            	    if (backtracking>0) {failed=true; return ;}
+            	    if (state.backtracking>0) {state.failed=true; return ;}
                         EarlyExitException eee =
                             new EarlyExitException(4, input);
                         throw eee;
@@ -380,21 +389,23 @@
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end INT
+    // $ANTLR end "INT"
 
-    // $ANTLR start FLOAT
+    // $ANTLR start "FLOAT"
     public final void mFLOAT() throws RecognitionException {
         try {
             int _type = FLOAT;
-            // src/main/resources/org/drools/lang/DRL.g:1752:2: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
-            // src/main/resources/org/drools/lang/DRL.g:1752:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1725:2: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1725:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
             {
-            // src/main/resources/org/drools/lang/DRL.g:1752:4: ( '-' )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1725:4: ( '-' )?
             int alt5=2;
             int LA5_0 = input.LA(1);
 
@@ -403,16 +414,16 @@
             }
             switch (alt5) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1752:5: '-'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1725:5: '-'
                     {
-                    match('-'); if (failed) return ;
+                    match('-'); if (state.failed) return ;
 
                     }
                     break;
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:1752:10: ( '0' .. '9' )+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1725:10: ( '0' .. '9' )+
             int cnt6=0;
             loop6:
             do {
@@ -426,16 +437,16 @@
 
                 switch (alt6) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1752:11: '0' .. '9'
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1725:11: '0' .. '9'
             	    {
-            	    matchRange('0','9'); if (failed) return ;
+            	    matchRange('0','9'); if (state.failed) return ;
 
             	    }
             	    break;
 
             	default :
             	    if ( cnt6 >= 1 ) break loop6;
-            	    if (backtracking>0) {failed=true; return ;}
+            	    if (state.backtracking>0) {state.failed=true; return ;}
                         EarlyExitException eee =
                             new EarlyExitException(6, input);
                         throw eee;
@@ -443,8 +454,8 @@
                 cnt6++;
             } while (true);
 
-            match('.'); if (failed) return ;
-            // src/main/resources/org/drools/lang/DRL.g:1752:26: ( '0' .. '9' )+
+            match('.'); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1725:26: ( '0' .. '9' )+
             int cnt7=0;
             loop7:
             do {
@@ -458,16 +469,16 @@
 
                 switch (alt7) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1752:27: '0' .. '9'
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1725:27: '0' .. '9'
             	    {
-            	    matchRange('0','9'); if (failed) return ;
+            	    matchRange('0','9'); if (state.failed) return ;
 
             	    }
             	    break;
 
             	default :
             	    if ( cnt7 >= 1 ) break loop7;
-            	    if (backtracking>0) {failed=true; return ;}
+            	    if (state.backtracking>0) {state.failed=true; return ;}
                         EarlyExitException eee =
                             new EarlyExitException(7, input);
                         throw eee;
@@ -478,18 +489,20 @@
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end FLOAT
+    // $ANTLR end "FLOAT"
 
-    // $ANTLR start STRING
+    // $ANTLR start "STRING"
     public final void mSTRING() throws RecognitionException {
         try {
             int _type = STRING;
-            // src/main/resources/org/drools/lang/DRL.g:1756:5: ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) )
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1729:5: ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) )
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -500,21 +513,21 @@
                 alt10=2;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1755:1: STRING : ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) );", 10, 0, input);
+                    new NoViableAltException("", 10, 0, input);
 
                 throw nvae;
             }
             switch (alt10) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1756:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1729:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
                     {
-                    // src/main/resources/org/drools/lang/DRL.g:1756:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
-                    // src/main/resources/org/drools/lang/DRL.g:1756:9: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1729:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1729:9: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
                     {
-                    match('\"'); if (failed) return ;
-                    // src/main/resources/org/drools/lang/DRL.g:1756:13: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
+                    match('\"'); if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1729:13: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
                     loop8:
                     do {
                         int alt8=3;
@@ -523,32 +536,31 @@
                         if ( (LA8_0=='\\') ) {
                             alt8=1;
                         }
-                        else if ( ((LA8_0>='\u0000' && LA8_0<='!')||(LA8_0>='#' && LA8_0<='[')||(LA8_0>=']' && LA8_0<='\uFFFE')) ) {
+                        else if ( ((LA8_0>='\u0000' && LA8_0<='!')||(LA8_0>='#' && LA8_0<='[')||(LA8_0>=']' && LA8_0<='\uFFFF')) ) {
                             alt8=2;
                         }
 
 
                         switch (alt8) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:1756:15: EscapeSequence
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1729:15: EscapeSequence
                     	    {
-                    	    mEscapeSequence(); if (failed) return ;
+                    	    mEscapeSequence(); if (state.failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:1756:32: ~ ( '\\\\' | '\"' )
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1729:32: ~ ( '\\\\' | '\"' )
                     	    {
-                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
-                    	    failed=false;
+                    	    state.failed=false;
                     	    }
                     	    else {
-                    	        if (backtracking>0) {failed=true; return ;}
-                    	        MismatchedSetException mse =
-                    	            new MismatchedSetException(null,input);
-                    	        recover(mse);    throw mse;
-                    	    }
+                    	        if (state.backtracking>0) {state.failed=true; return ;}
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
 
 
                     	    }
@@ -559,7 +571,7 @@
                         }
                     } while (true);
 
-                    match('\"'); if (failed) return ;
+                    match('\"'); if (state.failed) return ;
 
                     }
 
@@ -567,13 +579,13 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1757:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1730:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
                     {
-                    // src/main/resources/org/drools/lang/DRL.g:1757:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
-                    // src/main/resources/org/drools/lang/DRL.g:1757:9: '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\''
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1730:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1730:9: '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\''
                     {
-                    match('\''); if (failed) return ;
-                    // src/main/resources/org/drools/lang/DRL.g:1757:14: ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )*
+                    match('\''); if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1730:14: ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )*
                     loop9:
                     do {
                         int alt9=3;
@@ -582,32 +594,31 @@
                         if ( (LA9_0=='\\') ) {
                             alt9=1;
                         }
-                        else if ( ((LA9_0>='\u0000' && LA9_0<='&')||(LA9_0>='(' && LA9_0<='[')||(LA9_0>=']' && LA9_0<='\uFFFE')) ) {
+                        else if ( ((LA9_0>='\u0000' && LA9_0<='&')||(LA9_0>='(' && LA9_0<='[')||(LA9_0>=']' && LA9_0<='\uFFFF')) ) {
                             alt9=2;
                         }
 
 
                         switch (alt9) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:1757:16: EscapeSequence
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1730:16: EscapeSequence
                     	    {
-                    	    mEscapeSequence(); if (failed) return ;
+                    	    mEscapeSequence(); if (state.failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:1757:33: ~ ( '\\\\' | '\\'' )
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1730:33: ~ ( '\\\\' | '\\'' )
                     	    {
-                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
-                    	    failed=false;
+                    	    state.failed=false;
                     	    }
                     	    else {
-                    	        if (backtracking>0) {failed=true; return ;}
-                    	        MismatchedSetException mse =
-                    	            new MismatchedSetException(null,input);
-                    	        recover(mse);    throw mse;
-                    	    }
+                    	        if (state.backtracking>0) {state.failed=true; return ;}
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
 
 
                     	    }
@@ -618,7 +629,7 @@
                         }
                     } while (true);
 
-                    match('\''); if (failed) return ;
+                    match('\''); if (state.failed) return ;
 
                     }
 
@@ -627,29 +638,29 @@
                     break;
 
             }
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end STRING
+    // $ANTLR end "STRING"
 
-    // $ANTLR start HexDigit
+    // $ANTLR start "HexDigit"
     public final void mHexDigit() throws RecognitionException {
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1761:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
-            // src/main/resources/org/drools/lang/DRL.g:1761:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1734:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1734: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();
-            failed=false;
+            state.failed=false;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
-                MismatchedSetException mse =
-                    new MismatchedSetException(null,input);
-                recover(mse);    throw mse;
-            }
+                if (state.backtracking>0) {state.failed=true; return ;}
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
 
 
             }
@@ -658,12 +669,12 @@
         finally {
         }
     }
-    // $ANTLR end HexDigit
+    // $ANTLR end "HexDigit"
 
-    // $ANTLR start EscapeSequence
+    // $ANTLR start "EscapeSequence"
     public final void mEscapeSequence() throws RecognitionException {
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1765:5: ( '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' ) | UnicodeEscape | OctalEscape )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1738:5: ( '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' ) | UnicodeEscape | OctalEscape )
             int alt11=3;
             int LA11_0 = input.LA(1);
 
@@ -733,51 +744,50 @@
                     }
                     break;
                 default:
-                    if (backtracking>0) {failed=true; return ;}
+                    if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1763:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' ) | UnicodeEscape | OctalEscape );", 11, 1, input);
+                        new NoViableAltException("", 11, 1, input);
 
                     throw nvae;
                 }
 
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1763:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' ) | UnicodeEscape | OctalEscape );", 11, 0, input);
+                    new NoViableAltException("", 11, 0, input);
 
                 throw nvae;
             }
             switch (alt11) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1765:9: '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1738:9: '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' )
                     {
-                    match('\\'); if (failed) return ;
+                    match('\\'); if (state.failed) return ;
                     if ( input.LA(1)=='\"'||input.LA(1)=='$'||(input.LA(1)>='&' && input.LA(1)<='+')||(input.LA(1)>='-' && input.LA(1)<='.')||input.LA(1)=='?'||(input.LA(1)>='A' && input.LA(1)<='B')||(input.LA(1)>='D' && input.LA(1)<='E')||input.LA(1)=='G'||input.LA(1)=='Q'||input.LA(1)=='S'||input.LA(1)=='W'||(input.LA(1)>='Z' && input.LA(1)<='^')||(input.LA(1)>='a' && input.LA(1)<='f')||(input.LA(1)>='n' && input.LA(1)<='p')||(input.LA(1)>='r' && input.LA(1)<='t')||(input.LA(1)>='w' && input.LA(1)<='x')||(input.LA(1)>='z' && input.LA(1)<='}') ) {
                         input.consume();
-                    failed=false;
+                    state.failed=false;
                     }
                     else {
-                        if (backtracking>0) {failed=true; return ;}
-                        MismatchedSetException mse =
-                            new MismatchedSetException(null,input);
-                        recover(mse);    throw mse;
-                    }
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;}
 
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1769:9: UnicodeEscape
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1742:9: UnicodeEscape
                     {
-                    mUnicodeEscape(); if (failed) return ;
+                    mUnicodeEscape(); if (state.failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1770:9: OctalEscape
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1743:9: OctalEscape
                     {
-                    mOctalEscape(); if (failed) return ;
+                    mOctalEscape(); if (state.failed) return ;
 
                     }
                     break;
@@ -787,12 +797,12 @@
         finally {
         }
     }
-    // $ANTLR end EscapeSequence
+    // $ANTLR end "EscapeSequence"
 
-    // $ANTLR start OctalEscape
+    // $ANTLR start "OctalEscape"
     public final void mOctalEscape() throws RecognitionException {
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1775:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1748:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
             int alt12=3;
             int LA12_0 = input.LA(1);
 
@@ -824,43 +834,43 @@
                         alt12=3;}
                 }
                 else {
-                    if (backtracking>0) {failed=true; return ;}
+                    if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1773:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 12, 1, input);
+                        new NoViableAltException("", 12, 1, input);
 
                     throw nvae;
                 }
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1773:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 12, 0, input);
+                    new NoViableAltException("", 12, 0, input);
 
                 throw nvae;
             }
             switch (alt12) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1775:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1748:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
                     {
-                    match('\\'); if (failed) return ;
-                    // src/main/resources/org/drools/lang/DRL.g:1775:14: ( '0' .. '3' )
-                    // src/main/resources/org/drools/lang/DRL.g:1775:15: '0' .. '3'
+                    match('\\'); if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1748:14: ( '0' .. '3' )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1748:15: '0' .. '3'
                     {
-                    matchRange('0','3'); if (failed) return ;
+                    matchRange('0','3'); if (state.failed) return ;
 
                     }
 
-                    // src/main/resources/org/drools/lang/DRL.g:1775:25: ( '0' .. '7' )
-                    // src/main/resources/org/drools/lang/DRL.g:1775:26: '0' .. '7'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1748:25: ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1748:26: '0' .. '7'
                     {
-                    matchRange('0','7'); if (failed) return ;
+                    matchRange('0','7'); if (state.failed) return ;
 
                     }
 
-                    // src/main/resources/org/drools/lang/DRL.g:1775:36: ( '0' .. '7' )
-                    // src/main/resources/org/drools/lang/DRL.g:1775:37: '0' .. '7'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1748:36: ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1748:37: '0' .. '7'
                     {
-                    matchRange('0','7'); if (failed) return ;
+                    matchRange('0','7'); if (state.failed) return ;
 
                     }
 
@@ -868,20 +878,20 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1776:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1749:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
                     {
-                    match('\\'); if (failed) return ;
-                    // src/main/resources/org/drools/lang/DRL.g:1776:14: ( '0' .. '7' )
-                    // src/main/resources/org/drools/lang/DRL.g:1776:15: '0' .. '7'
+                    match('\\'); if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1749:14: ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1749:15: '0' .. '7'
                     {
-                    matchRange('0','7'); if (failed) return ;
+                    matchRange('0','7'); if (state.failed) return ;
 
                     }
 
-                    // src/main/resources/org/drools/lang/DRL.g:1776:25: ( '0' .. '7' )
-                    // src/main/resources/org/drools/lang/DRL.g:1776:26: '0' .. '7'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1749:25: ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1749:26: '0' .. '7'
                     {
-                    matchRange('0','7'); if (failed) return ;
+                    matchRange('0','7'); if (state.failed) return ;
 
                     }
 
@@ -889,13 +899,13 @@
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1777:9: '\\\\' ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1750:9: '\\\\' ( '0' .. '7' )
                     {
-                    match('\\'); if (failed) return ;
-                    // src/main/resources/org/drools/lang/DRL.g:1777:14: ( '0' .. '7' )
-                    // src/main/resources/org/drools/lang/DRL.g:1777:15: '0' .. '7'
+                    match('\\'); if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1750:14: ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1750:15: '0' .. '7'
                     {
-                    matchRange('0','7'); if (failed) return ;
+                    matchRange('0','7'); if (state.failed) return ;
 
                     }
 
@@ -908,20 +918,20 @@
         finally {
         }
     }
-    // $ANTLR end OctalEscape
+    // $ANTLR end "OctalEscape"
 
-    // $ANTLR start UnicodeEscape
+    // $ANTLR start "UnicodeEscape"
     public final void mUnicodeEscape() throws RecognitionException {
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1782:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
-            // src/main/resources/org/drools/lang/DRL.g:1782:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1755:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1755:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
             {
-            match('\\'); if (failed) return ;
-            match('u'); if (failed) return ;
-            mHexDigit(); if (failed) return ;
-            mHexDigit(); if (failed) return ;
-            mHexDigit(); if (failed) return ;
-            mHexDigit(); if (failed) return ;
+            match('\\'); if (state.failed) return ;
+            match('u'); if (state.failed) return ;
+            mHexDigit(); if (state.failed) return ;
+            mHexDigit(); if (state.failed) return ;
+            mHexDigit(); if (state.failed) return ;
+            mHexDigit(); if (state.failed) return ;
 
             }
 
@@ -929,16 +939,17 @@
         finally {
         }
     }
-    // $ANTLR end UnicodeEscape
+    // $ANTLR end "UnicodeEscape"
 
-    // $ANTLR start BOOL
+    // $ANTLR start "BOOL"
     public final void mBOOL() throws RecognitionException {
         try {
             int _type = BOOL;
-            // src/main/resources/org/drools/lang/DRL.g:1786:2: ( ( 'true' | 'false' ) )
-            // src/main/resources/org/drools/lang/DRL.g:1786:4: ( 'true' | 'false' )
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1759:2: ( ( 'true' | 'false' ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1759:4: ( 'true' | 'false' )
             {
-            // src/main/resources/org/drools/lang/DRL.g:1786:4: ( 'true' | 'false' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1759:4: ( 'true' | 'false' )
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -949,25 +960,25 @@
                 alt13=2;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1786:4: ( 'true' | 'false' )", 13, 0, input);
+                    new NoViableAltException("", 13, 0, input);
 
                 throw nvae;
             }
             switch (alt13) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1786:5: 'true'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1759:5: 'true'
                     {
-                    match("true"); if (failed) return ;
+                    match("true"); if (state.failed) return ;
 
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1786:12: 'false'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1759:12: 'false'
                     {
-                    match("false"); if (failed) return ;
+                    match("false"); if (state.failed) return ;
 
 
                     }
@@ -978,447 +989,495 @@
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end BOOL
+    // $ANTLR end "BOOL"
 
-    // $ANTLR start ACCUMULATE
+    // $ANTLR start "ACCUMULATE"
     public final void mACCUMULATE() throws RecognitionException {
         try {
             int _type = ACCUMULATE;
-            // src/main/resources/org/drools/lang/DRL.g:1790:2: ( 'accumulate' )
-            // src/main/resources/org/drools/lang/DRL.g:1790:4: 'accumulate'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1763:2: ( 'accumulate' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1763:4: 'accumulate'
             {
-            match("accumulate"); if (failed) return ;
+            match("accumulate"); if (state.failed) return ;
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end ACCUMULATE
+    // $ANTLR end "ACCUMULATE"
 
-    // $ANTLR start COLLECT
+    // $ANTLR start "COLLECT"
     public final void mCOLLECT() throws RecognitionException {
         try {
             int _type = COLLECT;
-            // src/main/resources/org/drools/lang/DRL.g:1794:2: ( 'collect' )
-            // src/main/resources/org/drools/lang/DRL.g:1794:4: 'collect'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1767:2: ( 'collect' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1767:4: 'collect'
             {
-            match("collect"); if (failed) return ;
+            match("collect"); if (state.failed) return ;
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end COLLECT
+    // $ANTLR end "COLLECT"
 
-    // $ANTLR start END
+    // $ANTLR start "END"
     public final void mEND() throws RecognitionException {
         try {
             int _type = END;
-            // src/main/resources/org/drools/lang/DRL.g:1797:5: ( 'end' )
-            // src/main/resources/org/drools/lang/DRL.g:1797:7: 'end'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1770:5: ( 'end' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1770:7: 'end'
             {
-            match("end"); if (failed) return ;
+            match("end"); if (state.failed) return ;
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end END
+    // $ANTLR end "END"
 
-    // $ANTLR start FROM
+    // $ANTLR start "FROM"
     public final void mFROM() throws RecognitionException {
         try {
             int _type = FROM;
-            // src/main/resources/org/drools/lang/DRL.g:1801:2: ( 'from' )
-            // src/main/resources/org/drools/lang/DRL.g:1801:4: 'from'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1774:2: ( 'from' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1774:4: 'from'
             {
-            match("from"); if (failed) return ;
+            match("from"); if (state.failed) return ;
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end FROM
+    // $ANTLR end "FROM"
 
-    // $ANTLR start INIT
+    // $ANTLR start "INIT"
     public final void mINIT() throws RecognitionException {
         try {
             int _type = INIT;
-            // src/main/resources/org/drools/lang/DRL.g:1805:2: ( 'init' )
-            // src/main/resources/org/drools/lang/DRL.g:1805:4: 'init'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1778:2: ( 'init' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1778:4: 'init'
             {
-            match("init"); if (failed) return ;
+            match("init"); if (state.failed) return ;
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end INIT
+    // $ANTLR end "INIT"
 
-    // $ANTLR start NULL
+    // $ANTLR start "NULL"
     public final void mNULL() throws RecognitionException {
         try {
             int _type = NULL;
-            // src/main/resources/org/drools/lang/DRL.g:1809:2: ( 'null' )
-            // src/main/resources/org/drools/lang/DRL.g:1809:4: 'null'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1782:2: ( 'null' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1782:4: 'null'
             {
-            match("null"); if (failed) return ;
+            match("null"); if (state.failed) return ;
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end NULL
+    // $ANTLR end "NULL"
 
-    // $ANTLR start OVER
+    // $ANTLR start "OVER"
     public final void mOVER() throws RecognitionException {
         try {
             int _type = OVER;
-            // src/main/resources/org/drools/lang/DRL.g:1813:2: ( 'over' )
-            // src/main/resources/org/drools/lang/DRL.g:1813:4: 'over'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1786:2: ( 'over' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1786:4: 'over'
             {
-            match("over"); if (failed) return ;
+            match("over"); if (state.failed) return ;
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end OVER
+    // $ANTLR end "OVER"
 
-    // $ANTLR start THEN
+    // $ANTLR start "THEN"
     public final void mTHEN() throws RecognitionException {
         try {
             int _type = THEN;
-            // src/main/resources/org/drools/lang/DRL.g:1817:2: ( 'then' )
-            // src/main/resources/org/drools/lang/DRL.g:1817:4: 'then'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1790:2: ( 'then' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1790:4: 'then'
             {
-            match("then"); if (failed) return ;
+            match("then"); if (state.failed) return ;
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end THEN
+    // $ANTLR end "THEN"
 
-    // $ANTLR start WHEN
+    // $ANTLR start "WHEN"
     public final void mWHEN() throws RecognitionException {
         try {
             int _type = WHEN;
-            // src/main/resources/org/drools/lang/DRL.g:1821:2: ( 'when' )
-            // src/main/resources/org/drools/lang/DRL.g:1821:4: 'when'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1794:2: ( 'when' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1794:4: 'when'
             {
-            match("when"); if (failed) return ;
+            match("when"); if (state.failed) return ;
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end WHEN
+    // $ANTLR end "WHEN"
 
-    // $ANTLR start GRAVE_ACCENT
+    // $ANTLR start "GRAVE_ACCENT"
     public final void mGRAVE_ACCENT() throws RecognitionException {
         try {
             int _type = GRAVE_ACCENT;
-            // src/main/resources/org/drools/lang/DRL.g:1833:2: ( '`' )
-            // src/main/resources/org/drools/lang/DRL.g:1833:4: '`'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1806:2: ( '`' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1806:4: '`'
             {
-            match('`'); if (failed) return ;
+            match('`'); if (state.failed) return ;
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end GRAVE_ACCENT
+    // $ANTLR end "GRAVE_ACCENT"
 
-    // $ANTLR start TILDE
+    // $ANTLR start "TILDE"
     public final void mTILDE() throws RecognitionException {
         try {
             int _type = TILDE;
-            // src/main/resources/org/drools/lang/DRL.g:1836:7: ( '~' )
-            // src/main/resources/org/drools/lang/DRL.g:1836:9: '~'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1809:7: ( '~' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1809:9: '~'
             {
-            match('~'); if (failed) return ;
+            match('~'); if (state.failed) return ;
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end TILDE
+    // $ANTLR end "TILDE"
 
-    // $ANTLR start AT
+    // $ANTLR start "AT"
     public final void mAT() throws RecognitionException {
         try {
             int _type = AT;
-            // src/main/resources/org/drools/lang/DRL.g:1838:4: ( '@' )
-            // src/main/resources/org/drools/lang/DRL.g:1838:6: '@'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1811:4: ( '@' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1811:6: '@'
             {
-            match('@'); if (failed) return ;
+            match('@'); if (state.failed) return ;
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end AT
+    // $ANTLR end "AT"
 
-    // $ANTLR start EQUALS
+    // $ANTLR start "EQUALS"
     public final void mEQUALS() throws RecognitionException {
         try {
             int _type = EQUALS;
-            // src/main/resources/org/drools/lang/DRL.g:1842:2: ( '=' )
-            // src/main/resources/org/drools/lang/DRL.g:1842:4: '='
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1815:2: ( '=' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1815:4: '='
             {
-            match('='); if (failed) return ;
+            match('='); if (state.failed) return ;
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end EQUALS
+    // $ANTLR end "EQUALS"
 
-    // $ANTLR start SEMICOLON
+    // $ANTLR start "SEMICOLON"
     public final void mSEMICOLON() throws RecognitionException {
         try {
             int _type = SEMICOLON;
-            // src/main/resources/org/drools/lang/DRL.g:1846:2: ( ';' )
-            // src/main/resources/org/drools/lang/DRL.g:1846:4: ';'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1819:2: ( ';' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1819:4: ';'
             {
-            match(';'); if (failed) return ;
+            match(';'); if (state.failed) return ;
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end SEMICOLON
+    // $ANTLR end "SEMICOLON"
 
-    // $ANTLR start DOT_STAR
+    // $ANTLR start "DOT_STAR"
     public final void mDOT_STAR() throws RecognitionException {
         try {
             int _type = DOT_STAR;
-            // src/main/resources/org/drools/lang/DRL.g:1850:2: ( '.*' )
-            // src/main/resources/org/drools/lang/DRL.g:1850:4: '.*'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1823:2: ( '.*' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1823:4: '.*'
             {
-            match(".*"); if (failed) return ;
+            match(".*"); if (state.failed) return ;
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end DOT_STAR
+    // $ANTLR end "DOT_STAR"
 
-    // $ANTLR start COLON
+    // $ANTLR start "COLON"
     public final void mCOLON() throws RecognitionException {
         try {
             int _type = COLON;
-            // src/main/resources/org/drools/lang/DRL.g:1854:2: ( ':' )
-            // src/main/resources/org/drools/lang/DRL.g:1854:4: ':'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1827:2: ( ':' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1827:4: ':'
             {
-            match(':'); if (failed) return ;
+            match(':'); if (state.failed) return ;
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end COLON
+    // $ANTLR end "COLON"
 
-    // $ANTLR start EQUAL
+    // $ANTLR start "EQUAL"
     public final void mEQUAL() throws RecognitionException {
         try {
             int _type = EQUAL;
-            // src/main/resources/org/drools/lang/DRL.g:1858:2: ( '==' )
-            // src/main/resources/org/drools/lang/DRL.g:1858:4: '=='
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1831:2: ( '==' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1831:4: '=='
             {
-            match("=="); if (failed) return ;
+            match("=="); if (state.failed) return ;
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end EQUAL
+    // $ANTLR end "EQUAL"
 
-    // $ANTLR start NOT_EQUAL
+    // $ANTLR start "NOT_EQUAL"
     public final void mNOT_EQUAL() throws RecognitionException {
         try {
             int _type = NOT_EQUAL;
-            // src/main/resources/org/drools/lang/DRL.g:1862:2: ( '!=' )
-            // src/main/resources/org/drools/lang/DRL.g:1862:4: '!='
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1835:2: ( '!=' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1835:4: '!='
             {
-            match("!="); if (failed) return ;
+            match("!="); if (state.failed) return ;
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end NOT_EQUAL
+    // $ANTLR end "NOT_EQUAL"
 
-    // $ANTLR start GREATER
+    // $ANTLR start "GREATER"
     public final void mGREATER() throws RecognitionException {
         try {
             int _type = GREATER;
-            // src/main/resources/org/drools/lang/DRL.g:1866:2: ( '>' )
-            // src/main/resources/org/drools/lang/DRL.g:1866:4: '>'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1839:2: ( '>' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1839:4: '>'
             {
-            match('>'); if (failed) return ;
+            match('>'); if (state.failed) return ;
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end GREATER
+    // $ANTLR end "GREATER"
 
-    // $ANTLR start GREATER_EQUAL
+    // $ANTLR start "GREATER_EQUAL"
     public final void mGREATER_EQUAL() throws RecognitionException {
         try {
             int _type = GREATER_EQUAL;
-            // src/main/resources/org/drools/lang/DRL.g:1870:2: ( '>=' )
-            // src/main/resources/org/drools/lang/DRL.g:1870:4: '>='
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1843:2: ( '>=' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1843:4: '>='
             {
-            match(">="); if (failed) return ;
+            match(">="); if (state.failed) return ;
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end GREATER_EQUAL
+    // $ANTLR end "GREATER_EQUAL"
 
-    // $ANTLR start LESS
+    // $ANTLR start "LESS"
     public final void mLESS() throws RecognitionException {
         try {
             int _type = LESS;
-            // src/main/resources/org/drools/lang/DRL.g:1874:2: ( '<' )
-            // src/main/resources/org/drools/lang/DRL.g:1874:4: '<'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1847:2: ( '<' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1847:4: '<'
             {
-            match('<'); if (failed) return ;
+            match('<'); if (state.failed) return ;
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end LESS
+    // $ANTLR end "LESS"
 
-    // $ANTLR start LESS_EQUAL
+    // $ANTLR start "LESS_EQUAL"
     public final void mLESS_EQUAL() throws RecognitionException {
         try {
             int _type = LESS_EQUAL;
-            // src/main/resources/org/drools/lang/DRL.g:1878:2: ( '<=' )
-            // src/main/resources/org/drools/lang/DRL.g:1878:4: '<='
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1851:2: ( '<=' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1851:4: '<='
             {
-            match("<="); if (failed) return ;
+            match("<="); if (state.failed) return ;
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end LESS_EQUAL
+    // $ANTLR end "LESS_EQUAL"
 
-    // $ANTLR start ARROW
+    // $ANTLR start "ARROW"
     public final void mARROW() throws RecognitionException {
         try {
             int _type = ARROW;
-            // src/main/resources/org/drools/lang/DRL.g:1882:2: ( '->' )
-            // src/main/resources/org/drools/lang/DRL.g:1882:4: '->'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1855:2: ( '->' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1855:4: '->'
             {
-            match("->"); if (failed) return ;
+            match("->"); if (state.failed) return ;
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end ARROW
+    // $ANTLR end "ARROW"
 
-    // $ANTLR start ID
+    // $ANTLR start "ID"
     public final void mID() throws RecognitionException {
         try {
             int _type = ID;
-            // src/main/resources/org/drools/lang/DRL.g:1886:2: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )* | '%' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+ '%' )
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1859:2: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )* | '%' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+ '%' )
             int alt16=2;
             int LA16_0 = input.LA(1);
 
@@ -1429,28 +1488,27 @@
                 alt16=2;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1885:1: ID : ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )* | '%' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+ '%' );", 16, 0, input);
+                    new NoViableAltException("", 16, 0, input);
 
                 throw nvae;
             }
             switch (alt16) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1886:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1859: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();
-                    failed=false;
+                    state.failed=false;
                     }
                     else {
-                        if (backtracking>0) {failed=true; return ;}
-                        MismatchedSetException mse =
-                            new MismatchedSetException(null,input);
-                        recover(mse);    throw mse;
-                    }
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;}
 
-                    // src/main/resources/org/drools/lang/DRL.g:1886:50: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1859:50: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
                     loop14:
                     do {
                         int alt14=2;
@@ -1463,18 +1521,17 @@
 
                         switch (alt14) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/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();
-                    	    failed=false;
+                    	    state.failed=false;
                     	    }
                     	    else {
-                    	        if (backtracking>0) {failed=true; return ;}
-                    	        MismatchedSetException mse =
-                    	            new MismatchedSetException(null,input);
-                    	        recover(mse);    throw mse;
-                    	    }
+                    	        if (state.backtracking>0) {state.failed=true; return ;}
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
 
 
                     	    }
@@ -1489,21 +1546,20 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1887:4: '%' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+ '%'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1860:4: '%' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+ '%'
                     {
-                    match('%'); if (failed) return ;
+                    match('%'); if (state.failed) return ;
                     if ( input.LA(1)=='$'||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z')||(input.LA(1)>='\u00C0' && input.LA(1)<='\u00FF') ) {
                         input.consume();
-                    failed=false;
+                    state.failed=false;
                     }
                     else {
-                        if (backtracking>0) {failed=true; return ;}
-                        MismatchedSetException mse =
-                            new MismatchedSetException(null,input);
-                        recover(mse);    throw mse;
-                    }
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;}
 
-                    // src/main/resources/org/drools/lang/DRL.g:1887:54: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1860:54: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+
                     int cnt15=0;
                     loop15:
                     do {
@@ -1517,18 +1573,17 @@
 
                         switch (alt15) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/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();
-                    	    failed=false;
+                    	    state.failed=false;
                     	    }
                     	    else {
-                    	        if (backtracking>0) {failed=true; return ;}
-                    	        MismatchedSetException mse =
-                    	            new MismatchedSetException(null,input);
-                    	        recover(mse);    throw mse;
-                    	    }
+                    	        if (state.backtracking>0) {state.failed=true; return ;}
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
 
 
                     	    }
@@ -1536,7 +1591,7 @@
 
                     	default :
                     	    if ( cnt15 >= 1 ) break loop15;
-                    	    if (backtracking>0) {failed=true; return ;}
+                    	    if (state.backtracking>0) {state.failed=true; return ;}
                                 EarlyExitException eee =
                                     new EarlyExitException(15, input);
                                 throw eee;
@@ -1544,213 +1599,235 @@
                         cnt15++;
                     } while (true);
 
-                    match('%'); if (failed) return ;
-                    if ( backtracking==0 ) {
-                      	text = getText().substring(1, getText().length() - 1);	
+                    match('%'); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                      	state.text = getText().substring(1, getText().length() - 1);	
                     }
 
                     }
                     break;
 
             }
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end ID
+    // $ANTLR end "ID"
 
-    // $ANTLR start LEFT_PAREN
+    // $ANTLR start "LEFT_PAREN"
     public final void mLEFT_PAREN() throws RecognitionException {
         try {
             int _type = LEFT_PAREN;
-            // src/main/resources/org/drools/lang/DRL.g:1892:9: ( '(' )
-            // src/main/resources/org/drools/lang/DRL.g:1892:11: '('
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1865:9: ( '(' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1865:11: '('
             {
-            match('('); if (failed) return ;
+            match('('); if (state.failed) return ;
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end LEFT_PAREN
+    // $ANTLR end "LEFT_PAREN"
 
-    // $ANTLR start RIGHT_PAREN
+    // $ANTLR start "RIGHT_PAREN"
     public final void mRIGHT_PAREN() throws RecognitionException {
         try {
             int _type = RIGHT_PAREN;
-            // src/main/resources/org/drools/lang/DRL.g:1896:9: ( ')' )
-            // src/main/resources/org/drools/lang/DRL.g:1896:11: ')'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1869:9: ( ')' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1869:11: ')'
             {
-            match(')'); if (failed) return ;
+            match(')'); if (state.failed) return ;
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end RIGHT_PAREN
+    // $ANTLR end "RIGHT_PAREN"
 
-    // $ANTLR start LEFT_SQUARE
+    // $ANTLR start "LEFT_SQUARE"
     public final void mLEFT_SQUARE() throws RecognitionException {
         try {
             int _type = LEFT_SQUARE;
-            // src/main/resources/org/drools/lang/DRL.g:1900:9: ( '[' )
-            // src/main/resources/org/drools/lang/DRL.g:1900:11: '['
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1873:9: ( '[' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1873:11: '['
             {
-            match('['); if (failed) return ;
+            match('['); if (state.failed) return ;
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end LEFT_SQUARE
+    // $ANTLR end "LEFT_SQUARE"
 
-    // $ANTLR start RIGHT_SQUARE
+    // $ANTLR start "RIGHT_SQUARE"
     public final void mRIGHT_SQUARE() throws RecognitionException {
         try {
             int _type = RIGHT_SQUARE;
-            // src/main/resources/org/drools/lang/DRL.g:1904:9: ( ']' )
-            // src/main/resources/org/drools/lang/DRL.g:1904:11: ']'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1877:9: ( ']' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1877:11: ']'
             {
-            match(']'); if (failed) return ;
+            match(']'); if (state.failed) return ;
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end RIGHT_SQUARE
+    // $ANTLR end "RIGHT_SQUARE"
 
-    // $ANTLR start LEFT_CURLY
+    // $ANTLR start "LEFT_CURLY"
     public final void mLEFT_CURLY() throws RecognitionException {
         try {
             int _type = LEFT_CURLY;
-            // src/main/resources/org/drools/lang/DRL.g:1908:9: ( '{' )
-            // src/main/resources/org/drools/lang/DRL.g:1908:11: '{'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1881:9: ( '{' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1881:11: '{'
             {
-            match('{'); if (failed) return ;
+            match('{'); if (state.failed) return ;
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end LEFT_CURLY
+    // $ANTLR end "LEFT_CURLY"
 
-    // $ANTLR start RIGHT_CURLY
+    // $ANTLR start "RIGHT_CURLY"
     public final void mRIGHT_CURLY() throws RecognitionException {
         try {
             int _type = RIGHT_CURLY;
-            // src/main/resources/org/drools/lang/DRL.g:1912:9: ( '}' )
-            // src/main/resources/org/drools/lang/DRL.g:1912:11: '}'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1885:9: ( '}' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1885:11: '}'
             {
-            match('}'); if (failed) return ;
+            match('}'); if (state.failed) return ;
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end RIGHT_CURLY
+    // $ANTLR end "RIGHT_CURLY"
 
-    // $ANTLR start COMMA
+    // $ANTLR start "COMMA"
     public final void mCOMMA() throws RecognitionException {
         try {
             int _type = COMMA;
-            // src/main/resources/org/drools/lang/DRL.g:1915:7: ( ',' )
-            // src/main/resources/org/drools/lang/DRL.g:1915:9: ','
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1888:7: ( ',' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1888:9: ','
             {
-            match(','); if (failed) return ;
+            match(','); if (state.failed) return ;
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end COMMA
+    // $ANTLR end "COMMA"
 
-    // $ANTLR start DOT
+    // $ANTLR start "DOT"
     public final void mDOT() throws RecognitionException {
         try {
             int _type = DOT;
-            // src/main/resources/org/drools/lang/DRL.g:1918:5: ( '.' )
-            // src/main/resources/org/drools/lang/DRL.g:1918:7: '.'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1891:5: ( '.' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1891:7: '.'
             {
-            match('.'); if (failed) return ;
+            match('.'); if (state.failed) return ;
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end DOT
+    // $ANTLR end "DOT"
 
-    // $ANTLR start DOUBLE_AMPER
+    // $ANTLR start "DOUBLE_AMPER"
     public final void mDOUBLE_AMPER() throws RecognitionException {
         try {
             int _type = DOUBLE_AMPER;
-            // src/main/resources/org/drools/lang/DRL.g:1922:2: ( '&&' )
-            // src/main/resources/org/drools/lang/DRL.g:1922:4: '&&'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1895:2: ( '&&' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1895:4: '&&'
             {
-            match("&&"); if (failed) return ;
+            match("&&"); if (state.failed) return ;
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end DOUBLE_AMPER
+    // $ANTLR end "DOUBLE_AMPER"
 
-    // $ANTLR start DOUBLE_PIPE
+    // $ANTLR start "DOUBLE_PIPE"
     public final void mDOUBLE_PIPE() throws RecognitionException {
         try {
             int _type = DOUBLE_PIPE;
-            // src/main/resources/org/drools/lang/DRL.g:1926:2: ( '||' )
-            // src/main/resources/org/drools/lang/DRL.g:1926:4: '||'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1899:2: ( '||' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1899:4: '||'
             {
-            match("||"); if (failed) return ;
+            match("||"); if (state.failed) return ;
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end DOUBLE_PIPE
+    // $ANTLR end "DOUBLE_PIPE"
 
-    // $ANTLR start SH_STYLE_SINGLE_LINE_COMMENT
+    // $ANTLR start "SH_STYLE_SINGLE_LINE_COMMENT"
     public final void mSH_STYLE_SINGLE_LINE_COMMENT() throws RecognitionException {
         try {
             int _type = SH_STYLE_SINGLE_LINE_COMMENT;
-            // src/main/resources/org/drools/lang/DRL.g:1930:2: ( '#' ( options {greedy=false; } : . )* EOL )
-            // src/main/resources/org/drools/lang/DRL.g:1930:4: '#' ( options {greedy=false; } : . )* EOL
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1903:2: ( '#' ( options {greedy=false; } : . )* EOL )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1903:4: '#' ( options {greedy=false; } : . )* EOL
             {
-            match('#'); if (failed) return ;
-            // src/main/resources/org/drools/lang/DRL.g:1930:8: ( options {greedy=false; } : . )*
+            match('#'); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1903:8: ( options {greedy=false; } : . )*
             loop17:
             do {
                 int alt17=2;
@@ -1762,16 +1839,16 @@
                 else if ( (LA17_0=='\n') ) {
                     alt17=2;
                 }
-                else if ( ((LA17_0>='\u0000' && LA17_0<='\t')||(LA17_0>='\u000B' && LA17_0<='\f')||(LA17_0>='\u000E' && LA17_0<='\uFFFE')) ) {
+                else if ( ((LA17_0>='\u0000' && LA17_0<='\t')||(LA17_0>='\u000B' && LA17_0<='\f')||(LA17_0>='\u000E' && LA17_0<='\uFFFF')) ) {
                     alt17=1;
                 }
 
 
                 switch (alt17) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1930:35: .
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1903:35: .
             	    {
-            	    matchAny(); if (failed) return ;
+            	    matchAny(); if (state.failed) return ;
 
             	    }
             	    break;
@@ -1781,30 +1858,32 @@
                 }
             } while (true);
 
-            mEOL(); if (failed) return ;
-            if ( backtracking==0 ) {
-               channel=HIDDEN; setText("//"+getText().substring(1));
+            mEOL(); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               _channel=HIDDEN; setText("//"+getText().substring(1));
             }
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end SH_STYLE_SINGLE_LINE_COMMENT
+    // $ANTLR end "SH_STYLE_SINGLE_LINE_COMMENT"
 
-    // $ANTLR start C_STYLE_SINGLE_LINE_COMMENT
+    // $ANTLR start "C_STYLE_SINGLE_LINE_COMMENT"
     public final void mC_STYLE_SINGLE_LINE_COMMENT() throws RecognitionException {
         try {
             int _type = C_STYLE_SINGLE_LINE_COMMENT;
-            // src/main/resources/org/drools/lang/DRL.g:1936:2: ( '//' ( options {greedy=false; } : . )* EOL )
-            // src/main/resources/org/drools/lang/DRL.g:1936:4: '//' ( options {greedy=false; } : . )* EOL
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1909:2: ( '//' ( options {greedy=false; } : . )* EOL )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1909:4: '//' ( options {greedy=false; } : . )* EOL
             {
-            match("//"); if (failed) return ;
+            match("//"); if (state.failed) return ;
 
-            // src/main/resources/org/drools/lang/DRL.g:1936:9: ( options {greedy=false; } : . )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1909:9: ( options {greedy=false; } : . )*
             loop18:
             do {
                 int alt18=2;
@@ -1816,16 +1895,16 @@
                 else if ( (LA18_0=='\n') ) {
                     alt18=2;
                 }
-                else if ( ((LA18_0>='\u0000' && LA18_0<='\t')||(LA18_0>='\u000B' && LA18_0<='\f')||(LA18_0>='\u000E' && LA18_0<='\uFFFE')) ) {
+                else if ( ((LA18_0>='\u0000' && LA18_0<='\t')||(LA18_0>='\u000B' && LA18_0<='\f')||(LA18_0>='\u000E' && LA18_0<='\uFFFF')) ) {
                     alt18=1;
                 }
 
 
                 switch (alt18) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1936:36: .
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1909:36: .
             	    {
-            	    matchAny(); if (failed) return ;
+            	    matchAny(); if (state.failed) return ;
 
             	    }
             	    break;
@@ -1835,30 +1914,32 @@
                 }
             } while (true);
 
-            mEOL(); if (failed) return ;
-            if ( backtracking==0 ) {
-               channel=HIDDEN; 
+            mEOL(); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               _channel=HIDDEN; 
             }
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end C_STYLE_SINGLE_LINE_COMMENT
+    // $ANTLR end "C_STYLE_SINGLE_LINE_COMMENT"
 
-    // $ANTLR start MULTI_LINE_COMMENT
+    // $ANTLR start "MULTI_LINE_COMMENT"
     public final void mMULTI_LINE_COMMENT() throws RecognitionException {
         try {
             int _type = MULTI_LINE_COMMENT;
-            // src/main/resources/org/drools/lang/DRL.g:1941:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // src/main/resources/org/drools/lang/DRL.g:1941:4: '/*' ( options {greedy=false; } : . )* '*/'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1914:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1914:4: '/*' ( options {greedy=false; } : . )* '*/'
             {
-            match("/*"); if (failed) return ;
+            match("/*"); if (state.failed) return ;
 
-            // src/main/resources/org/drools/lang/DRL.g:1941:9: ( options {greedy=false; } : . )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1914:9: ( options {greedy=false; } : . )*
             loop19:
             do {
                 int alt19=2;
@@ -1870,22 +1951,22 @@
                     if ( (LA19_1=='/') ) {
                         alt19=2;
                     }
-                    else if ( ((LA19_1>='\u0000' && LA19_1<='.')||(LA19_1>='0' && LA19_1<='\uFFFE')) ) {
+                    else if ( ((LA19_1>='\u0000' && LA19_1<='.')||(LA19_1>='0' && LA19_1<='\uFFFF')) ) {
                         alt19=1;
                     }
 
 
                 }
-                else if ( ((LA19_0>='\u0000' && LA19_0<=')')||(LA19_0>='+' && LA19_0<='\uFFFE')) ) {
+                else if ( ((LA19_0>='\u0000' && LA19_0<=')')||(LA19_0>='+' && LA19_0<='\uFFFF')) ) {
                     alt19=1;
                 }
 
 
                 switch (alt19) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1941:35: .
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1914:35: .
             	    {
-            	    matchAny(); if (failed) return ;
+            	    matchAny(); if (state.failed) return ;
 
             	    }
             	    break;
@@ -1895,352 +1976,354 @@
                 }
             } while (true);
 
-            match("*/"); if (failed) return ;
+            match("*/"); if (state.failed) return ;
 
-            if ( backtracking==0 ) {
-               channel=HIDDEN; 
+            if ( state.backtracking==0 ) {
+               _channel=HIDDEN; 
             }
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end MULTI_LINE_COMMENT
+    // $ANTLR end "MULTI_LINE_COMMENT"
 
-    // $ANTLR start MISC
+    // $ANTLR start "MISC"
     public final void mMISC() throws RecognitionException {
         try {
             int _type = MISC;
-            // src/main/resources/org/drools/lang/DRL.g:1945:7: ( '!' | '$' | '%' | '^' | '*' | '_' | '-' | '+' | '?' | '/' | '\\'' | '\\\\' | '|' | '&' )
-            // src/main/resources/org/drools/lang/DRL.g:
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1918:7: ( '!' | '$' | '%' | '^' | '*' | '_' | '-' | '+' | '?' | '/' | '\\'' | '\\\\' | '|' | '&' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/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.consume();
-            failed=false;
+            state.failed=false;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
-                MismatchedSetException mse =
-                    new MismatchedSetException(null,input);
-                recover(mse);    throw mse;
-            }
+                if (state.backtracking>0) {state.failed=true; return ;}
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end MISC
+    // $ANTLR end "MISC"
 
     public void mTokens() throws RecognitionException {
-        // src/main/resources/org/drools/lang/DRL.g:1:8: ( WS | INT | FLOAT | STRING | BOOL | ACCUMULATE | COLLECT | END | FROM | INIT | NULL | OVER | THEN | WHEN | GRAVE_ACCENT | TILDE | AT | EQUALS | SEMICOLON | DOT_STAR | COLON | EQUAL | NOT_EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | ARROW | ID | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | COMMA | DOT | DOUBLE_AMPER | DOUBLE_PIPE | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | MULTI_LINE_COMMENT | MISC )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:8: ( WS | INT | FLOAT | STRING | BOOL | ACCUMULATE | COLLECT | END | FROM | INIT | NULL | OVER | THEN | WHEN | GRAVE_ACCENT | TILDE | AT | EQUALS | SEMICOLON | DOT_STAR | COLON | EQUAL | NOT_EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | ARROW | ID | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | COMMA | DOT | DOUBLE_AMPER | DOUBLE_PIPE | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | MULTI_LINE_COMMENT | MISC )
         int alt20=43;
         alt20 = dfa20.predict(input);
         switch (alt20) {
             case 1 :
-                // src/main/resources/org/drools/lang/DRL.g:1:10: WS
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:10: WS
                 {
-                mWS(); if (failed) return ;
+                mWS(); if (state.failed) return ;
 
                 }
                 break;
             case 2 :
-                // src/main/resources/org/drools/lang/DRL.g:1:13: INT
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:13: INT
                 {
-                mINT(); if (failed) return ;
+                mINT(); if (state.failed) return ;
 
                 }
                 break;
             case 3 :
-                // src/main/resources/org/drools/lang/DRL.g:1:17: FLOAT
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:17: FLOAT
                 {
-                mFLOAT(); if (failed) return ;
+                mFLOAT(); if (state.failed) return ;
 
                 }
                 break;
             case 4 :
-                // src/main/resources/org/drools/lang/DRL.g:1:23: STRING
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:23: STRING
                 {
-                mSTRING(); if (failed) return ;
+                mSTRING(); if (state.failed) return ;
 
                 }
                 break;
             case 5 :
-                // src/main/resources/org/drools/lang/DRL.g:1:30: BOOL
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:30: BOOL
                 {
-                mBOOL(); if (failed) return ;
+                mBOOL(); if (state.failed) return ;
 
                 }
                 break;
             case 6 :
-                // src/main/resources/org/drools/lang/DRL.g:1:35: ACCUMULATE
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:35: ACCUMULATE
                 {
-                mACCUMULATE(); if (failed) return ;
+                mACCUMULATE(); if (state.failed) return ;
 
                 }
                 break;
             case 7 :
-                // src/main/resources/org/drools/lang/DRL.g:1:46: COLLECT
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:46: COLLECT
                 {
-                mCOLLECT(); if (failed) return ;
+                mCOLLECT(); if (state.failed) return ;
 
                 }
                 break;
             case 8 :
-                // src/main/resources/org/drools/lang/DRL.g:1:54: END
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:54: END
                 {
-                mEND(); if (failed) return ;
+                mEND(); if (state.failed) return ;
 
                 }
                 break;
             case 9 :
-                // src/main/resources/org/drools/lang/DRL.g:1:58: FROM
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:58: FROM
                 {
-                mFROM(); if (failed) return ;
+                mFROM(); if (state.failed) return ;
 
                 }
                 break;
             case 10 :
-                // src/main/resources/org/drools/lang/DRL.g:1:63: INIT
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:63: INIT
                 {
-                mINIT(); if (failed) return ;
+                mINIT(); if (state.failed) return ;
 
                 }
                 break;
             case 11 :
-                // src/main/resources/org/drools/lang/DRL.g:1:68: NULL
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:68: NULL
                 {
-                mNULL(); if (failed) return ;
+                mNULL(); if (state.failed) return ;
 
                 }
                 break;
             case 12 :
-                // src/main/resources/org/drools/lang/DRL.g:1:73: OVER
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:73: OVER
                 {
-                mOVER(); if (failed) return ;
+                mOVER(); if (state.failed) return ;
 
                 }
                 break;
             case 13 :
-                // src/main/resources/org/drools/lang/DRL.g:1:78: THEN
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:78: THEN
                 {
-                mTHEN(); if (failed) return ;
+                mTHEN(); if (state.failed) return ;
 
                 }
                 break;
             case 14 :
-                // src/main/resources/org/drools/lang/DRL.g:1:83: WHEN
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:83: WHEN
                 {
-                mWHEN(); if (failed) return ;
+                mWHEN(); if (state.failed) return ;
 
                 }
                 break;
             case 15 :
-                // src/main/resources/org/drools/lang/DRL.g:1:88: GRAVE_ACCENT
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:88: GRAVE_ACCENT
                 {
-                mGRAVE_ACCENT(); if (failed) return ;
+                mGRAVE_ACCENT(); if (state.failed) return ;
 
                 }
                 break;
             case 16 :
-                // src/main/resources/org/drools/lang/DRL.g:1:101: TILDE
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:101: TILDE
                 {
-                mTILDE(); if (failed) return ;
+                mTILDE(); if (state.failed) return ;
 
                 }
                 break;
             case 17 :
-                // src/main/resources/org/drools/lang/DRL.g:1:107: AT
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:107: AT
                 {
-                mAT(); if (failed) return ;
+                mAT(); if (state.failed) return ;
 
                 }
                 break;
             case 18 :
-                // src/main/resources/org/drools/lang/DRL.g:1:110: EQUALS
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:110: EQUALS
                 {
-                mEQUALS(); if (failed) return ;
+                mEQUALS(); if (state.failed) return ;
 
                 }
                 break;
             case 19 :
-                // src/main/resources/org/drools/lang/DRL.g:1:117: SEMICOLON
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:117: SEMICOLON
                 {
-                mSEMICOLON(); if (failed) return ;
+                mSEMICOLON(); if (state.failed) return ;
 
                 }
                 break;
             case 20 :
-                // src/main/resources/org/drools/lang/DRL.g:1:127: DOT_STAR
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:127: DOT_STAR
                 {
-                mDOT_STAR(); if (failed) return ;
+                mDOT_STAR(); if (state.failed) return ;
 
                 }
                 break;
             case 21 :
-                // src/main/resources/org/drools/lang/DRL.g:1:136: COLON
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:136: COLON
                 {
-                mCOLON(); if (failed) return ;
+                mCOLON(); if (state.failed) return ;
 
                 }
                 break;
             case 22 :
-                // src/main/resources/org/drools/lang/DRL.g:1:142: EQUAL
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:142: EQUAL
                 {
-                mEQUAL(); if (failed) return ;
+                mEQUAL(); if (state.failed) return ;
 
                 }
                 break;
             case 23 :
-                // src/main/resources/org/drools/lang/DRL.g:1:148: NOT_EQUAL
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:148: NOT_EQUAL
                 {
-                mNOT_EQUAL(); if (failed) return ;
+                mNOT_EQUAL(); if (state.failed) return ;
 
                 }
                 break;
             case 24 :
-                // src/main/resources/org/drools/lang/DRL.g:1:158: GREATER
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:158: GREATER
                 {
-                mGREATER(); if (failed) return ;
+                mGREATER(); if (state.failed) return ;
 
                 }
                 break;
             case 25 :
-                // src/main/resources/org/drools/lang/DRL.g:1:166: GREATER_EQUAL
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:166: GREATER_EQUAL
                 {
-                mGREATER_EQUAL(); if (failed) return ;
+                mGREATER_EQUAL(); if (state.failed) return ;
 
                 }
                 break;
             case 26 :
-                // src/main/resources/org/drools/lang/DRL.g:1:180: LESS
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:180: LESS
                 {
-                mLESS(); if (failed) return ;
+                mLESS(); if (state.failed) return ;
 
                 }
                 break;
             case 27 :
-                // src/main/resources/org/drools/lang/DRL.g:1:185: LESS_EQUAL
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:185: LESS_EQUAL
                 {
-                mLESS_EQUAL(); if (failed) return ;
+                mLESS_EQUAL(); if (state.failed) return ;
 
                 }
                 break;
             case 28 :
-                // src/main/resources/org/drools/lang/DRL.g:1:196: ARROW
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:196: ARROW
                 {
-                mARROW(); if (failed) return ;
+                mARROW(); if (state.failed) return ;
 
                 }
                 break;
             case 29 :
-                // src/main/resources/org/drools/lang/DRL.g:1:202: ID
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:202: ID
                 {
-                mID(); if (failed) return ;
+                mID(); if (state.failed) return ;
 
                 }
                 break;
             case 30 :
-                // src/main/resources/org/drools/lang/DRL.g:1:205: LEFT_PAREN
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:205: LEFT_PAREN
                 {
-                mLEFT_PAREN(); if (failed) return ;
+                mLEFT_PAREN(); if (state.failed) return ;
 
                 }
                 break;
             case 31 :
-                // src/main/resources/org/drools/lang/DRL.g:1:216: RIGHT_PAREN
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:216: RIGHT_PAREN
                 {
-                mRIGHT_PAREN(); if (failed) return ;
+                mRIGHT_PAREN(); if (state.failed) return ;
 
                 }
                 break;
             case 32 :
-                // src/main/resources/org/drools/lang/DRL.g:1:228: LEFT_SQUARE
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:228: LEFT_SQUARE
                 {
-                mLEFT_SQUARE(); if (failed) return ;
+                mLEFT_SQUARE(); if (state.failed) return ;
 
                 }
                 break;
             case 33 :
-                // src/main/resources/org/drools/lang/DRL.g:1:240: RIGHT_SQUARE
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:240: RIGHT_SQUARE
                 {
-                mRIGHT_SQUARE(); if (failed) return ;
+                mRIGHT_SQUARE(); if (state.failed) return ;
 
                 }
                 break;
             case 34 :
-                // src/main/resources/org/drools/lang/DRL.g:1:253: LEFT_CURLY
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:253: LEFT_CURLY
                 {
-                mLEFT_CURLY(); if (failed) return ;
+                mLEFT_CURLY(); if (state.failed) return ;
 
                 }
                 break;
             case 35 :
-                // src/main/resources/org/drools/lang/DRL.g:1:264: RIGHT_CURLY
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:264: RIGHT_CURLY
                 {
-                mRIGHT_CURLY(); if (failed) return ;
+                mRIGHT_CURLY(); if (state.failed) return ;
 
                 }
                 break;
             case 36 :
-                // src/main/resources/org/drools/lang/DRL.g:1:276: COMMA
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:276: COMMA
                 {
-                mCOMMA(); if (failed) return ;
+                mCOMMA(); if (state.failed) return ;
 
                 }
                 break;
             case 37 :
-                // src/main/resources/org/drools/lang/DRL.g:1:282: DOT
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:282: DOT
                 {
-                mDOT(); if (failed) return ;
+                mDOT(); if (state.failed) return ;
 
                 }
                 break;
             case 38 :
-                // src/main/resources/org/drools/lang/DRL.g:1:286: DOUBLE_AMPER
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:286: DOUBLE_AMPER
                 {
-                mDOUBLE_AMPER(); if (failed) return ;
+                mDOUBLE_AMPER(); if (state.failed) return ;
 
                 }
                 break;
             case 39 :
-                // src/main/resources/org/drools/lang/DRL.g:1:299: DOUBLE_PIPE
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:299: DOUBLE_PIPE
                 {
-                mDOUBLE_PIPE(); if (failed) return ;
+                mDOUBLE_PIPE(); if (state.failed) return ;
 
                 }
                 break;
             case 40 :
-                // src/main/resources/org/drools/lang/DRL.g:1:311: SH_STYLE_SINGLE_LINE_COMMENT
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:311: SH_STYLE_SINGLE_LINE_COMMENT
                 {
-                mSH_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
+                mSH_STYLE_SINGLE_LINE_COMMENT(); if (state.failed) return ;
 
                 }
                 break;
             case 41 :
-                // src/main/resources/org/drools/lang/DRL.g:1:340: C_STYLE_SINGLE_LINE_COMMENT
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:340: C_STYLE_SINGLE_LINE_COMMENT
                 {
-                mC_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
+                mC_STYLE_SINGLE_LINE_COMMENT(); if (state.failed) return ;
 
                 }
                 break;
             case 42 :
-                // src/main/resources/org/drools/lang/DRL.g:1:368: MULTI_LINE_COMMENT
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:368: MULTI_LINE_COMMENT
                 {
-                mMULTI_LINE_COMMENT(); if (failed) return ;
+                mMULTI_LINE_COMMENT(); if (state.failed) return ;
 
                 }
                 break;
             case 43 :
-                // src/main/resources/org/drools/lang/DRL.g:1:387: MISC
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:387: MISC
                 {
-                mMISC(); if (failed) return ;
+                mMISC(); if (state.failed) return ;
 
                 }
                 break;
@@ -2249,68 +2332,69 @@
 
     }
 
-    // $ANTLR start synpred1
-    public final void synpred1_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/DRL.g:1741:14: ( '\\r\\n' )
-        // src/main/resources/org/drools/lang/DRL.g:1741:16: '\\r\\n'
+    // $ANTLR start synpred1_DRL
+    public final void synpred1_DRL_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1714:14: ( '\\r\\n' )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1714:16: '\\r\\n'
         {
-        match("\r\n"); if (failed) return ;
+        match("\r\n"); if (state.failed) return ;
 
 
         }
     }
-    // $ANTLR end synpred1
+    // $ANTLR end synpred1_DRL
 
-    public final boolean synpred1() {
-        backtracking++;
+    public final boolean synpred1_DRL() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred1_fragment(); // can never throw exception
+            synpred1_DRL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
 
 
     protected DFA20 dfa20 = new DFA20(this);
     static final String DFA20_eotS =
-        "\2\uffff\1\47\1\52\1\uffff\1\47\11\46\3\uffff\1\67\1\uffff\1\71"+
+        "\2\uffff\1\47\1\51\1\uffff\1\47\11\46\3\uffff\1\67\1\uffff\1\71"+
         "\1\uffff\1\47\1\74\1\76\1\uffff\1\47\7\uffff\2\47\1\uffff\1\47\5"+
-        "\uffff\13\46\15\uffff\6\46\1\124\4\46\1\131\1\132\1\133\3\46\1\uffff"+
-        "\1\137\1\140\1\141\1\142\3\uffff\1\131\2\46\4\uffff\3\46\1\150\1"+
-        "\46\1\uffff\1\46\1\153\1\uffff";
+        "\uffff\13\46\15\uffff\6\46\1\124\4\46\1\131\1\132\1\46\1\134\2\46"+
+        "\1\uffff\1\137\1\140\1\141\1\142\2\uffff\1\131\1\uffff\2\46\4\uffff"+
+        "\3\46\1\150\1\46\1\uffff\1\46\1\153\1\uffff";
     static final String DFA20_eofS =
         "\154\uffff";
     static final String DFA20_minS =
         "\1\11\1\uffff\1\60\1\56\1\uffff\1\0\1\150\1\141\1\143\1\157\2\156"+
         "\1\165\1\166\1\150\3\uffff\1\75\1\uffff\1\52\1\uffff\3\75\1\uffff"+
-        "\1\44\7\uffff\1\46\1\174\1\uffff\1\52\5\uffff\1\165\1\145\1\157"+
-        "\1\154\1\143\1\154\1\144\1\151\1\154\2\145\15\uffff\1\145\1\156"+
-        "\1\155\1\163\1\165\1\154\1\60\1\164\1\154\1\162\1\156\3\60\1\145"+
-        "\1\155\1\145\1\uffff\4\60\3\uffff\1\60\1\165\1\143\4\uffff\1\154"+
-        "\1\164\1\141\1\60\1\164\1\uffff\1\145\1\60\1\uffff";
+        "\1\44\7\uffff\1\46\1\174\1\uffff\1\52\5\uffff\1\165\1\145\1\154"+
+        "\1\157\1\143\1\154\1\144\1\151\1\154\2\145\15\uffff\1\145\1\156"+
+        "\1\163\1\155\1\165\1\154\1\60\1\164\1\154\1\162\1\156\2\60\1\145"+
+        "\1\60\1\155\1\145\1\uffff\4\60\2\uffff\1\60\1\uffff\1\165\1\143"+
+        "\4\uffff\1\154\1\164\1\141\1\60\1\164\1\uffff\1\145\1\60\1\uffff";
     static final String DFA20_maxS =
-        "\1\u00ff\1\uffff\1\76\1\71\1\uffff\1\ufffe\2\162\1\143\1\157\2\156"+
+        "\1\u00ff\1\uffff\1\76\1\71\1\uffff\1\uffff\2\162\1\143\1\157\2\156"+
         "\1\165\1\166\1\150\3\uffff\1\75\1\uffff\1\52\1\uffff\3\75\1\uffff"+
-        "\1\u00ff\7\uffff\1\46\1\174\1\uffff\1\57\5\uffff\1\165\1\145\1\157"+
-        "\1\154\1\143\1\154\1\144\1\151\1\154\2\145\15\uffff\1\145\1\156"+
-        "\1\155\1\163\1\165\1\154\1\u00ff\1\164\1\154\1\162\1\156\3\u00ff"+
-        "\1\145\1\155\1\145\1\uffff\4\u00ff\3\uffff\1\u00ff\1\165\1\143\4"+
-        "\uffff\1\154\1\164\1\141\1\u00ff\1\164\1\uffff\1\145\1\u00ff\1\uffff";
+        "\1\u00ff\7\uffff\1\46\1\174\1\uffff\1\57\5\uffff\1\165\1\145\1\154"+
+        "\1\157\1\143\1\154\1\144\1\151\1\154\2\145\15\uffff\1\145\1\156"+
+        "\1\163\1\155\1\165\1\154\1\u00ff\1\164\1\154\1\162\1\156\2\u00ff"+
+        "\1\145\1\u00ff\1\155\1\145\1\uffff\4\u00ff\2\uffff\1\u00ff\1\uffff"+
+        "\1\165\1\143\4\uffff\1\154\1\164\1\141\1\u00ff\1\164\1\uffff\1\145"+
+        "\1\u00ff\1\uffff";
     static final String DFA20_acceptS =
         "\1\uffff\1\1\2\uffff\1\4\12\uffff\1\17\1\20\1\21\1\uffff\1\23\1"+
         "\uffff\1\25\3\uffff\1\35\1\uffff\1\36\1\37\1\40\1\41\1\42\1\43\1"+
-        "\44\2\uffff\1\50\1\uffff\1\35\1\53\1\34\1\3\1\2\13\uffff\1\26\1"+
-        "\22\1\24\1\45\1\27\1\31\1\30\1\33\1\32\1\46\1\47\1\52\1\51\21\uffff"+
-        "\1\10\4\uffff\1\5\1\15\1\11\3\uffff\1\12\1\13\1\14\1\16\5\uffff"+
-        "\1\7\2\uffff\1\6";
+        "\44\2\uffff\1\50\1\uffff\1\35\1\53\1\34\1\2\1\3\13\uffff\1\26\1"+
+        "\22\1\24\1\45\1\27\1\31\1\30\1\33\1\32\1\46\1\47\1\51\1\52\21\uffff"+
+        "\1\10\4\uffff\1\5\1\15\1\uffff\1\11\2\uffff\1\12\1\13\1\14\1\16"+
+        "\5\uffff\1\7\2\uffff\1\6";
     static final String DFA20_specialS =
-        "\154\uffff}>";
+        "\5\uffff\1\0\146\uffff}>";
     static final String[] DFA20_transitionS = {
             "\2\1\1\uffff\2\1\22\uffff\1\1\1\26\1\4\1\44\1\31\1\32\1\42\1"+
             "\5\1\33\1\34\2\47\1\41\1\2\1\24\1\45\12\3\1\25\1\23\1\30\1\22"+
@@ -2319,11 +2403,11 @@
             "\16\3\46\1\37\1\43\1\40\1\20\101\uffff\100\46",
             "",
             "\12\3\4\uffff\1\50",
-            "\1\51\1\uffff\12\3",
+            "\1\52\1\uffff\12\3",
             "",
-            "\uffff\4",
+            "\0\4",
             "\1\54\11\uffff\1\53",
-            "\1\56\20\uffff\1\55",
+            "\1\55\20\uffff\1\56",
             "\1\57",
             "\1\60",
             "\1\61",
@@ -2354,7 +2438,7 @@
             "\1\77",
             "\1\100",
             "",
-            "\1\101\4\uffff\1\102",
+            "\1\102\4\uffff\1\101",
             "",
             "",
             "",
@@ -2400,9 +2484,9 @@
             "\46",
             "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46\105\uffff\100"+
             "\46",
+            "\1\133",
             "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46\105\uffff\100"+
             "\46",
-            "\1\134",
             "\1\135",
             "\1\136",
             "",
@@ -2416,9 +2500,9 @@
             "\46",
             "",
             "",
-            "",
             "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46\105\uffff\100"+
             "\46",
+            "",
             "\1\143",
             "\1\144",
             "",
@@ -2470,7 +2554,28 @@
         public String getDescription() {
             return "1:1: Tokens : ( WS | INT | FLOAT | STRING | BOOL | ACCUMULATE | COLLECT | END | FROM | INIT | NULL | OVER | THEN | WHEN | GRAVE_ACCENT | TILDE | AT | EQUALS | SEMICOLON | DOT_STAR | COLON | EQUAL | NOT_EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | ARROW | ID | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | COMMA | DOT | DOUBLE_AMPER | DOUBLE_PIPE | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | MULTI_LINE_COMMENT | MISC );";
         }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            IntStream input = _input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA20_5 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA20_5>='\u0000' && LA20_5<='\uFFFF')) ) {s = 4;}
+
+                        else s = 39;
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 20, _s, input);
+            error(nvae);
+            throw nvae;
+        }
     }
  
 
-}
+}
\ No newline at end of file

Modified: labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
===================================================================
--- labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2008-11-13 00:09:49 UTC (rev 23848)
+++ labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2008-11-13 03:06:09 UTC (rev 23849)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 src/main/resources/org/drools/lang/DRL.g 2008-11-11 20:36:17
+// $ANTLR 3.1.1 /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2008-11-13 00:52:50
 
 	package org.drools.lang;
 	
@@ -150,10 +150,17 @@
     public static final int C_STYLE_SINGLE_LINE_COMMENT=130;
     public static final int VK_DECLARE=64;
 
+    // delegates
+    // delegators
+
+
         public DRLParser(TokenStream input) {
-            super(input);
-            ruleMemo = new HashMap[145+1];
-         }
+            this(input, new RecognizerSharedState());
+        }
+        public DRLParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
         
     protected TreeAdaptor adaptor = new CommonTreeAdaptor();
 
@@ -164,10 +171,10 @@
         return adaptor;
     }
 
-    public String[] getTokenNames() { return tokenNames; }
-    public String getGrammarFileName() { return "src/main/resources/org/drools/lang/DRL.g"; }
+    public String[] getTokenNames() { return DRLParser.tokenNames; }
+    public String getGrammarFileName() { return "/Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g"; }
 
-    
+
     	private Stack<Map<DroolsParaphraseTypes, String>> paraphrases = new Stack<Map<DroolsParaphraseTypes, String>>();
     	private List<DroolsParserException> errors = new ArrayList<DroolsParserException>();
     	private DroolsParserExceptionFactory errorMessageFactory = new DroolsParserExceptionFactory(tokenNames, paraphrases);
@@ -175,19 +182,19 @@
     	private boolean lookaheadTest = false;
     	private LinkedList<DroolsSentence> editorInterface = null;
     	private boolean isEditorInterfaceEnabled = false;
-    
+
     	public LinkedList<DroolsSentence> getEditorInterface(){
     		return editorInterface;
     	}
-    
+
     	public void enableEditorInterface(){
     		isEditorInterfaceEnabled = true;
     	}
-    
+
     	public void disableEditorInterface(){
     		isEditorInterfaceEnabled = false;
     	}
-    
+
     	private void beginSentence(DroolsSentenceType sentenceType){
     		if (isEditorInterfaceEnabled) {
     			if (null == editorInterface) {
@@ -198,11 +205,11 @@
     			editorInterface.add(sentence);
     		}
     	}
-    
+
     	private DroolsSentence getActiveSentence(){
     		return editorInterface.getLast();
     	}
-    
+
     	private void emit(List tokens, DroolsEditorType editorType){
     		if (isEditorInterfaceEnabled && tokens != null) {		
     			for (Object activeObject : tokens){
@@ -210,14 +217,14 @@
     			}
     		}
     	}
-    
+
     	private void emit(Token token, DroolsEditorType editorType){
     		if (isEditorInterfaceEnabled && token != null) {
     			((DroolsToken)token).setEditorType(editorType);
     			getActiveSentence().addContent((DroolsToken) token);
     		}
     	}
-    
+
     	private void emit(boolean forceEmit, int activeContext){
     		if (isEditorInterfaceEnabled) {
     				getActiveSentence().addContent(activeContext);
@@ -229,7 +236,7 @@
     			emit(false, activeContext);
     		}
     	}
-    
+
     	private DroolsToken getLastTokenOnList(LinkedList list){
     		DroolsToken lastToken = null;
     		for (Object object : list) {
@@ -239,7 +246,7 @@
     		}
     		return lastToken;
     	}
-    
+
     	private int getLastIntegerValue(LinkedList list) {
     		int lastIntergerValue = -1;
     		for (Object object : list) {
@@ -260,7 +267,7 @@
     	
     		return input.LT(LTNumber).getText();
     	}
-    
+
     	private boolean validateLT(int LTNumber, String text) {
     		String text2Validate = retrieveLT( LTNumber );
     		return text2Validate == null ? false : text2Validate.equalsIgnoreCase(text);
@@ -295,11 +302,11 @@
     		}
     		return false;
     	}
-    
+
     	private boolean validateRestr() {
     		int lookahead = 2;
     		int countParen = 1;
-    
+
     		while (true) {
     			if (input.LA(lookahead) == COMMA) {
     				break;
@@ -328,7 +335,7 @@
     			input.seek(activeIndex);
     		}
     		lookaheadTest = false;
-    
+
     		return returnValue;
     	}
     	
@@ -340,11 +347,13 @@
     	public void reportError(RecognitionException ex) {
     		// if we've already reported an error and have not matched a token
     		// yet successfully, don't report any errors.
-    		if (errorRecovery) {
+    		if ( state.errorRecovery ) {
+    			//System.err.print("[SPURIOUS] ");
     			return;
     		}
-    		errorRecovery = true;
-    	
+    		state.syntaxErrors++; // don't count spurious
+    		state.errorRecovery = true;
+
     		errors.add(errorMessageFactory.createDroolsException(ex));
     	}
     	
@@ -368,7 +377,7 @@
     	public boolean hasErrors() {
     		return !errors.isEmpty();
     	}
-    
+
     	/**
     	 * Method that adds a paraphrase type into paraphrases stack.
     	 * 
@@ -380,7 +389,7 @@
     		activeMap.put(type, "");
     		paraphrases.push(activeMap);
     	}
-    
+
     	/**
     	 * Method that sets paraphrase value for a type into paraphrases stack.
     	 * 
@@ -392,7 +401,7 @@
     	private void setParaphrasesValue(DroolsParaphraseTypes type, String value) {
     		paraphrases.peek().put(type, value);
     	}
-    
+
     	/**
     	 * Helper method that creates a string from a token list.
     	 * 
@@ -416,17 +425,12 @@
     	 * This methos is a copy from ANTLR base class (BaseRecognizer). 
     	 * We had to copy it just to remove a System.err.println() 
     	 * 
-    	 */
     	public void recoverFromMismatchedToken(IntStream input,
     			RecognitionException e, int ttype, BitSet follow)
     			throws RecognitionException {
     		// if next token is what we are looking for then "delete" this token
     		if (input.LA(2) == ttype) {
     			reportError(e);
-    			/*
-    			 * System.err.println("recoverFromMismatchedToken deleting
-    			 * "+input.LT(1)+ " since "+input.LT(2)+" is what we want");
-    			 */
     			beginResync();
     			input.consume(); // simply delete extra token
     			endResync();
@@ -437,6 +441,7 @@
     			throw e;
     		}
     	}
+    	 */
     	
     	/** Overrided this method to not output mesages */
     	public void emitErrorMessage(String msg) {
@@ -448,18 +453,18 @@
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start compilation_unit
-    // src/main/resources/org/drools/lang/DRL.g:410:1: compilation_unit : ( package_statement )? ( statement )* EOF -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) ;
-    public final compilation_unit_return compilation_unit() throws RecognitionException {
-        compilation_unit_return retval = new compilation_unit_return();
+    // $ANTLR start "compilation_unit"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:408:1: compilation_unit : ( package_statement )? ( statement )* EOF -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) ;
+    public final DRLParser.compilation_unit_return compilation_unit() throws RecognitionException {
+        DRLParser.compilation_unit_return retval = new DRLParser.compilation_unit_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token EOF3=null;
-        package_statement_return package_statement1 = null;
+        DRLParser.package_statement_return package_statement1 = null;
 
-        statement_return statement2 = null;
+        DRLParser.statement_return statement2 = null;
 
 
         Object EOF3_tree=null;
@@ -467,60 +472,50 @@
         RewriteRuleSubtreeStream stream_package_statement=new RewriteRuleSubtreeStream(adaptor,"rule package_statement");
         RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:411:2: ( ( package_statement )? ( statement )* EOF -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) )
-            // src/main/resources/org/drools/lang/DRL.g:411:4: ( package_statement )? ( statement )* EOF
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:409:2: ( ( package_statement )? ( statement )* EOF -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:409:4: ( package_statement )? ( statement )* EOF
             {
-            // src/main/resources/org/drools/lang/DRL.g:411:4: ( package_statement )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:409:4: ( package_statement )?
             int alt1=2;
-            int LA1_0 = input.LA(1);
-
-            if ( (LA1_0==ID) ) {
-                int LA1_1 = input.LA(2);
-
-                if ( (LA1_1==ID) ) {
-                    int LA1_4 = input.LA(3);
-
-                    if ( ((validateIdentifierKey(DroolsSoftKeywords.PACKAGE))) ) {
-                        alt1=1;
-                    }
-                }
-            }
+            alt1 = dfa1.predict(input);
             switch (alt1) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:411:4: package_statement
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:409:4: package_statement
                     {
                     pushFollow(FOLLOW_package_statement_in_compilation_unit396);
                     package_statement1=package_statement();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_package_statement.add(package_statement1.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_package_statement.add(package_statement1.getTree());
+
                     }
                     break;
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:412:3: ( statement )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:410:3: ( statement )*
             loop2:
             do {
                 int alt2=2;
                 int LA2_0 = input.LA(1);
 
-                if ( (LA2_0==ID) ) {
+                if ( (LA2_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.RULE)))||((validateIdentifierKey(DroolsSoftKeywords.!
 DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))))) {
                     alt2=1;
                 }
 
 
                 switch (alt2) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:412:3: statement
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:410:3: statement
             	    {
             	    pushFollow(FOLLOW_statement_in_compilation_unit401);
             	    statement2=statement();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_statement.add(statement2.getTree());
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_statement.add(statement2.getTree());
+
             	    }
             	    break;
 
@@ -529,38 +524,38 @@
                 }
             } while (true);
 
-            EOF3=(Token)input.LT(1);
-            match(input,EOF,FOLLOW_EOF_in_compilation_unit407); if (failed) return retval;
-            if ( backtracking==0 ) stream_EOF.add(EOF3);
+            EOF3=(Token)match(input,EOF,FOLLOW_EOF_in_compilation_unit407); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_EOF.add(EOF3);
 
 
+
             // AST REWRITE
-            // elements: package_statement, statement
+            // elements: statement, package_statement
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 414:3: -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
+            // 412:3: -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
             {
-                // src/main/resources/org/drools/lang/DRL.g:414:6: ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:412:6: ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_COMPILATION_UNIT, "VT_COMPILATION_UNIT"), root_1);
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_COMPILATION_UNIT, "VT_COMPILATION_UNIT"), root_1);
 
-                // src/main/resources/org/drools/lang/DRL.g:414:28: ( package_statement )?
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:412:28: ( package_statement )?
                 if ( stream_package_statement.hasNext() ) {
-                    adaptor.addChild(root_1, stream_package_statement.next());
+                    adaptor.addChild(root_1, stream_package_statement.nextTree());
 
                 }
                 stream_package_statement.reset();
-                // src/main/resources/org/drools/lang/DRL.g:414:47: ( statement )*
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:412:47: ( statement )*
                 while ( stream_statement.hasNext() ) {
-                    adaptor.addChild(root_1, stream_statement.next());
+                    adaptor.addChild(root_1, stream_statement.nextTree());
 
                 }
                 stream_statement.reset();
@@ -570,28 +565,28 @@
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch ( RecognitionException e ) {
-            
+
             		reportError( e );
             	
         }
         catch ( RewriteEmptyStreamException e ) {
-            
+
             	
         }
         finally {
-            
+
             	if (isEditorInterfaceEnabled && retval.tree == null) {
             		retval.tree = root_0;
             		root_0 = (Object) adaptor.nil();
@@ -599,10 +594,10 @@
             		root_1 = (Object) adaptor.becomeRoot(adaptor.create(
             				VT_COMPILATION_UNIT, "VT_COMPILATION_UNIT"), root_1);
             		if (stream_package_statement.hasNext()) {
-            			adaptor.addChild(root_1, stream_package_statement.next());
+            			adaptor.addChild(root_1, stream_package_statement.nextTree());
             		}
             		while (stream_statement.hasNext()) {
-            			adaptor.addChild(root_1, stream_statement.next());
+            			adaptor.addChild(root_1, stream_statement.nextTree());
             		}
             		adaptor.addChild(root_0, root_1);
             		retval.stop = input.LT(-1);
@@ -623,50 +618,49 @@
         }
         return retval;
     }
-    // $ANTLR end compilation_unit
+    // $ANTLR end "compilation_unit"
 
     public static class package_statement_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start package_statement
-    // src/main/resources/org/drools/lang/DRL.g:451:1: package_statement : package_key package_id ( SEMICOLON )? -> ^( package_key package_id ) ;
-    public final package_statement_return package_statement() throws RecognitionException {
-        package_statement_return retval = new package_statement_return();
+    // $ANTLR start "package_statement"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:449:1: package_statement : package_key package_id ( SEMICOLON )? -> ^( package_key package_id ) ;
+    public final DRLParser.package_statement_return package_statement() throws RecognitionException {
+        DRLParser.package_statement_return retval = new DRLParser.package_statement_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token SEMICOLON6=null;
-        package_key_return package_key4 = null;
+        DRLParser.package_key_return package_key4 = null;
 
-        package_id_return package_id5 = null;
+        DRLParser.package_id_return package_id5 = null;
 
 
         Object SEMICOLON6_tree=null;
         RewriteRuleTokenStream stream_SEMICOLON=new RewriteRuleTokenStream(adaptor,"token SEMICOLON");
         RewriteRuleSubtreeStream stream_package_key=new RewriteRuleSubtreeStream(adaptor,"rule package_key");
         RewriteRuleSubtreeStream stream_package_id=new RewriteRuleSubtreeStream(adaptor,"rule package_id");
-         pushParaphrases(DroolsParaphraseTypes.PACKAGE); 
+         pushParaphrases(DroolsParaphraseTypes.PACKAGE); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.PACKAGE); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:454:2: ( package_key package_id ( SEMICOLON )? -> ^( package_key package_id ) )
-            // src/main/resources/org/drools/lang/DRL.g:455:2: package_key package_id ( SEMICOLON )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:452:2: ( package_key package_id ( SEMICOLON )? -> ^( package_key package_id ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:452:4: package_key package_id ( SEMICOLON )?
             {
-            if ( backtracking==0 ) {
-              	beginSentence(DroolsSentenceType.PACKAGE);	
-            }
-            pushFollow(FOLLOW_package_key_in_package_statement467);
+            pushFollow(FOLLOW_package_key_in_package_statement462);
             package_key4=package_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_package_key.add(package_key4.getTree());
-            pushFollow(FOLLOW_package_id_in_package_statement471);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_package_key.add(package_key4.getTree());
+            pushFollow(FOLLOW_package_id_in_package_statement466);
             package_id5=package_id();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_package_id.add(package_id5.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:457:14: ( SEMICOLON )?
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_package_id.add(package_id5.getTree());
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:453:14: ( SEMICOLON )?
             int alt3=2;
             int LA3_0 = input.LA(1);
 
@@ -675,11 +669,10 @@
             }
             switch (alt3) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:457:14: SEMICOLON
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:453:14: SEMICOLON
                     {
-                    SEMICOLON6=(Token)input.LT(1);
-                    match(input,SEMICOLON,FOLLOW_SEMICOLON_in_package_statement473); if (failed) return retval;
-                    if ( backtracking==0 ) stream_SEMICOLON.add(SEMICOLON6);
+                    SEMICOLON6=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_package_statement468); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON6);
 
 
                     }
@@ -687,68 +680,71 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(SEMICOLON6, DroolsEditorType.SYMBOL);	
             }
 
+
             // AST REWRITE
             // elements: package_id, package_key
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 459:3: -> ^( package_key package_id )
+            // 455:3: -> ^( package_key package_id )
             {
-                // src/main/resources/org/drools/lang/DRL.g:459:6: ^( package_key package_id )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:455:6: ^( package_key package_id )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_package_key.nextNode(), root_1);
 
-                adaptor.addChild(root_1, stream_package_id.next());
+                adaptor.addChild(root_1, stream_package_id.nextTree());
 
                 adaptor.addChild(root_0, root_1);
                 }
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
                paraphrases.pop(); 
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end package_statement
+    // $ANTLR end "package_statement"
 
     public static class package_id_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start package_id
-    // src/main/resources/org/drools/lang/DRL.g:462:1: package_id : id+= ID (id+= DOT id+= ID )* -> ^( VT_PACKAGE_ID ( ID )+ ) ;
-    public final package_id_return package_id() throws RecognitionException {
-        package_id_return retval = new package_id_return();
+    // $ANTLR start "package_id"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:458:1: package_id : id+= ID (id+= DOT id+= ID )* -> ^( VT_PACKAGE_ID ( ID )+ ) ;
+    public final DRLParser.package_id_return package_id() throws RecognitionException {
+        DRLParser.package_id_return retval = new DRLParser.package_id_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -761,17 +757,16 @@
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:463:2: (id+= ID (id+= DOT id+= ID )* -> ^( VT_PACKAGE_ID ( ID )+ ) )
-            // src/main/resources/org/drools/lang/DRL.g:463:4: id+= ID (id+= DOT id+= ID )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:459:2: (id+= ID (id+= DOT id+= ID )* -> ^( VT_PACKAGE_ID ( ID )+ ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:459:4: id+= ID (id+= DOT id+= ID )*
             {
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_package_id500); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_package_id495); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
             if (list_id==null) list_id=new ArrayList();
             list_id.add(id);
 
-            // src/main/resources/org/drools/lang/DRL.g:463:11: (id+= DOT id+= ID )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:459:11: (id+= DOT id+= ID )*
             loop4:
             do {
                 int alt4=2;
@@ -784,18 +779,16 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:463:13: id+= DOT id+= ID
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:459:13: id+= DOT id+= ID
             	    {
-            	    id=(Token)input.LT(1);
-            	    match(input,DOT,FOLLOW_DOT_in_package_id506); if (failed) return retval;
-            	    if ( backtracking==0 ) stream_DOT.add(id);
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_package_id501); if (state.failed) return retval; 
+            	    if ( state.backtracking==0 ) stream_DOT.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
             	    list_id.add(id);
 
-            	    id=(Token)input.LT(1);
-            	    match(input,ID,FOLLOW_ID_in_package_id510); if (failed) return retval;
-            	    if ( backtracking==0 ) stream_ID.add(id);
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_package_id505); if (state.failed) return retval; 
+            	    if ( state.backtracking==0 ) stream_ID.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
             	    list_id.add(id);
@@ -809,34 +802,35 @@
                 }
             } while (true);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(list_id, DroolsEditorType.IDENTIFIER);
               		setParaphrasesValue(DroolsParaphraseTypes.PACKAGE, buildStringFromTokens(list_id));	
             }
 
+
             // AST REWRITE
             // elements: ID
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 466:3: -> ^( VT_PACKAGE_ID ( ID )+ )
+            // 462:3: -> ^( VT_PACKAGE_ID ( ID )+ )
             {
-                // src/main/resources/org/drools/lang/DRL.g:466:6: ^( VT_PACKAGE_ID ( ID )+ )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:462:6: ^( VT_PACKAGE_ID ( ID )+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_PACKAGE_ID, "VT_PACKAGE_ID"), root_1);
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PACKAGE_ID, "VT_PACKAGE_ID"), root_1);
 
                 if ( !(stream_ID.hasNext()) ) {
                     throw new RewriteEarlyExitException();
                 }
                 while ( stream_ID.hasNext() ) {
-                    adaptor.addChild(root_1, stream_ID.next());
+                    adaptor.addChild(root_1, stream_ID.nextNode());
 
                 }
                 stream_ID.reset();
@@ -846,347 +840,269 @@
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end package_id
+    // $ANTLR end "package_id"
 
     public static class statement_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start statement
-    // src/main/resources/org/drools/lang/DRL.g:469:1: statement options {k=2; } : ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query );
-    public final statement_return statement() throws RecognitionException {
-        statement_return retval = new statement_return();
+    // $ANTLR start "statement"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:465:1: statement options {k=2; } : ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query );
+    public final DRLParser.statement_return statement() throws RecognitionException {
+        DRLParser.statement_return retval = new DRLParser.statement_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        rule_attribute_return rule_attribute7 = null;
+        DRLParser.rule_attribute_return rule_attribute7 = null;
 
-        function_import_statement_return function_import_statement8 = null;
+        DRLParser.function_import_statement_return function_import_statement8 = null;
 
-        import_statement_return import_statement9 = null;
+        DRLParser.import_statement_return import_statement9 = null;
 
-        global_return global10 = null;
+        DRLParser.global_return global10 = null;
 
-        function_return function11 = null;
+        DRLParser.function_return function11 = null;
 
-        template_return template12 = null;
+        DRLParser.template_return template12 = null;
 
-        type_declaration_return type_declaration13 = null;
+        DRLParser.type_declaration_return type_declaration13 = null;
 
-        rule_return rule14 = null;
+        DRLParser.rule_return rule14 = null;
 
-        query_return query15 = null;
+        DRLParser.query_return query15 = null;
 
 
 
+        if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.RULE_ATTRIBUTE); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:472:3: ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:470:2: ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query )
             int alt5=9;
-            int LA5_0 = input.LA(1);
-
-            if ( (LA5_0==ID) ) {
-                int LA5_1 = input.LA(2);
-
-                if ( (LA5_1==MISC) && (((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))||(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-")!
  && validateLT(3, DroolsSoftKeywords.EFFECTIVE))))) {
-                    alt5=1;
-                }
-                else if ( (LA5_1==ID) ) {
-                    int LA5_3 = input.LA(3);
-
-                    if ( (((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) ) {
-                        alt5=2;
-                    }
-                    else if ( ((validateIdentifierKey(DroolsSoftKeywords.IMPORT))) ) {
-                        alt5=3;
-                    }
-                    else if ( ((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))) ) {
-                        alt5=4;
-                    }
-                    else if ( ((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))) ) {
-                        alt5=5;
-                    }
-                    else if ( (((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))) ) {
-                        alt5=6;
-                    }
-                    else if ( (((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))) ) {
-                        alt5=7;
-                    }
-                    else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {
-                        alt5=8;
-                    }
-                    else if ( ((validateIdentifierKey(DroolsSoftKeywords.QUERY))) ) {
-                        alt5=9;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return retval;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("469:1: statement options {k=2; } : ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query );", 5, 3, input);
-
-                        throw nvae;
-                    }
-                }
-                else if ( (LA5_1==STRING) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(Dro!
 olsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))))) {
-                    int LA5_4 = input.LA(3);
-
-                    if ( ((validateIdentifierKey(DroolsSoftKeywords.DIALECT))) ) {
-                        alt5=1;
-                    }
-                    else if ( (((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))) ) {
-                        alt5=6;
-                    }
-                    else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {
-                        alt5=8;
-                    }
-                    else if ( ((validateIdentifierKey(DroolsSoftKeywords.QUERY))) ) {
-                        alt5=9;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return retval;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("469:1: statement options {k=2; } : ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query );", 5, 4, input);
-
-                        throw nvae;
-                    }
-                }
-                else if ( (LA5_1==BOOL) && ((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))) {
-                    alt5=1;
-                }
-                else if ( (LA5_1==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {
-                    alt5=1;
-                }
-                else if ( (LA5_1==INT) && (((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))))) {
-                    alt5=1;
-                }
-                else {
-                    if (backtracking>0) {failed=true; return retval;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("469:1: statement options {k=2; } : ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query );", 5, 1, input);
-
-                    throw nvae;
-                }
-            }
-            else {
-                if (backtracking>0) {failed=true; return retval;}
-                NoViableAltException nvae =
-                    new NoViableAltException("469:1: statement options {k=2; } : ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query );", 5, 0, input);
-
-                throw nvae;
-            }
+            alt5 = dfa5.predict(input);
             switch (alt5) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:473:2: rule_attribute
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:470:4: rule_attribute
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    if ( backtracking==0 ) {
-                      	beginSentence(DroolsSentenceType.RULE_ATTRIBUTE);	
-                    }
-                    pushFollow(FOLLOW_rule_attribute_in_statement554);
+                    pushFollow(FOLLOW_rule_attribute_in_statement549);
                     rule_attribute7=rule_attribute();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, rule_attribute7.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, rule_attribute7.getTree());
+
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:475:3: {...}? => function_import_statement
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:471:3: {...}? => function_import_statement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    if ( !((validateLT(1, "import") && validateLT(2, "function") )) ) {
-                        if (backtracking>0) {failed=true; return retval;}
+                    if ( !(((validateLT(1, "import") && validateLT(2, "function") ))) ) {
+                        if (state.backtracking>0) {state.failed=true; return retval;}
                         throw new FailedPredicateException(input, "statement", "(validateLT(1, \"import\") && validateLT(2, \"function\") )");
                     }
-                    pushFollow(FOLLOW_function_import_statement_in_statement561);
+                    pushFollow(FOLLOW_function_import_statement_in_statement556);
                     function_import_statement8=function_import_statement();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, function_import_statement8.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, function_import_statement8.getTree());
+
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:476:4: import_statement
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:472:4: import_statement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_import_statement_in_statement567);
+                    pushFollow(FOLLOW_import_statement_in_statement562);
                     import_statement9=import_statement();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, import_statement9.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, import_statement9.getTree());
+
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DRL.g:477:4: global
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:473:4: global
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_global_in_statement573);
+                    pushFollow(FOLLOW_global_in_statement568);
                     global10=global();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, global10.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, global10.getTree());
+
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/lang/DRL.g:478:4: function
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:474:4: function
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_function_in_statement579);
+                    pushFollow(FOLLOW_function_in_statement574);
                     function11=function();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, function11.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, function11.getTree());
+
                     }
                     break;
                 case 6 :
-                    // src/main/resources/org/drools/lang/DRL.g:479:4: {...}? => template
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:475:4: {...}? => template
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    if ( !((validateLT(1, DroolsSoftKeywords.TEMPLATE))) ) {
-                        if (backtracking>0) {failed=true; return retval;}
+                    if ( !(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))) ) {
+                        if (state.backtracking>0) {state.failed=true; return retval;}
                         throw new FailedPredicateException(input, "statement", "(validateLT(1, DroolsSoftKeywords.TEMPLATE))");
                     }
-                    pushFollow(FOLLOW_template_in_statement587);
+                    pushFollow(FOLLOW_template_in_statement582);
                     template12=template();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, template12.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, template12.getTree());
+
                     }
                     break;
                 case 7 :
-                    // src/main/resources/org/drools/lang/DRL.g:480:4: {...}? => type_declaration
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:476:4: {...}? => type_declaration
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    if ( !((validateLT(1, DroolsSoftKeywords.DECLARE))) ) {
-                        if (backtracking>0) {failed=true; return retval;}
+                    if ( !(((validateLT(1, DroolsSoftKeywords.DECLARE)))) ) {
+                        if (state.backtracking>0) {state.failed=true; return retval;}
                         throw new FailedPredicateException(input, "statement", "(validateLT(1, DroolsSoftKeywords.DECLARE))");
                     }
-                    pushFollow(FOLLOW_type_declaration_in_statement595);
+                    pushFollow(FOLLOW_type_declaration_in_statement590);
                     type_declaration13=type_declaration();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, type_declaration13.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, type_declaration13.getTree());
+
                     }
                     break;
                 case 8 :
-                    // src/main/resources/org/drools/lang/DRL.g:481:4: rule
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:477:4: rule
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_rule_in_statement600);
+                    pushFollow(FOLLOW_rule_in_statement595);
                     rule14=rule();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, rule14.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, rule14.getTree());
+
                     }
                     break;
                 case 9 :
-                    // src/main/resources/org/drools/lang/DRL.g:482:4: query
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:478:4: query
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_query_in_statement605);
+                    pushFollow(FOLLOW_query_in_statement600);
                     query15=query();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, query15.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, query15.getTree());
+
                     }
                     break;
 
             }
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end statement
+    // $ANTLR end "statement"
 
     public static class import_statement_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start import_statement
-    // src/main/resources/org/drools/lang/DRL.g:485:1: import_statement : import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )? -> ^( import_key import_name ) ;
-    public final import_statement_return import_statement() throws RecognitionException {
-        import_statement_return retval = new import_statement_return();
+    // $ANTLR start "import_statement"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:481:1: import_statement : import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )? -> ^( import_key import_name ) ;
+    public final DRLParser.import_statement_return import_statement() throws RecognitionException {
+        DRLParser.import_statement_return retval = new DRLParser.import_statement_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token SEMICOLON18=null;
-        import_key_return import_key16 = null;
+        DRLParser.import_key_return import_key16 = null;
 
-        import_name_return import_name17 = null;
+        DRLParser.import_name_return import_name17 = null;
 
 
         Object SEMICOLON18_tree=null;
         RewriteRuleTokenStream stream_SEMICOLON=new RewriteRuleTokenStream(adaptor,"token SEMICOLON");
         RewriteRuleSubtreeStream stream_import_key=new RewriteRuleSubtreeStream(adaptor,"rule import_key");
         RewriteRuleSubtreeStream stream_import_name=new RewriteRuleSubtreeStream(adaptor,"rule import_name");
-         pushParaphrases(DroolsParaphraseTypes.IMPORT); 
+         pushParaphrases(DroolsParaphraseTypes.IMPORT); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.IMPORT_STATEMENT); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:488:2: ( import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )? -> ^( import_key import_name ) )
-            // src/main/resources/org/drools/lang/DRL.g:489:2: import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:484:2: ( import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )? -> ^( import_key import_name ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:484:4: import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )?
             {
-            if ( backtracking==0 ) {
-              	beginSentence(DroolsSentenceType.IMPORT_STATEMENT);	
-            }
-            pushFollow(FOLLOW_import_key_in_import_statement632);
+            pushFollow(FOLLOW_import_key_in_import_statement622);
             import_key16=import_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_import_key.add(import_key16.getTree());
-            pushFollow(FOLLOW_import_name_in_import_statement634);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_import_key.add(import_key16.getTree());
+            pushFollow(FOLLOW_import_name_in_import_statement624);
             import_name17=import_name(DroolsParaphraseTypes.IMPORT);
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_import_name.add(import_name17.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:490:56: ( SEMICOLON )?
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_import_name.add(import_name17.getTree());
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:484:57: ( SEMICOLON )?
             int alt6=2;
             int LA6_0 = input.LA(1);
 
@@ -1195,11 +1111,10 @@
             }
             switch (alt6) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:490:56: SEMICOLON
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:484:57: SEMICOLON
                     {
-                    SEMICOLON18=(Token)input.LT(1);
-                    match(input,SEMICOLON,FOLLOW_SEMICOLON_in_import_statement637); if (failed) return retval;
-                    if ( backtracking==0 ) stream_SEMICOLON.add(SEMICOLON18);
+                    SEMICOLON18=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_import_statement627); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON18);
 
 
                     }
@@ -1207,78 +1122,81 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(SEMICOLON18, DroolsEditorType.SYMBOL);	
             }
 
+
             // AST REWRITE
-            // elements: import_key, import_name
+            // elements: import_name, import_key
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 492:3: -> ^( import_key import_name )
+            // 486:3: -> ^( import_key import_name )
             {
-                // src/main/resources/org/drools/lang/DRL.g:492:6: ^( import_key import_name )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:486:6: ^( import_key import_name )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_import_key.nextNode(), root_1);
 
-                adaptor.addChild(root_1, stream_import_name.next());
+                adaptor.addChild(root_1, stream_import_name.nextTree());
 
                 adaptor.addChild(root_0, root_1);
                 }
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
                paraphrases.pop(); 
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end import_statement
+    // $ANTLR end "import_statement"
 
     public static class function_import_statement_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start function_import_statement
-    // src/main/resources/org/drools/lang/DRL.g:495:1: function_import_statement : imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )? -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name ) ;
-    public final function_import_statement_return function_import_statement() throws RecognitionException {
-        function_import_statement_return retval = new function_import_statement_return();
+    // $ANTLR start "function_import_statement"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:489:1: function_import_statement : imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )? -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name ) ;
+    public final DRLParser.function_import_statement_return function_import_statement() throws RecognitionException {
+        DRLParser.function_import_statement_return retval = new DRLParser.function_import_statement_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token SEMICOLON21=null;
-        import_key_return imp = null;
+        DRLParser.import_key_return imp = null;
 
-        function_key_return function_key19 = null;
+        DRLParser.function_key_return function_key19 = null;
 
-        import_name_return import_name20 = null;
+        DRLParser.import_name_return import_name20 = null;
 
 
         Object SEMICOLON21_tree=null;
@@ -1286,30 +1204,30 @@
         RewriteRuleSubtreeStream stream_import_key=new RewriteRuleSubtreeStream(adaptor,"rule import_key");
         RewriteRuleSubtreeStream stream_function_key=new RewriteRuleSubtreeStream(adaptor,"rule function_key");
         RewriteRuleSubtreeStream stream_import_name=new RewriteRuleSubtreeStream(adaptor,"rule import_name");
-         pushParaphrases(DroolsParaphraseTypes.FUNCTION_IMPORT); 
+         pushParaphrases(DroolsParaphraseTypes.FUNCTION_IMPORT); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.FUNCTION_IMPORT_STATEMENT); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:498:2: (imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )? -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name ) )
-            // src/main/resources/org/drools/lang/DRL.g:499:2: imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:492:2: (imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )? -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:492:4: imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )?
             {
-            if ( backtracking==0 ) {
-              	beginSentence(DroolsSentenceType.FUNCTION_IMPORT_STATEMENT);	
-            }
-            pushFollow(FOLLOW_import_key_in_function_import_statement680);
+            pushFollow(FOLLOW_import_key_in_function_import_statement665);
             imp=import_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_import_key.add(imp.getTree());
-            pushFollow(FOLLOW_function_key_in_function_import_statement682);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_import_key.add(imp.getTree());
+            pushFollow(FOLLOW_function_key_in_function_import_statement667);
             function_key19=function_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_function_key.add(function_key19.getTree());
-            pushFollow(FOLLOW_import_name_in_function_import_statement684);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_function_key.add(function_key19.getTree());
+            pushFollow(FOLLOW_import_name_in_function_import_statement669);
             import_name20=import_name(DroolsParaphraseTypes.FUNCTION_IMPORT);
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_import_name.add(import_name20.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:500:82: ( SEMICOLON )?
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_import_name.add(import_name20.getTree());
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:492:83: ( SEMICOLON )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -1318,11 +1236,10 @@
             }
             switch (alt7) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:500:82: SEMICOLON
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:492:83: SEMICOLON
                     {
-                    SEMICOLON21=(Token)input.LT(1);
-                    match(input,SEMICOLON,FOLLOW_SEMICOLON_in_function_import_statement687); if (failed) return retval;
-                    if ( backtracking==0 ) stream_SEMICOLON.add(SEMICOLON21);
+                    SEMICOLON21=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_function_import_statement672); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON21);
 
 
                     }
@@ -1330,69 +1247,72 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(SEMICOLON21, DroolsEditorType.SYMBOL);	
             }
 
+
             // AST REWRITE
             // elements: import_name, function_key
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 502:3: -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name )
+            // 494:3: -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name )
             {
-                // src/main/resources/org/drools/lang/DRL.g:502:6: ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:494:6: ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_FUNCTION_IMPORT, ((Token)imp.start)), root_1);
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FUNCTION_IMPORT, (imp!=null?((Token)imp.start):null)), root_1);
 
-                adaptor.addChild(root_1, stream_function_key.next());
-                adaptor.addChild(root_1, stream_import_name.next());
+                adaptor.addChild(root_1, stream_function_key.nextTree());
+                adaptor.addChild(root_1, stream_import_name.nextTree());
 
                 adaptor.addChild(root_0, root_1);
                 }
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
                paraphrases.pop(); 
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end function_import_statement
+    // $ANTLR end "function_import_statement"
 
     public static class import_name_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start import_name
-    // src/main/resources/org/drools/lang/DRL.g:505:1: import_name[DroolsParaphraseTypes importType] : id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )? -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) ;
-    public final import_name_return import_name(DroolsParaphraseTypes importType) throws RecognitionException {
-        import_name_return retval = new import_name_return();
+    // $ANTLR start "import_name"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:497:1: import_name[DroolsParaphraseTypes importType] : id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )? -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) ;
+    public final DRLParser.import_name_return import_name(DroolsParaphraseTypes importType) throws RecognitionException {
+        DRLParser.import_name_return retval = new DRLParser.import_name_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -1406,17 +1326,16 @@
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:506:2: (id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )? -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) )
-            // src/main/resources/org/drools/lang/DRL.g:506:4: id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:498:2: (id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )? -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:498:4: id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )?
             {
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_import_name721); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_import_name706); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
             if (list_id==null) list_id=new ArrayList();
             list_id.add(id);
 
-            // src/main/resources/org/drools/lang/DRL.g:506:11: (id+= DOT id+= ID )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:498:11: (id+= DOT id+= ID )*
             loop8:
             do {
                 int alt8=2;
@@ -1429,18 +1348,16 @@
 
                 switch (alt8) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:506:13: id+= DOT id+= ID
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:498:13: id+= DOT id+= ID
             	    {
-            	    id=(Token)input.LT(1);
-            	    match(input,DOT,FOLLOW_DOT_in_import_name727); if (failed) return retval;
-            	    if ( backtracking==0 ) stream_DOT.add(id);
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_import_name712); if (state.failed) return retval; 
+            	    if ( state.backtracking==0 ) stream_DOT.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
             	    list_id.add(id);
 
-            	    id=(Token)input.LT(1);
-            	    match(input,ID,FOLLOW_ID_in_import_name731); if (failed) return retval;
-            	    if ( backtracking==0 ) stream_ID.add(id);
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_import_name716); if (state.failed) return retval; 
+            	    if ( state.backtracking==0 ) stream_ID.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
             	    list_id.add(id);
@@ -1454,7 +1371,7 @@
                 }
             } while (true);
 
-            // src/main/resources/org/drools/lang/DRL.g:506:33: (id+= DOT_STAR )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:498:33: (id+= DOT_STAR )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -1463,11 +1380,10 @@
             }
             switch (alt9) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:506:33: id+= DOT_STAR
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:498:33: id+= DOT_STAR
                     {
-                    id=(Token)input.LT(1);
-                    match(input,DOT_STAR,FOLLOW_DOT_STAR_in_import_name738); if (failed) return retval;
-                    if ( backtracking==0 ) stream_DOT_STAR.add(id);
+                    id=(Token)match(input,DOT_STAR,FOLLOW_DOT_STAR_in_import_name723); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_DOT_STAR.add(id);
 
                     if (list_id==null) list_id=new ArrayList();
                     list_id.add(id);
@@ -1478,40 +1394,41 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(list_id, DroolsEditorType.IDENTIFIER);
               		setParaphrasesValue(importType, buildStringFromTokens(list_id));	
             }
 
+
             // AST REWRITE
             // elements: ID, DOT_STAR
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 509:3: -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
+            // 501:3: -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
             {
-                // src/main/resources/org/drools/lang/DRL.g:509:6: ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:501:6: ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_IMPORT_ID, "VT_IMPORT_ID"), root_1);
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_IMPORT_ID, "VT_IMPORT_ID"), root_1);
 
                 if ( !(stream_ID.hasNext()) ) {
                     throw new RewriteEarlyExitException();
                 }
                 while ( stream_ID.hasNext() ) {
-                    adaptor.addChild(root_1, stream_ID.next());
+                    adaptor.addChild(root_1, stream_ID.nextNode());
 
                 }
                 stream_ID.reset();
-                // src/main/resources/org/drools/lang/DRL.g:509:25: ( DOT_STAR )?
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:501:25: ( DOT_STAR )?
                 if ( stream_DOT_STAR.hasNext() ) {
-                    adaptor.addChild(root_1, stream_DOT_STAR.next());
+                    adaptor.addChild(root_1, stream_DOT_STAR.nextNode());
 
                 }
                 stream_DOT_STAR.reset();
@@ -1521,46 +1438,48 @@
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end import_name
+    // $ANTLR end "import_name"
 
     public static class global_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start global
-    // src/main/resources/org/drools/lang/DRL.g:512:1: global : global_key data_type global_id ( SEMICOLON )? -> ^( global_key data_type global_id ) ;
-    public final global_return global() throws RecognitionException {
-        global_return retval = new global_return();
+    // $ANTLR start "global"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:504:1: global : global_key data_type global_id ( SEMICOLON )? -> ^( global_key data_type global_id ) ;
+    public final DRLParser.global_return global() throws RecognitionException {
+        DRLParser.global_return retval = new DRLParser.global_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token SEMICOLON25=null;
-        global_key_return global_key22 = null;
+        DRLParser.global_key_return global_key22 = null;
 
-        data_type_return data_type23 = null;
+        DRLParser.data_type_return data_type23 = null;
 
-        global_id_return global_id24 = null;
+        DRLParser.global_id_return global_id24 = null;
 
 
         Object SEMICOLON25_tree=null;
@@ -1568,30 +1487,30 @@
         RewriteRuleSubtreeStream stream_data_type=new RewriteRuleSubtreeStream(adaptor,"rule data_type");
         RewriteRuleSubtreeStream stream_global_id=new RewriteRuleSubtreeStream(adaptor,"rule global_id");
         RewriteRuleSubtreeStream stream_global_key=new RewriteRuleSubtreeStream(adaptor,"rule global_key");
-         pushParaphrases(DroolsParaphraseTypes.GLOBAL); 
+         pushParaphrases(DroolsParaphraseTypes.GLOBAL); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.GLOBAL);   
         try {
-            // src/main/resources/org/drools/lang/DRL.g:515:2: ( global_key data_type global_id ( SEMICOLON )? -> ^( global_key data_type global_id ) )
-            // src/main/resources/org/drools/lang/DRL.g:516:2: global_key data_type global_id ( SEMICOLON )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:507:2: ( global_key data_type global_id ( SEMICOLON )? -> ^( global_key data_type global_id ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:507:4: global_key data_type global_id ( SEMICOLON )?
             {
-            if ( backtracking==0 ) {
-              	beginSentence(DroolsSentenceType.GLOBAL);	
-            }
-            pushFollow(FOLLOW_global_key_in_global783);
+            pushFollow(FOLLOW_global_key_in_global763);
             global_key22=global_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_global_key.add(global_key22.getTree());
-            pushFollow(FOLLOW_data_type_in_global785);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_global_key.add(global_key22.getTree());
+            pushFollow(FOLLOW_data_type_in_global765);
             data_type23=data_type();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_data_type.add(data_type23.getTree());
-            pushFollow(FOLLOW_global_id_in_global787);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_data_type.add(data_type23.getTree());
+            pushFollow(FOLLOW_global_id_in_global767);
             global_id24=global_id();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_global_id.add(global_id24.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:517:34: ( SEMICOLON )?
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_global_id.add(global_id24.getTree());
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:507:35: ( SEMICOLON )?
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -1600,11 +1519,10 @@
             }
             switch (alt10) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:517:34: SEMICOLON
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:507:35: SEMICOLON
                     {
-                    SEMICOLON25=(Token)input.LT(1);
-                    match(input,SEMICOLON,FOLLOW_SEMICOLON_in_global789); if (failed) return retval;
-                    if ( backtracking==0 ) stream_SEMICOLON.add(SEMICOLON25);
+                    SEMICOLON25=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_global769); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON25);
 
 
                     }
@@ -1612,69 +1530,72 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(SEMICOLON25, DroolsEditorType.SYMBOL);	
             }
 
+
             // AST REWRITE
             // elements: global_key, global_id, data_type
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 519:3: -> ^( global_key data_type global_id )
+            // 509:3: -> ^( global_key data_type global_id )
             {
-                // src/main/resources/org/drools/lang/DRL.g:519:6: ^( global_key data_type global_id )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:509:6: ^( global_key data_type global_id )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_global_key.nextNode(), root_1);
 
-                adaptor.addChild(root_1, stream_data_type.next());
-                adaptor.addChild(root_1, stream_global_id.next());
+                adaptor.addChild(root_1, stream_data_type.nextTree());
+                adaptor.addChild(root_1, stream_global_id.nextTree());
 
                 adaptor.addChild(root_0, root_1);
                 }
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
                paraphrases.pop(); 
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end global
+    // $ANTLR end "global"
 
     public static class global_id_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start global_id
-    // src/main/resources/org/drools/lang/DRL.g:522:1: global_id : id= ID -> VT_GLOBAL_ID[$id] ;
-    public final global_id_return global_id() throws RecognitionException {
-        global_id_return retval = new global_id_return();
+    // $ANTLR start "global_id"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:512:1: global_id : id= ID -> VT_GLOBAL_ID[$id] ;
+    public final DRLParser.global_id_return global_id() throws RecognitionException {
+        DRLParser.global_id_return retval = new DRLParser.global_id_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -1685,78 +1606,80 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:523:2: (id= ID -> VT_GLOBAL_ID[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:523:4: id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:513:2: (id= ID -> VT_GLOBAL_ID[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:513:4: id= ID
             {
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_global_id818); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_global_id798); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.IDENTIFIER);
-              		setParaphrasesValue(DroolsParaphraseTypes.GLOBAL, id.getText());	
+              		setParaphrasesValue(DroolsParaphraseTypes.GLOBAL, (id!=null?id.getText():null));	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 526:3: -> VT_GLOBAL_ID[$id]
+            // 516:3: -> VT_GLOBAL_ID[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VT_GLOBAL_ID, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_GLOBAL_ID, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end global_id
+    // $ANTLR end "global_id"
 
     public static class function_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start function
-    // src/main/resources/org/drools/lang/DRL.g:529:1: function : function_key ( data_type )? function_id parameters curly_chunk -> ^( function_key ( data_type )? function_id parameters curly_chunk ) ;
-    public final function_return function() throws RecognitionException {
-        function_return retval = new function_return();
+    // $ANTLR start "function"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:519:1: function : function_key ( data_type )? function_id parameters curly_chunk -> ^( function_key ( data_type )? function_id parameters curly_chunk ) ;
+    public final DRLParser.function_return function() throws RecognitionException {
+        DRLParser.function_return retval = new DRLParser.function_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        function_key_return function_key26 = null;
+        DRLParser.function_key_return function_key26 = null;
 
-        data_type_return data_type27 = null;
+        DRLParser.data_type_return data_type27 = null;
 
-        function_id_return function_id28 = null;
+        DRLParser.function_id_return function_id28 = null;
 
-        parameters_return parameters29 = null;
+        DRLParser.parameters_return parameters29 = null;
 
-        curly_chunk_return curly_chunk30 = null;
+        DRLParser.curly_chunk_return curly_chunk30 = null;
 
 
         RewriteRuleSubtreeStream stream_parameters=new RewriteRuleSubtreeStream(adaptor,"rule parameters");
@@ -1764,20 +1687,18 @@
         RewriteRuleSubtreeStream stream_curly_chunk=new RewriteRuleSubtreeStream(adaptor,"rule curly_chunk");
         RewriteRuleSubtreeStream stream_data_type=new RewriteRuleSubtreeStream(adaptor,"rule data_type");
         RewriteRuleSubtreeStream stream_function_id=new RewriteRuleSubtreeStream(adaptor,"rule function_id");
-         pushParaphrases(DroolsParaphraseTypes.FUNCTION); 
+         pushParaphrases(DroolsParaphraseTypes.FUNCTION); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.FUNCTION); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:532:2: ( function_key ( data_type )? function_id parameters curly_chunk -> ^( function_key ( data_type )? function_id parameters curly_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:533:2: function_key ( data_type )? function_id parameters curly_chunk
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:522:2: ( function_key ( data_type )? function_id parameters curly_chunk -> ^( function_key ( data_type )? function_id parameters curly_chunk ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:522:4: function_key ( data_type )? function_id parameters curly_chunk
             {
-            if ( backtracking==0 ) {
-              	beginSentence(DroolsSentenceType.FUNCTION);	
-            }
-            pushFollow(FOLLOW_function_key_in_function855);
+            pushFollow(FOLLOW_function_key_in_function830);
             function_key26=function_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_function_key.add(function_key26.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:534:16: ( data_type )?
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_function_key.add(function_key26.getTree());
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:522:17: ( data_type )?
             int alt11=2;
             int LA11_0 = input.LA(1);
 
@@ -1790,101 +1711,108 @@
             }
             switch (alt11) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:534:16: data_type
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:522:17: data_type
                     {
-                    pushFollow(FOLLOW_data_type_in_function857);
+                    pushFollow(FOLLOW_data_type_in_function832);
                     data_type27=data_type();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_data_type.add(data_type27.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_data_type.add(data_type27.getTree());
+
                     }
                     break;
 
             }
 
-            pushFollow(FOLLOW_function_id_in_function860);
+            pushFollow(FOLLOW_function_id_in_function835);
             function_id28=function_id();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_function_id.add(function_id28.getTree());
-            pushFollow(FOLLOW_parameters_in_function862);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_function_id.add(function_id28.getTree());
+            pushFollow(FOLLOW_parameters_in_function837);
             parameters29=parameters();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_parameters.add(parameters29.getTree());
-            pushFollow(FOLLOW_curly_chunk_in_function864);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_parameters.add(parameters29.getTree());
+            pushFollow(FOLLOW_curly_chunk_in_function839);
             curly_chunk30=curly_chunk();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_curly_chunk.add(curly_chunk30.getTree());
 
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_curly_chunk.add(curly_chunk30.getTree());
+
+
             // AST REWRITE
-            // elements: curly_chunk, parameters, data_type, function_id, function_key
+            // elements: function_id, data_type, curly_chunk, parameters, function_key
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 535:3: -> ^( function_key ( data_type )? function_id parameters curly_chunk )
+            // 523:3: -> ^( function_key ( data_type )? function_id parameters curly_chunk )
             {
-                // src/main/resources/org/drools/lang/DRL.g:535:6: ^( function_key ( data_type )? function_id parameters curly_chunk )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:523:6: ^( function_key ( data_type )? function_id parameters curly_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_function_key.nextNode(), root_1);
 
-                // src/main/resources/org/drools/lang/DRL.g:535:21: ( data_type )?
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:523:21: ( data_type )?
                 if ( stream_data_type.hasNext() ) {
-                    adaptor.addChild(root_1, stream_data_type.next());
+                    adaptor.addChild(root_1, stream_data_type.nextTree());
 
                 }
                 stream_data_type.reset();
-                adaptor.addChild(root_1, stream_function_id.next());
-                adaptor.addChild(root_1, stream_parameters.next());
-                adaptor.addChild(root_1, stream_curly_chunk.next());
+                adaptor.addChild(root_1, stream_function_id.nextTree());
+                adaptor.addChild(root_1, stream_parameters.nextTree());
+                adaptor.addChild(root_1, stream_curly_chunk.nextTree());
 
                 adaptor.addChild(root_0, root_1);
                 }
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
                paraphrases.pop(); 
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end function
+    // $ANTLR end "function"
 
     public static class function_id_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start function_id
-    // src/main/resources/org/drools/lang/DRL.g:538:1: function_id : id= ID -> VT_FUNCTION_ID[$id] ;
-    public final function_id_return function_id() throws RecognitionException {
-        function_id_return retval = new function_id_return();
+    // $ANTLR start "function_id"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:526:1: function_id : id= ID -> VT_FUNCTION_ID[$id] ;
+    public final DRLParser.function_id_return function_id() throws RecognitionException {
+        DRLParser.function_id_return retval = new DRLParser.function_id_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -1895,78 +1823,80 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:539:2: (id= ID -> VT_FUNCTION_ID[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:539:4: id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:527:2: (id= ID -> VT_FUNCTION_ID[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:527:4: id= ID
             {
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_function_id894); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_function_id869); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.IDENTIFIER);
-              		setParaphrasesValue(DroolsParaphraseTypes.FUNCTION, id.getText());	
+              		setParaphrasesValue(DroolsParaphraseTypes.FUNCTION, (id!=null?id.getText():null));	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 542:3: -> VT_FUNCTION_ID[$id]
+            // 530:3: -> VT_FUNCTION_ID[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VT_FUNCTION_ID, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_FUNCTION_ID, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end function_id
+    // $ANTLR end "function_id"
 
     public static class query_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start query
-    // src/main/resources/org/drools/lang/DRL.g:545:1: query : query_key query_id ( parameters )? normal_lhs_block END ( SEMICOLON )? -> ^( query_key query_id ( parameters )? normal_lhs_block END ) ;
-    public final query_return query() throws RecognitionException {
-        query_return retval = new query_return();
+    // $ANTLR start "query"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:533:1: query : query_key query_id ( parameters )? normal_lhs_block END ( SEMICOLON )? -> ^( query_key query_id ( parameters )? normal_lhs_block END ) ;
+    public final DRLParser.query_return query() throws RecognitionException {
+        DRLParser.query_return retval = new DRLParser.query_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token END35=null;
         Token SEMICOLON36=null;
-        query_key_return query_key31 = null;
+        DRLParser.query_key_return query_key31 = null;
 
-        query_id_return query_id32 = null;
+        DRLParser.query_id_return query_id32 = null;
 
-        parameters_return parameters33 = null;
+        DRLParser.parameters_return parameters33 = null;
 
-        normal_lhs_block_return normal_lhs_block34 = null;
+        DRLParser.normal_lhs_block_return normal_lhs_block34 = null;
 
 
         Object END35_tree=null;
@@ -1977,58 +1907,58 @@
         RewriteRuleSubtreeStream stream_query_key=new RewriteRuleSubtreeStream(adaptor,"rule query_key");
         RewriteRuleSubtreeStream stream_normal_lhs_block=new RewriteRuleSubtreeStream(adaptor,"rule normal_lhs_block");
         RewriteRuleSubtreeStream stream_query_id=new RewriteRuleSubtreeStream(adaptor,"rule query_id");
-         pushParaphrases(DroolsParaphraseTypes.QUERY); 
+         pushParaphrases(DroolsParaphraseTypes.QUERY);  if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.QUERY);  
         try {
-            // src/main/resources/org/drools/lang/DRL.g:548:2: ( query_key query_id ( parameters )? normal_lhs_block END ( SEMICOLON )? -> ^( query_key query_id ( parameters )? normal_lhs_block END ) )
-            // src/main/resources/org/drools/lang/DRL.g:549:2: query_key query_id ( parameters )? normal_lhs_block END ( SEMICOLON )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:536:2: ( query_key query_id ( parameters )? normal_lhs_block END ( SEMICOLON )? -> ^( query_key query_id ( parameters )? normal_lhs_block END ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:536:4: query_key query_id ( parameters )? normal_lhs_block END ( SEMICOLON )?
             {
-            if ( backtracking==0 ) {
-              	beginSentence(DroolsSentenceType.QUERY);	
-            }
-            pushFollow(FOLLOW_query_key_in_query931);
+            pushFollow(FOLLOW_query_key_in_query901);
             query_key31=query_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_query_key.add(query_key31.getTree());
-            pushFollow(FOLLOW_query_id_in_query933);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_query_key.add(query_key31.getTree());
+            pushFollow(FOLLOW_query_id_in_query903);
             query_id32=query_id();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_query_id.add(query_id32.getTree());
-            if ( backtracking==0 ) {
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_query_id.add(query_id32.getTree());
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:552:3: ( parameters )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:538:3: ( parameters )?
             int alt12=2;
             alt12 = dfa12.predict(input);
             switch (alt12) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:552:3: parameters
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:538:3: parameters
                     {
-                    pushFollow(FOLLOW_parameters_in_query941);
+                    pushFollow(FOLLOW_parameters_in_query911);
                     parameters33=parameters();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_parameters.add(parameters33.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_parameters.add(parameters33.getTree());
+
                     }
                     break;
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
             }
-            pushFollow(FOLLOW_normal_lhs_block_in_query950);
+            pushFollow(FOLLOW_normal_lhs_block_in_query920);
             normal_lhs_block34=normal_lhs_block();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_normal_lhs_block.add(normal_lhs_block34.getTree());
-            END35=(Token)input.LT(1);
-            match(input,END,FOLLOW_END_in_query955); if (failed) return retval;
-            if ( backtracking==0 ) stream_END.add(END35);
 
-            // src/main/resources/org/drools/lang/DRL.g:555:7: ( SEMICOLON )?
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_normal_lhs_block.add(normal_lhs_block34.getTree());
+            END35=(Token)match(input,END,FOLLOW_END_in_query925); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_END.add(END35);
+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:541:7: ( SEMICOLON )?
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -2037,11 +1967,10 @@
             }
             switch (alt13) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:555:7: SEMICOLON
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:541:7: SEMICOLON
                     {
-                    SEMICOLON36=(Token)input.LT(1);
-                    match(input,SEMICOLON,FOLLOW_SEMICOLON_in_query957); if (failed) return retval;
-                    if ( backtracking==0 ) stream_SEMICOLON.add(SEMICOLON36);
+                    SEMICOLON36=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_query927); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON36);
 
 
                     }
@@ -2049,77 +1978,80 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(END35, DroolsEditorType.KEYWORD);
               		emit(SEMICOLON36, DroolsEditorType.SYMBOL);	
             }
 
+
             // AST REWRITE
-            // elements: END, query_id, normal_lhs_block, query_key, parameters
+            // elements: normal_lhs_block, query_key, END, parameters, query_id
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 558:3: -> ^( query_key query_id ( parameters )? normal_lhs_block END )
+            // 544:3: -> ^( query_key query_id ( parameters )? normal_lhs_block END )
             {
-                // src/main/resources/org/drools/lang/DRL.g:558:6: ^( query_key query_id ( parameters )? normal_lhs_block END )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:544:6: ^( query_key query_id ( parameters )? normal_lhs_block END )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_query_key.nextNode(), root_1);
 
-                adaptor.addChild(root_1, stream_query_id.next());
-                // src/main/resources/org/drools/lang/DRL.g:558:27: ( parameters )?
+                adaptor.addChild(root_1, stream_query_id.nextTree());
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:544:27: ( parameters )?
                 if ( stream_parameters.hasNext() ) {
-                    adaptor.addChild(root_1, stream_parameters.next());
+                    adaptor.addChild(root_1, stream_parameters.nextTree());
 
                 }
                 stream_parameters.reset();
-                adaptor.addChild(root_1, stream_normal_lhs_block.next());
-                adaptor.addChild(root_1, stream_END.next());
+                adaptor.addChild(root_1, stream_normal_lhs_block.nextTree());
+                adaptor.addChild(root_1, stream_END.nextNode());
 
                 adaptor.addChild(root_0, root_1);
                 }
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
                paraphrases.pop(); 
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end query
+    // $ANTLR end "query"
 
     public static class query_id_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start query_id
-    // src/main/resources/org/drools/lang/DRL.g:561:1: query_id : (id= ID -> VT_QUERY_ID[$id] | id= STRING -> VT_QUERY_ID[$id] );
-    public final query_id_return query_id() throws RecognitionException {
-        query_id_return retval = new query_id_return();
+    // $ANTLR start "query_id"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:547:1: query_id : (id= ID -> VT_QUERY_ID[$id] | id= STRING -> VT_QUERY_ID[$id] );
+    public final DRLParser.query_id_return query_id() throws RecognitionException {
+        DRLParser.query_id_return retval = new DRLParser.query_id_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -2131,7 +2063,7 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:562:2: (id= ID -> VT_QUERY_ID[$id] | id= STRING -> VT_QUERY_ID[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:548:2: (id= ID -> VT_QUERY_ID[$id] | id= STRING -> VT_QUERY_ID[$id] )
             int alt14=2;
             int LA14_0 = input.LA(1);
 
@@ -2142,107 +2074,108 @@
                 alt14=2;
             }
             else {
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("561:1: query_id : (id= ID -> VT_QUERY_ID[$id] | id= STRING -> VT_QUERY_ID[$id] );", 14, 0, input);
+                    new NoViableAltException("", 14, 0, input);
 
                 throw nvae;
             }
             switch (alt14) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:562:5: id= ID
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:548:5: id= ID
                     {
-                    id=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_query_id992); if (failed) return retval;
-                    if ( backtracking==0 ) stream_ID.add(id);
+                    id=(Token)match(input,ID,FOLLOW_ID_in_query_id962); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_ID.add(id);
 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(id, DroolsEditorType.IDENTIFIER);
-                      		setParaphrasesValue(DroolsParaphraseTypes.QUERY, id.getText());	
+                      		setParaphrasesValue(DroolsParaphraseTypes.QUERY, (id!=null?id.getText():null));	
                     }
 
+
                     // AST REWRITE
                     // elements: 
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
                     // rule list labels: 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                     retval.tree = root_0;
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 564:65: -> VT_QUERY_ID[$id]
+                    // 550:65: -> VT_QUERY_ID[$id]
                     {
-                        adaptor.addChild(root_0, adaptor.create(VT_QUERY_ID, id));
+                        adaptor.addChild(root_0, (Object)adaptor.create(VT_QUERY_ID, id));
 
                     }
 
+                    retval.tree = root_0;}
                     }
-
-                    }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:565:5: id= STRING
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:551:5: id= STRING
                     {
-                    id=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_query_id1008); if (failed) return retval;
-                    if ( backtracking==0 ) stream_STRING.add(id);
+                    id=(Token)match(input,STRING,FOLLOW_STRING_in_query_id978); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_STRING.add(id);
 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(id, DroolsEditorType.IDENTIFIER);
-                      		setParaphrasesValue(DroolsParaphraseTypes.QUERY, id.getText());	
+                      		setParaphrasesValue(DroolsParaphraseTypes.QUERY, (id!=null?id.getText():null));	
                     }
 
+
                     // AST REWRITE
                     // elements: 
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
                     // rule list labels: 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                     retval.tree = root_0;
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 567:65: -> VT_QUERY_ID[$id]
+                    // 553:65: -> VT_QUERY_ID[$id]
                     {
-                        adaptor.addChild(root_0, adaptor.create(VT_QUERY_ID, id));
+                        adaptor.addChild(root_0, (Object)adaptor.create(VT_QUERY_ID, id));
 
                     }
 
+                    retval.tree = root_0;}
                     }
-
-                    }
                     break;
 
             }
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end query_id
+    // $ANTLR end "query_id"
 
     public static class parameters_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start parameters
-    // src/main/resources/org/drools/lang/DRL.g:570:1: parameters : LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN ) ;
-    public final parameters_return parameters() throws RecognitionException {
-        parameters_return retval = new parameters_return();
+    // $ANTLR start "parameters"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:556:1: parameters : LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN ) ;
+    public final DRLParser.parameters_return parameters() throws RecognitionException {
+        DRLParser.parameters_return retval = new DRLParser.parameters_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -2250,9 +2183,9 @@
         Token LEFT_PAREN37=null;
         Token COMMA39=null;
         Token RIGHT_PAREN41=null;
-        param_definition_return param_definition38 = null;
+        DRLParser.param_definition_return param_definition38 = null;
 
-        param_definition_return param_definition40 = null;
+        DRLParser.param_definition_return param_definition40 = null;
 
 
         Object LEFT_PAREN37_tree=null;
@@ -2263,17 +2196,16 @@
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
         RewriteRuleSubtreeStream stream_param_definition=new RewriteRuleSubtreeStream(adaptor,"rule param_definition");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:571:2: ( LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN ) )
-            // src/main/resources/org/drools/lang/DRL.g:571:4: LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:557:2: ( LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:557:4: LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN
             {
-            LEFT_PAREN37=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_parameters1027); if (failed) return retval;
-            if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN37);
+            LEFT_PAREN37=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_parameters997); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN37);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(LEFT_PAREN37, DroolsEditorType.SYMBOL);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:572:4: ( param_definition ( COMMA param_definition )* )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:558:4: ( param_definition ( COMMA param_definition )* )?
             int alt16=2;
             int LA16_0 = input.LA(1);
 
@@ -2282,14 +2214,15 @@
             }
             switch (alt16) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:572:6: param_definition ( COMMA param_definition )*
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:558:6: param_definition ( COMMA param_definition )*
                     {
-                    pushFollow(FOLLOW_param_definition_in_parameters1036);
+                    pushFollow(FOLLOW_param_definition_in_parameters1006);
                     param_definition38=param_definition();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_param_definition.add(param_definition38.getTree());
-                    // src/main/resources/org/drools/lang/DRL.g:572:23: ( COMMA param_definition )*
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_param_definition.add(param_definition38.getTree());
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:558:23: ( COMMA param_definition )*
                     loop15:
                     do {
                         int alt15=2;
@@ -2302,21 +2235,21 @@
 
                         switch (alt15) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:572:24: COMMA param_definition
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:558:24: COMMA param_definition
                     	    {
-                    	    COMMA39=(Token)input.LT(1);
-                    	    match(input,COMMA,FOLLOW_COMMA_in_parameters1039); if (failed) return retval;
-                    	    if ( backtracking==0 ) stream_COMMA.add(COMMA39);
+                    	    COMMA39=(Token)match(input,COMMA,FOLLOW_COMMA_in_parameters1009); if (state.failed) return retval; 
+                    	    if ( state.backtracking==0 ) stream_COMMA.add(COMMA39);
 
-                    	    if ( backtracking==0 ) {
+                    	    if ( state.backtracking==0 ) {
                     	      	emit(COMMA39, DroolsEditorType.SYMBOL);	
                     	    }
-                    	    pushFollow(FOLLOW_param_definition_in_parameters1043);
+                    	    pushFollow(FOLLOW_param_definition_in_parameters1013);
                     	    param_definition40=param_definition();
-                    	    _fsp--;
-                    	    if (failed) return retval;
-                    	    if ( backtracking==0 ) stream_param_definition.add(param_definition40.getTree());
 
+                    	    state._fsp--;
+                    	    if (state.failed) return retval;
+                    	    if ( state.backtracking==0 ) stream_param_definition.add(param_definition40.getTree());
+
                     	    }
                     	    break;
 
@@ -2331,169 +2264,175 @@
 
             }
 
-            RIGHT_PAREN41=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_parameters1052); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN41);
+            RIGHT_PAREN41=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_parameters1022); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN41);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(RIGHT_PAREN41, DroolsEditorType.SYMBOL);	
             }
 
+
             // AST REWRITE
             // elements: param_definition, RIGHT_PAREN
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 574:3: -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN )
+            // 560:3: -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN )
             {
-                // src/main/resources/org/drools/lang/DRL.g:574:6: ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:560:6: ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_PARAM_LIST, "VT_PARAM_LIST"), root_1);
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PARAM_LIST, "VT_PARAM_LIST"), root_1);
 
-                // src/main/resources/org/drools/lang/DRL.g:574:22: ( param_definition )*
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:560:22: ( param_definition )*
                 while ( stream_param_definition.hasNext() ) {
-                    adaptor.addChild(root_1, stream_param_definition.next());
+                    adaptor.addChild(root_1, stream_param_definition.nextTree());
 
                 }
                 stream_param_definition.reset();
-                adaptor.addChild(root_1, stream_RIGHT_PAREN.next());
+                adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
                 adaptor.addChild(root_0, root_1);
                 }
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end parameters
+    // $ANTLR end "parameters"
 
     public static class param_definition_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start param_definition
-    // src/main/resources/org/drools/lang/DRL.g:577:1: param_definition : ( data_type )? argument ;
-    public final param_definition_return param_definition() throws RecognitionException {
-        param_definition_return retval = new param_definition_return();
+    // $ANTLR start "param_definition"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:563:1: param_definition : ( data_type )? argument ;
+    public final DRLParser.param_definition_return param_definition() throws RecognitionException {
+        DRLParser.param_definition_return retval = new DRLParser.param_definition_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        data_type_return data_type42 = null;
+        DRLParser.data_type_return data_type42 = null;
 
-        argument_return argument43 = null;
+        DRLParser.argument_return argument43 = null;
 
 
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:578:2: ( ( data_type )? argument )
-            // src/main/resources/org/drools/lang/DRL.g:578:4: ( data_type )? argument
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:564:2: ( ( data_type )? argument )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:564:4: ( data_type )? argument
             {
             root_0 = (Object)adaptor.nil();
 
-            // src/main/resources/org/drools/lang/DRL.g:578:4: ( data_type )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:564:4: ( data_type )?
             int alt17=2;
             alt17 = dfa17.predict(input);
             switch (alt17) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:578:4: data_type
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:564:4: data_type
                     {
-                    pushFollow(FOLLOW_data_type_in_param_definition1078);
+                    pushFollow(FOLLOW_data_type_in_param_definition1048);
                     data_type42=data_type();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, data_type42.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, data_type42.getTree());
+
                     }
                     break;
 
             }
 
-            pushFollow(FOLLOW_argument_in_param_definition1081);
+            pushFollow(FOLLOW_argument_in_param_definition1051);
             argument43=argument();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, argument43.getTree());
 
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, argument43.getTree());
+
             }
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end param_definition
+    // $ANTLR end "param_definition"
 
     public static class argument_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start argument
-    // src/main/resources/org/drools/lang/DRL.g:581:1: argument : ID ( dimension_definition )* ;
-    public final argument_return argument() throws RecognitionException {
-        argument_return retval = new argument_return();
+    // $ANTLR start "argument"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:567:1: argument : ID ( dimension_definition )* ;
+    public final DRLParser.argument_return argument() throws RecognitionException {
+        DRLParser.argument_return retval = new DRLParser.argument_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token ID44=null;
-        dimension_definition_return dimension_definition45 = null;
+        DRLParser.dimension_definition_return dimension_definition45 = null;
 
 
         Object ID44_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:582:2: ( ID ( dimension_definition )* )
-            // src/main/resources/org/drools/lang/DRL.g:582:4: ID ( dimension_definition )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:568:2: ( ID ( dimension_definition )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:568:4: ID ( dimension_definition )*
             {
             root_0 = (Object)adaptor.nil();
 
-            ID44=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_argument1092); if (failed) return retval;
-            if ( backtracking==0 ) {
+            ID44=(Token)match(input,ID,FOLLOW_ID_in_argument1062); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             ID44_tree = (Object)adaptor.create(ID44);
             adaptor.addChild(root_0, ID44_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(ID44, DroolsEditorType.IDENTIFIER);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:583:3: ( dimension_definition )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:569:3: ( dimension_definition )*
             loop18:
             do {
                 int alt18=2;
@@ -2506,14 +2445,15 @@
 
                 switch (alt18) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:583:3: dimension_definition
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:569:3: dimension_definition
             	    {
-            	    pushFollow(FOLLOW_dimension_definition_in_argument1098);
+            	    pushFollow(FOLLOW_dimension_definition_in_argument1068);
             	    dimension_definition45=dimension_definition();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, dimension_definition45.getTree());
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, dimension_definition45.getTree());
+
             	    }
             	    break;
 
@@ -2527,42 +2467,45 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end argument
+    // $ANTLR end "argument"
 
     public static class type_declaration_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start type_declaration
-    // src/main/resources/org/drools/lang/DRL.g:586:1: type_declaration : declare_key type_declare_id ( decl_metadata )* ( decl_field )* END -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* END ) ;
-    public final type_declaration_return type_declaration() throws RecognitionException {
-        type_declaration_return retval = new type_declaration_return();
+    // $ANTLR start "type_declaration"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:572:1: type_declaration : declare_key type_declare_id ( decl_metadata )* ( decl_field )* END -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* END ) ;
+    public final DRLParser.type_declaration_return type_declaration() throws RecognitionException {
+        DRLParser.type_declaration_return retval = new DRLParser.type_declaration_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token END50=null;
-        declare_key_return declare_key46 = null;
+        DRLParser.declare_key_return declare_key46 = null;
 
-        type_declare_id_return type_declare_id47 = null;
+        DRLParser.type_declare_id_return type_declare_id47 = null;
 
-        decl_metadata_return decl_metadata48 = null;
+        DRLParser.decl_metadata_return decl_metadata48 = null;
 
-        decl_field_return decl_field49 = null;
+        DRLParser.decl_field_return decl_field49 = null;
 
 
         Object END50_tree=null;
@@ -2571,25 +2514,24 @@
         RewriteRuleSubtreeStream stream_declare_key=new RewriteRuleSubtreeStream(adaptor,"rule declare_key");
         RewriteRuleSubtreeStream stream_decl_metadata=new RewriteRuleSubtreeStream(adaptor,"rule decl_metadata");
         RewriteRuleSubtreeStream stream_type_declare_id=new RewriteRuleSubtreeStream(adaptor,"rule type_declare_id");
-         pushParaphrases(DroolsParaphraseTypes.TYPE_DECLARE); 
+         pushParaphrases(DroolsParaphraseTypes.TYPE_DECLARE); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.TYPE_DECLARATION); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:589:2: ( declare_key type_declare_id ( decl_metadata )* ( decl_field )* END -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* END ) )
-            // src/main/resources/org/drools/lang/DRL.g:590:2: declare_key type_declare_id ( decl_metadata )* ( decl_field )* END
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:575:2: ( declare_key type_declare_id ( decl_metadata )* ( decl_field )* END -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* END ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:575:4: declare_key type_declare_id ( decl_metadata )* ( decl_field )* END
             {
-            if ( backtracking==0 ) {
-              	beginSentence(DroolsSentenceType.TYPE_DECLARATION);	
-            }
-            pushFollow(FOLLOW_declare_key_in_type_declaration1126);
+            pushFollow(FOLLOW_declare_key_in_type_declaration1091);
             declare_key46=declare_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_declare_key.add(declare_key46.getTree());
-            pushFollow(FOLLOW_type_declare_id_in_type_declaration1129);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_declare_key.add(declare_key46.getTree());
+            pushFollow(FOLLOW_type_declare_id_in_type_declaration1094);
             type_declare_id47=type_declare_id();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_type_declare_id.add(type_declare_id47.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:592:3: ( decl_metadata )*
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_type_declare_id.add(type_declare_id47.getTree());
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:576:3: ( decl_metadata )*
             loop19:
             do {
                 int alt19=2;
@@ -2602,14 +2544,15 @@
 
                 switch (alt19) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:592:3: decl_metadata
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:576:3: decl_metadata
             	    {
-            	    pushFollow(FOLLOW_decl_metadata_in_type_declaration1133);
+            	    pushFollow(FOLLOW_decl_metadata_in_type_declaration1098);
             	    decl_metadata48=decl_metadata();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_decl_metadata.add(decl_metadata48.getTree());
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_decl_metadata.add(decl_metadata48.getTree());
+
             	    }
             	    break;
 
@@ -2618,7 +2561,7 @@
                 }
             } while (true);
 
-            // src/main/resources/org/drools/lang/DRL.g:593:3: ( decl_field )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:577:3: ( decl_field )*
             loop20:
             do {
                 int alt20=2;
@@ -2631,14 +2574,15 @@
 
                 switch (alt20) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:593:3: decl_field
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:577:3: decl_field
             	    {
-            	    pushFollow(FOLLOW_decl_field_in_type_declaration1138);
+            	    pushFollow(FOLLOW_decl_field_in_type_declaration1103);
             	    decl_field49=decl_field();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_decl_field.add(decl_field49.getTree());
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_decl_field.add(decl_field49.getTree());
+
             	    }
             	    break;
 
@@ -2647,85 +2591,87 @@
                 }
             } while (true);
 
-            END50=(Token)input.LT(1);
-            match(input,END,FOLLOW_END_in_type_declaration1143); if (failed) return retval;
-            if ( backtracking==0 ) stream_END.add(END50);
+            END50=(Token)match(input,END,FOLLOW_END_in_type_declaration1108); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_END.add(END50);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(END50, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
-            // elements: decl_field, END, type_declare_id, decl_metadata, declare_key
+            // elements: END, decl_metadata, decl_field, declare_key, type_declare_id
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 596:3: -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* END )
+            // 580:3: -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* END )
             {
-                // src/main/resources/org/drools/lang/DRL.g:596:6: ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* END )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:580:6: ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* END )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_declare_key.nextNode(), root_1);
 
-                adaptor.addChild(root_1, stream_type_declare_id.next());
-                // src/main/resources/org/drools/lang/DRL.g:596:36: ( decl_metadata )*
+                adaptor.addChild(root_1, stream_type_declare_id.nextTree());
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:580:36: ( decl_metadata )*
                 while ( stream_decl_metadata.hasNext() ) {
-                    adaptor.addChild(root_1, stream_decl_metadata.next());
+                    adaptor.addChild(root_1, stream_decl_metadata.nextTree());
 
                 }
                 stream_decl_metadata.reset();
-                // src/main/resources/org/drools/lang/DRL.g:596:51: ( decl_field )*
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:580:51: ( decl_field )*
                 while ( stream_decl_field.hasNext() ) {
-                    adaptor.addChild(root_1, stream_decl_field.next());
+                    adaptor.addChild(root_1, stream_decl_field.nextTree());
 
                 }
                 stream_decl_field.reset();
-                adaptor.addChild(root_1, stream_END.next());
+                adaptor.addChild(root_1, stream_END.nextNode());
 
                 adaptor.addChild(root_0, root_1);
                 }
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
                paraphrases.pop(); 
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end type_declaration
+    // $ANTLR end "type_declaration"
 
     public static class type_declare_id_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start type_declare_id
-    // src/main/resources/org/drools/lang/DRL.g:599:1: type_declare_id : id= ID -> VT_TYPE_DECLARE_ID[$id] ;
-    public final type_declare_id_return type_declare_id() throws RecognitionException {
-        type_declare_id_return retval = new type_declare_id_return();
+    // $ANTLR start "type_declare_id"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:583:1: type_declare_id : id= ID -> VT_TYPE_DECLARE_ID[$id] ;
+    public final DRLParser.type_declare_id_return type_declare_id() throws RecognitionException {
+        DRLParser.type_declare_id_return retval = new DRLParser.type_declare_id_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -2736,72 +2682,74 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:600:2: (id= ID -> VT_TYPE_DECLARE_ID[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:600:5: id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:584:2: (id= ID -> VT_TYPE_DECLARE_ID[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:584:5: id= ID
             {
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_type_declare_id1178); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_type_declare_id1143); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.IDENTIFIER);
-              		setParaphrasesValue(DroolsParaphraseTypes.TYPE_DECLARE, id.getText());	
+              		setParaphrasesValue(DroolsParaphraseTypes.TYPE_DECLARE, (id!=null?id.getText():null));	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 602:72: -> VT_TYPE_DECLARE_ID[$id]
+            // 586:72: -> VT_TYPE_DECLARE_ID[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VT_TYPE_DECLARE_ID, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_TYPE_DECLARE_ID, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end type_declare_id
+    // $ANTLR end "type_declare_id"
 
     public static class decl_metadata_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start decl_metadata
-    // src/main/resources/org/drools/lang/DRL.g:605:1: decl_metadata : AT ID paren_chunk -> ^( AT ID paren_chunk ) ;
-    public final decl_metadata_return decl_metadata() throws RecognitionException {
-        decl_metadata_return retval = new decl_metadata_return();
+    // $ANTLR start "decl_metadata"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:589:1: decl_metadata : AT ID paren_chunk -> ^( AT ID paren_chunk ) ;
+    public final DRLParser.decl_metadata_return decl_metadata() throws RecognitionException {
+        DRLParser.decl_metadata_return retval = new DRLParser.decl_metadata_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token AT51=null;
         Token ID52=null;
-        paren_chunk_return paren_chunk53 = null;
+        DRLParser.paren_chunk_return paren_chunk53 = null;
 
 
         Object AT51_tree=null;
@@ -2810,96 +2758,98 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:606:2: ( AT ID paren_chunk -> ^( AT ID paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:606:4: AT ID paren_chunk
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:590:2: ( AT ID paren_chunk -> ^( AT ID paren_chunk ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:590:4: AT ID paren_chunk
             {
-            AT51=(Token)input.LT(1);
-            match(input,AT,FOLLOW_AT_in_decl_metadata1197); if (failed) return retval;
-            if ( backtracking==0 ) stream_AT.add(AT51);
+            AT51=(Token)match(input,AT,FOLLOW_AT_in_decl_metadata1162); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_AT.add(AT51);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(AT51, DroolsEditorType.SYMBOL);	
             }
-            ID52=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_decl_metadata1205); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID52);
+            ID52=(Token)match(input,ID,FOLLOW_ID_in_decl_metadata1170); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID52);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(ID52, DroolsEditorType.IDENTIFIER);	
             }
-            pushFollow(FOLLOW_paren_chunk_in_decl_metadata1212);
+            pushFollow(FOLLOW_paren_chunk_in_decl_metadata1177);
             paren_chunk53=paren_chunk();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_paren_chunk.add(paren_chunk53.getTree());
 
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk53.getTree());
+
+
             // AST REWRITE
             // elements: AT, ID, paren_chunk
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 611:3: -> ^( AT ID paren_chunk )
+            // 595:3: -> ^( AT ID paren_chunk )
             {
-                // src/main/resources/org/drools/lang/DRL.g:611:6: ^( AT ID paren_chunk )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:595:6: ^( AT ID paren_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(stream_AT.next(), root_1);
+                root_1 = (Object)adaptor.becomeRoot(stream_AT.nextNode(), root_1);
 
-                adaptor.addChild(root_1, stream_ID.next());
-                adaptor.addChild(root_1, stream_paren_chunk.next());
+                adaptor.addChild(root_1, stream_ID.nextNode());
+                adaptor.addChild(root_1, stream_paren_chunk.nextTree());
 
                 adaptor.addChild(root_0, root_1);
                 }
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end decl_metadata
+    // $ANTLR end "decl_metadata"
 
     public static class decl_field_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start decl_field
-    // src/main/resources/org/drools/lang/DRL.g:614:1: decl_field : ID ( decl_field_initialization )? COLON data_type ( decl_metadata )* -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* ) ;
-    public final decl_field_return decl_field() throws RecognitionException {
-        decl_field_return retval = new decl_field_return();
+    // $ANTLR start "decl_field"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:598:1: decl_field : ID ( decl_field_initialization )? COLON data_type ( decl_metadata )* -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* ) ;
+    public final DRLParser.decl_field_return decl_field() throws RecognitionException {
+        DRLParser.decl_field_return retval = new DRLParser.decl_field_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token ID54=null;
         Token COLON56=null;
-        decl_field_initialization_return decl_field_initialization55 = null;
+        DRLParser.decl_field_initialization_return decl_field_initialization55 = null;
 
-        data_type_return data_type57 = null;
+        DRLParser.data_type_return data_type57 = null;
 
-        decl_metadata_return decl_metadata58 = null;
+        DRLParser.decl_metadata_return decl_metadata58 = null;
 
 
         Object ID54_tree=null;
@@ -2910,17 +2860,16 @@
         RewriteRuleSubtreeStream stream_decl_field_initialization=new RewriteRuleSubtreeStream(adaptor,"rule decl_field_initialization");
         RewriteRuleSubtreeStream stream_data_type=new RewriteRuleSubtreeStream(adaptor,"rule data_type");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:615:2: ( ID ( decl_field_initialization )? COLON data_type ( decl_metadata )* -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* ) )
-            // src/main/resources/org/drools/lang/DRL.g:615:4: ID ( decl_field_initialization )? COLON data_type ( decl_metadata )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:599:2: ( ID ( decl_field_initialization )? COLON data_type ( decl_metadata )* -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:599:4: ID ( decl_field_initialization )? COLON data_type ( decl_metadata )*
             {
-            ID54=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_decl_field1235); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID54);
+            ID54=(Token)match(input,ID,FOLLOW_ID_in_decl_field1200); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID54);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(ID54, DroolsEditorType.IDENTIFIER);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:616:3: ( decl_field_initialization )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:600:3: ( decl_field_initialization )?
             int alt21=2;
             int LA21_0 = input.LA(1);
 
@@ -2929,32 +2878,33 @@
             }
             switch (alt21) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:616:3: decl_field_initialization
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:600:3: decl_field_initialization
                     {
-                    pushFollow(FOLLOW_decl_field_initialization_in_decl_field1241);
+                    pushFollow(FOLLOW_decl_field_initialization_in_decl_field1206);
                     decl_field_initialization55=decl_field_initialization();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_decl_field_initialization.add(decl_field_initialization55.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_decl_field_initialization.add(decl_field_initialization55.getTree());
+
                     }
                     break;
 
             }
 
-            COLON56=(Token)input.LT(1);
-            match(input,COLON,FOLLOW_COLON_in_decl_field1247); if (failed) return retval;
-            if ( backtracking==0 ) stream_COLON.add(COLON56);
+            COLON56=(Token)match(input,COLON,FOLLOW_COLON_in_decl_field1212); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_COLON.add(COLON56);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(COLON56, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_data_type_in_decl_field1253);
+            pushFollow(FOLLOW_data_type_in_decl_field1218);
             data_type57=data_type();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_data_type.add(data_type57.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:619:3: ( decl_metadata )*
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_data_type.add(data_type57.getTree());
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:603:3: ( decl_metadata )*
             loop22:
             do {
                 int alt22=2;
@@ -2967,14 +2917,15 @@
 
                 switch (alt22) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:619:3: decl_metadata
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:603:3: decl_metadata
             	    {
-            	    pushFollow(FOLLOW_decl_metadata_in_decl_field1257);
+            	    pushFollow(FOLLOW_decl_metadata_in_decl_field1222);
             	    decl_metadata58=decl_metadata();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_decl_metadata.add(decl_metadata58.getTree());
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_decl_metadata.add(decl_metadata58.getTree());
+
             	    }
             	    break;
 
@@ -2984,34 +2935,35 @@
             } while (true);
 
 
+
             // AST REWRITE
-            // elements: ID, decl_metadata, data_type, decl_field_initialization
+            // elements: data_type, ID, decl_metadata, decl_field_initialization
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 620:3: -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* )
+            // 604:3: -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* )
             {
-                // src/main/resources/org/drools/lang/DRL.g:620:6: ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:604:6: ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(stream_ID.next(), root_1);
+                root_1 = (Object)adaptor.becomeRoot(stream_ID.nextNode(), root_1);
 
-                // src/main/resources/org/drools/lang/DRL.g:620:11: ( decl_field_initialization )?
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:604:11: ( decl_field_initialization )?
                 if ( stream_decl_field_initialization.hasNext() ) {
-                    adaptor.addChild(root_1, stream_decl_field_initialization.next());
+                    adaptor.addChild(root_1, stream_decl_field_initialization.nextTree());
 
                 }
                 stream_decl_field_initialization.reset();
-                adaptor.addChild(root_1, stream_data_type.next());
-                // src/main/resources/org/drools/lang/DRL.g:620:48: ( decl_metadata )*
+                adaptor.addChild(root_1, stream_data_type.nextTree());
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:604:48: ( decl_metadata )*
                 while ( stream_decl_metadata.hasNext() ) {
-                    adaptor.addChild(root_1, stream_decl_metadata.next());
+                    adaptor.addChild(root_1, stream_decl_metadata.nextTree());
 
                 }
                 stream_decl_metadata.reset();
@@ -3021,119 +2973,124 @@
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end decl_field
+    // $ANTLR end "decl_field"
 
     public static class decl_field_initialization_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start decl_field_initialization
-    // src/main/resources/org/drools/lang/DRL.g:623:1: decl_field_initialization : EQUALS paren_chunk -> ^( EQUALS paren_chunk ) ;
-    public final decl_field_initialization_return decl_field_initialization() throws RecognitionException {
-        decl_field_initialization_return retval = new decl_field_initialization_return();
+    // $ANTLR start "decl_field_initialization"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:607:1: decl_field_initialization : EQUALS paren_chunk -> ^( EQUALS paren_chunk ) ;
+    public final DRLParser.decl_field_initialization_return decl_field_initialization() throws RecognitionException {
+        DRLParser.decl_field_initialization_return retval = new DRLParser.decl_field_initialization_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token EQUALS59=null;
-        paren_chunk_return paren_chunk60 = null;
+        DRLParser.paren_chunk_return paren_chunk60 = null;
 
 
         Object EQUALS59_tree=null;
         RewriteRuleTokenStream stream_EQUALS=new RewriteRuleTokenStream(adaptor,"token EQUALS");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:624:2: ( EQUALS paren_chunk -> ^( EQUALS paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:624:4: EQUALS paren_chunk
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:608:2: ( EQUALS paren_chunk -> ^( EQUALS paren_chunk ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:608:4: EQUALS paren_chunk
             {
-            EQUALS59=(Token)input.LT(1);
-            match(input,EQUALS,FOLLOW_EQUALS_in_decl_field_initialization1285); if (failed) return retval;
-            if ( backtracking==0 ) stream_EQUALS.add(EQUALS59);
+            EQUALS59=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_decl_field_initialization1250); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_EQUALS.add(EQUALS59);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(EQUALS59, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_paren_chunk_in_decl_field_initialization1291);
+            pushFollow(FOLLOW_paren_chunk_in_decl_field_initialization1256);
             paren_chunk60=paren_chunk();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_paren_chunk.add(paren_chunk60.getTree());
 
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk60.getTree());
+
+
             // AST REWRITE
-            // elements: paren_chunk, EQUALS
+            // elements: EQUALS, paren_chunk
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 626:2: -> ^( EQUALS paren_chunk )
+            // 610:2: -> ^( EQUALS paren_chunk )
             {
-                // src/main/resources/org/drools/lang/DRL.g:626:5: ^( EQUALS paren_chunk )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:610:5: ^( EQUALS paren_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(stream_EQUALS.next(), root_1);
+                root_1 = (Object)adaptor.becomeRoot(stream_EQUALS.nextNode(), root_1);
 
-                adaptor.addChild(root_1, stream_paren_chunk.next());
+                adaptor.addChild(root_1, stream_paren_chunk.nextTree());
 
                 adaptor.addChild(root_0, root_1);
                 }
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end decl_field_initialization
+    // $ANTLR end "decl_field_initialization"
 
     public static class template_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start template
-    // src/main/resources/org/drools/lang/DRL.g:629:1: template : template_key template_id (semi1= SEMICOLON )? ( template_slot )+ END (semi2= SEMICOLON )? -> ^( template_key template_id ( template_slot )+ END ) ;
-    public final template_return template() throws RecognitionException {
-        template_return retval = new template_return();
+    // $ANTLR start "template"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:613:1: template : template_key template_id (semi1= SEMICOLON )? ( template_slot )+ END (semi2= SEMICOLON )? -> ^( template_key template_id ( template_slot )+ END ) ;
+    public final DRLParser.template_return template() throws RecognitionException {
+        DRLParser.template_return retval = new DRLParser.template_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -3141,11 +3098,11 @@
         Token semi1=null;
         Token semi2=null;
         Token END64=null;
-        template_key_return template_key61 = null;
+        DRLParser.template_key_return template_key61 = null;
 
-        template_id_return template_id62 = null;
+        DRLParser.template_id_return template_id62 = null;
 
-        template_slot_return template_slot63 = null;
+        DRLParser.template_slot_return template_slot63 = null;
 
 
         Object semi1_tree=null;
@@ -3156,25 +3113,24 @@
         RewriteRuleSubtreeStream stream_template_id=new RewriteRuleSubtreeStream(adaptor,"rule template_id");
         RewriteRuleSubtreeStream stream_template_slot=new RewriteRuleSubtreeStream(adaptor,"rule template_slot");
         RewriteRuleSubtreeStream stream_template_key=new RewriteRuleSubtreeStream(adaptor,"rule template_key");
-         pushParaphrases(DroolsParaphraseTypes.TEMPLATE); 
+         pushParaphrases(DroolsParaphraseTypes.TEMPLATE);  if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.TEMPLATE); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:632:2: ( template_key template_id (semi1= SEMICOLON )? ( template_slot )+ END (semi2= SEMICOLON )? -> ^( template_key template_id ( template_slot )+ END ) )
-            // src/main/resources/org/drools/lang/DRL.g:633:2: template_key template_id (semi1= SEMICOLON )? ( template_slot )+ END (semi2= SEMICOLON )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:616:2: ( template_key template_id (semi1= SEMICOLON )? ( template_slot )+ END (semi2= SEMICOLON )? -> ^( template_key template_id ( template_slot )+ END ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:616:4: template_key template_id (semi1= SEMICOLON )? ( template_slot )+ END (semi2= SEMICOLON )?
             {
-            if ( backtracking==0 ) {
-              	beginSentence(DroolsSentenceType.TEMPLATE);	
-            }
-            pushFollow(FOLLOW_template_key_in_template1328);
+            pushFollow(FOLLOW_template_key_in_template1287);
             template_key61=template_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_template_key.add(template_key61.getTree());
-            pushFollow(FOLLOW_template_id_in_template1330);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_template_key.add(template_key61.getTree());
+            pushFollow(FOLLOW_template_id_in_template1289);
             template_id62=template_id();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_template_id.add(template_id62.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:635:8: (semi1= SEMICOLON )?
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_template_id.add(template_id62.getTree());
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:617:8: (semi1= SEMICOLON )?
             int alt23=2;
             int LA23_0 = input.LA(1);
 
@@ -3183,11 +3139,10 @@
             }
             switch (alt23) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:635:8: semi1= SEMICOLON
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:617:8: semi1= SEMICOLON
                     {
-                    semi1=(Token)input.LT(1);
-                    match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1337); if (failed) return retval;
-                    if ( backtracking==0 ) stream_SEMICOLON.add(semi1);
+                    semi1=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1296); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SEMICOLON.add(semi1);
 
 
                     }
@@ -3195,10 +3150,10 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(semi1, DroolsEditorType.SYMBOL);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:637:3: ( template_slot )+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:619:3: ( template_slot )+
             int cnt24=0;
             loop24:
             do {
@@ -3212,20 +3167,21 @@
 
                 switch (alt24) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:637:3: template_slot
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:619:3: template_slot
             	    {
-            	    pushFollow(FOLLOW_template_slot_in_template1345);
+            	    pushFollow(FOLLOW_template_slot_in_template1304);
             	    template_slot63=template_slot();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_template_slot.add(template_slot63.getTree());
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_template_slot.add(template_slot63.getTree());
+
             	    }
             	    break;
 
             	default :
             	    if ( cnt24 >= 1 ) break loop24;
-            	    if (backtracking>0) {failed=true; return retval;}
+            	    if (state.backtracking>0) {state.failed=true; return retval;}
                         EarlyExitException eee =
                             new EarlyExitException(24, input);
                         throw eee;
@@ -3233,11 +3189,10 @@
                 cnt24++;
             } while (true);
 
-            END64=(Token)input.LT(1);
-            match(input,END,FOLLOW_END_in_template1350); if (failed) return retval;
-            if ( backtracking==0 ) stream_END.add(END64);
+            END64=(Token)match(input,END,FOLLOW_END_in_template1309); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_END.add(END64);
 
-            // src/main/resources/org/drools/lang/DRL.g:638:12: (semi2= SEMICOLON )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:620:12: (semi2= SEMICOLON )?
             int alt25=2;
             int LA25_0 = input.LA(1);
 
@@ -3246,11 +3201,10 @@
             }
             switch (alt25) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:638:12: semi2= SEMICOLON
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:620:12: semi2= SEMICOLON
                     {
-                    semi2=(Token)input.LT(1);
-                    match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1354); if (failed) return retval;
-                    if ( backtracking==0 ) stream_SEMICOLON.add(semi2);
+                    semi2=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1313); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SEMICOLON.add(semi2);
 
 
                     }
@@ -3258,78 +3212,81 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(END64, DroolsEditorType.KEYWORD);
               		emit(semi2, DroolsEditorType.SYMBOL);	
             }
 
+
             // AST REWRITE
-            // elements: END, template_key, template_id, template_slot
+            // elements: template_slot, template_id, END, template_key
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 641:3: -> ^( template_key template_id ( template_slot )+ END )
+            // 623:3: -> ^( template_key template_id ( template_slot )+ END )
             {
-                // src/main/resources/org/drools/lang/DRL.g:641:6: ^( template_key template_id ( template_slot )+ END )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:623:6: ^( template_key template_id ( template_slot )+ END )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_template_key.nextNode(), root_1);
 
-                adaptor.addChild(root_1, stream_template_id.next());
+                adaptor.addChild(root_1, stream_template_id.nextTree());
                 if ( !(stream_template_slot.hasNext()) ) {
                     throw new RewriteEarlyExitException();
                 }
                 while ( stream_template_slot.hasNext() ) {
-                    adaptor.addChild(root_1, stream_template_slot.next());
+                    adaptor.addChild(root_1, stream_template_slot.nextTree());
 
                 }
                 stream_template_slot.reset();
-                adaptor.addChild(root_1, stream_END.next());
+                adaptor.addChild(root_1, stream_END.nextNode());
 
                 adaptor.addChild(root_0, root_1);
                 }
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
                paraphrases.pop(); 
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end template
+    // $ANTLR end "template"
 
     public static class template_id_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start template_id
-    // src/main/resources/org/drools/lang/DRL.g:644:1: template_id : (id= ID -> VT_TEMPLATE_ID[$id] | id= STRING -> VT_TEMPLATE_ID[$id] );
-    public final template_id_return template_id() throws RecognitionException {
-        template_id_return retval = new template_id_return();
+    // $ANTLR start "template_id"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:626:1: template_id : (id= ID -> VT_TEMPLATE_ID[$id] | id= STRING -> VT_TEMPLATE_ID[$id] );
+    public final DRLParser.template_id_return template_id() throws RecognitionException {
+        DRLParser.template_id_return retval = new DRLParser.template_id_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -3341,7 +3298,7 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:645:2: (id= ID -> VT_TEMPLATE_ID[$id] | id= STRING -> VT_TEMPLATE_ID[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:627:2: (id= ID -> VT_TEMPLATE_ID[$id] | id= STRING -> VT_TEMPLATE_ID[$id] )
             int alt26=2;
             int LA26_0 = input.LA(1);
 
@@ -3352,115 +3309,116 @@
                 alt26=2;
             }
             else {
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("644:1: template_id : (id= ID -> VT_TEMPLATE_ID[$id] | id= STRING -> VT_TEMPLATE_ID[$id] );", 26, 0, input);
+                    new NoViableAltException("", 26, 0, input);
 
                 throw nvae;
             }
             switch (alt26) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:645:5: id= ID
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:627:5: id= ID
                     {
-                    id=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_template_id1387); if (failed) return retval;
-                    if ( backtracking==0 ) stream_ID.add(id);
+                    id=(Token)match(input,ID,FOLLOW_ID_in_template_id1346); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_ID.add(id);
 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(id, DroolsEditorType.IDENTIFIER);
-                      		setParaphrasesValue(DroolsParaphraseTypes.TEMPLATE, id.getText());	
+                      		setParaphrasesValue(DroolsParaphraseTypes.TEMPLATE, (id!=null?id.getText():null));	
                     }
 
+
                     // AST REWRITE
                     // elements: 
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
                     // rule list labels: 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                     retval.tree = root_0;
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 647:68: -> VT_TEMPLATE_ID[$id]
+                    // 629:68: -> VT_TEMPLATE_ID[$id]
                     {
-                        adaptor.addChild(root_0, adaptor.create(VT_TEMPLATE_ID, id));
+                        adaptor.addChild(root_0, (Object)adaptor.create(VT_TEMPLATE_ID, id));
 
                     }
 
+                    retval.tree = root_0;}
                     }
-
-                    }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:648:5: id= STRING
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:630:5: id= STRING
                     {
-                    id=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_template_id1403); if (failed) return retval;
-                    if ( backtracking==0 ) stream_STRING.add(id);
+                    id=(Token)match(input,STRING,FOLLOW_STRING_in_template_id1362); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_STRING.add(id);
 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(id, DroolsEditorType.IDENTIFIER);
-                      		setParaphrasesValue(DroolsParaphraseTypes.TEMPLATE, id.getText());	
+                      		setParaphrasesValue(DroolsParaphraseTypes.TEMPLATE, (id!=null?id.getText():null));	
                     }
 
+
                     // AST REWRITE
                     // elements: 
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
                     // rule list labels: 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                     retval.tree = root_0;
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 650:68: -> VT_TEMPLATE_ID[$id]
+                    // 632:68: -> VT_TEMPLATE_ID[$id]
                     {
-                        adaptor.addChild(root_0, adaptor.create(VT_TEMPLATE_ID, id));
+                        adaptor.addChild(root_0, (Object)adaptor.create(VT_TEMPLATE_ID, id));
 
                     }
 
+                    retval.tree = root_0;}
                     }
-
-                    }
                     break;
 
             }
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end template_id
+    // $ANTLR end "template_id"
 
     public static class template_slot_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start template_slot
-    // src/main/resources/org/drools/lang/DRL.g:653:1: template_slot : data_type slot_id ( SEMICOLON )? -> ^( VT_SLOT data_type slot_id ) ;
-    public final template_slot_return template_slot() throws RecognitionException {
-        template_slot_return retval = new template_slot_return();
+    // $ANTLR start "template_slot"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:635:1: template_slot : data_type slot_id ( SEMICOLON )? -> ^( VT_SLOT data_type slot_id ) ;
+    public final DRLParser.template_slot_return template_slot() throws RecognitionException {
+        DRLParser.template_slot_return retval = new DRLParser.template_slot_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token SEMICOLON67=null;
-        data_type_return data_type65 = null;
+        DRLParser.data_type_return data_type65 = null;
 
-        slot_id_return slot_id66 = null;
+        DRLParser.slot_id_return slot_id66 = null;
 
 
         Object SEMICOLON67_tree=null;
@@ -3468,20 +3426,22 @@
         RewriteRuleSubtreeStream stream_slot_id=new RewriteRuleSubtreeStream(adaptor,"rule slot_id");
         RewriteRuleSubtreeStream stream_data_type=new RewriteRuleSubtreeStream(adaptor,"rule data_type");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:654:2: ( data_type slot_id ( SEMICOLON )? -> ^( VT_SLOT data_type slot_id ) )
-            // src/main/resources/org/drools/lang/DRL.g:654:5: data_type slot_id ( SEMICOLON )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:636:2: ( data_type slot_id ( SEMICOLON )? -> ^( VT_SLOT data_type slot_id ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:636:5: data_type slot_id ( SEMICOLON )?
             {
-            pushFollow(FOLLOW_data_type_in_template_slot1423);
+            pushFollow(FOLLOW_data_type_in_template_slot1382);
             data_type65=data_type();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_data_type.add(data_type65.getTree());
-            pushFollow(FOLLOW_slot_id_in_template_slot1425);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_data_type.add(data_type65.getTree());
+            pushFollow(FOLLOW_slot_id_in_template_slot1384);
             slot_id66=slot_id();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_slot_id.add(slot_id66.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:654:23: ( SEMICOLON )?
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_slot_id.add(slot_id66.getTree());
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:636:23: ( SEMICOLON )?
             int alt27=2;
             int LA27_0 = input.LA(1);
 
@@ -3490,11 +3450,10 @@
             }
             switch (alt27) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:654:23: SEMICOLON
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:636:23: SEMICOLON
                     {
-                    SEMICOLON67=(Token)input.LT(1);
-                    match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template_slot1427); if (failed) return retval;
-                    if ( backtracking==0 ) stream_SEMICOLON.add(SEMICOLON67);
+                    SEMICOLON67=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template_slot1386); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON67);
 
 
                     }
@@ -3502,66 +3461,69 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(SEMICOLON67, DroolsEditorType.SYMBOL);	
             }
 
+
             // AST REWRITE
             // elements: slot_id, data_type
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 656:3: -> ^( VT_SLOT data_type slot_id )
+            // 638:3: -> ^( VT_SLOT data_type slot_id )
             {
-                // src/main/resources/org/drools/lang/DRL.g:656:6: ^( VT_SLOT data_type slot_id )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:638:6: ^( VT_SLOT data_type slot_id )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_SLOT, "VT_SLOT"), root_1);
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_SLOT, "VT_SLOT"), root_1);
 
-                adaptor.addChild(root_1, stream_data_type.next());
-                adaptor.addChild(root_1, stream_slot_id.next());
+                adaptor.addChild(root_1, stream_data_type.nextTree());
+                adaptor.addChild(root_1, stream_slot_id.nextTree());
 
                 adaptor.addChild(root_0, root_1);
                 }
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end template_slot
+    // $ANTLR end "template_slot"
 
     public static class slot_id_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start slot_id
-    // src/main/resources/org/drools/lang/DRL.g:659:1: slot_id : id= ID -> VT_SLOT_ID[$id] ;
-    public final slot_id_return slot_id() throws RecognitionException {
-        slot_id_return retval = new slot_id_return();
+    // $ANTLR start "slot_id"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:641:1: slot_id : id= ID -> VT_SLOT_ID[$id] ;
+    public final DRLParser.slot_id_return slot_id() throws RecognitionException {
+        DRLParser.slot_id_return retval = new DRLParser.slot_id_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -3572,83 +3534,85 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:660:2: (id= ID -> VT_SLOT_ID[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:660:4: id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:642:2: (id= ID -> VT_SLOT_ID[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:642:4: id= ID
             {
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_slot_id1456); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_slot_id1415); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.IDENTIFIER);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 662:3: -> VT_SLOT_ID[$id]
+            // 644:3: -> VT_SLOT_ID[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VT_SLOT_ID, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_SLOT_ID, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end slot_id
+    // $ANTLR end "slot_id"
 
     public static class rule_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start rule
-    // src/main/resources/org/drools/lang/DRL.g:665:1: rule : rule_key rule_id ( extend_key rule_id )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk -> ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk ) ;
-    public final rule_return rule() throws RecognitionException {
-        rule_return retval = new rule_return();
+    // $ANTLR start "rule"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:647:1: rule : rule_key rule_id ( extend_key rule_id )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk -> ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk ) ;
+    public final DRLParser.rule_return rule() throws RecognitionException {
+        DRLParser.rule_return retval = new DRLParser.rule_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        rule_key_return rule_key68 = null;
+        DRLParser.rule_key_return rule_key68 = null;
 
-        rule_id_return rule_id69 = null;
+        DRLParser.rule_id_return rule_id69 = null;
 
-        extend_key_return extend_key70 = null;
+        DRLParser.extend_key_return extend_key70 = null;
 
-        rule_id_return rule_id71 = null;
+        DRLParser.rule_id_return rule_id71 = null;
 
-        decl_metadata_return decl_metadata72 = null;
+        DRLParser.decl_metadata_return decl_metadata72 = null;
 
-        rule_attributes_return rule_attributes73 = null;
+        DRLParser.rule_attributes_return rule_attributes73 = null;
 
-        when_part_return when_part74 = null;
+        DRLParser.when_part_return when_part74 = null;
 
-        rhs_chunk_return rhs_chunk75 = null;
+        DRLParser.rhs_chunk_return rhs_chunk75 = null;
 
 
         RewriteRuleSubtreeStream stream_rule_key=new RewriteRuleSubtreeStream(adaptor,"rule rule_key");
@@ -3658,66 +3622,52 @@
         RewriteRuleSubtreeStream stream_rhs_chunk=new RewriteRuleSubtreeStream(adaptor,"rule rhs_chunk");
         RewriteRuleSubtreeStream stream_decl_metadata=new RewriteRuleSubtreeStream(adaptor,"rule decl_metadata");
         RewriteRuleSubtreeStream stream_extend_key=new RewriteRuleSubtreeStream(adaptor,"rule extend_key");
-         pushParaphrases(DroolsParaphraseTypes.RULE); 
+         pushParaphrases(DroolsParaphraseTypes.RULE); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.RULE); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:668:2: ( rule_key rule_id ( extend_key rule_id )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk -> ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:669:2: rule_key rule_id ( extend_key rule_id )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:650:2: ( rule_key rule_id ( extend_key rule_id )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk -> ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:650:4: rule_key rule_id ( extend_key rule_id )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk
             {
-            if ( backtracking==0 ) {
-              	beginSentence(DroolsSentenceType.RULE);	
-            }
-            pushFollow(FOLLOW_rule_key_in_rule1493);
+            pushFollow(FOLLOW_rule_key_in_rule1447);
             rule_key68=rule_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_rule_key.add(rule_key68.getTree());
-            pushFollow(FOLLOW_rule_id_in_rule1495);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_rule_key.add(rule_key68.getTree());
+            pushFollow(FOLLOW_rule_id_in_rule1449);
             rule_id69=rule_id();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_rule_id.add(rule_id69.getTree());
-            if ( backtracking==0 ) {
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_rule_id.add(rule_id69.getTree());
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:672:3: ( extend_key rule_id )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:652:3: ( extend_key rule_id )?
             int alt28=2;
-            int LA28_0 = input.LA(1);
-
-            if ( (LA28_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.EXTEND))||(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))||(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))||(validateIdentifierKey(DroolsS!
 oftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))))) {
-                int LA28_1 = input.LA(2);
-
-                if ( (LA28_1==STRING) && (((validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(DroolsSoftKeywords.EXTEND))))) {
-                    int LA28_5 = input.LA(3);
-
-                    if ( ((validateIdentifierKey(DroolsSoftKeywords.EXTEND))) ) {
-                        alt28=1;
-                    }
-                }
-                else if ( (LA28_1==ID) && ((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))) {
-                    alt28=1;
-                }
-            }
+            alt28 = dfa28.predict(input);
             switch (alt28) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:672:4: extend_key rule_id
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:652:4: extend_key rule_id
                     {
-                    pushFollow(FOLLOW_extend_key_in_rule1504);
+                    pushFollow(FOLLOW_extend_key_in_rule1458);
                     extend_key70=extend_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_extend_key.add(extend_key70.getTree());
-                    pushFollow(FOLLOW_rule_id_in_rule1506);
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_extend_key.add(extend_key70.getTree());
+                    pushFollow(FOLLOW_rule_id_in_rule1460);
                     rule_id71=rule_id();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_rule_id.add(rule_id71.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_rule_id.add(rule_id71.getTree());
+
                     }
                     break;
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:672:25: ( decl_metadata )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:652:25: ( decl_metadata )*
             loop29:
             do {
                 int alt29=2;
@@ -3730,14 +3680,15 @@
 
                 switch (alt29) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:672:25: decl_metadata
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:652:25: decl_metadata
             	    {
-            	    pushFollow(FOLLOW_decl_metadata_in_rule1510);
+            	    pushFollow(FOLLOW_decl_metadata_in_rule1464);
             	    decl_metadata72=decl_metadata();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_decl_metadata.add(decl_metadata72.getTree());
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_decl_metadata.add(decl_metadata72.getTree());
+
             	    }
             	    break;
 
@@ -3746,29 +3697,30 @@
                 }
             } while (true);
 
-            // src/main/resources/org/drools/lang/DRL.g:672:40: ( rule_attributes )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:652:40: ( rule_attributes )?
             int alt30=2;
             int LA30_0 = input.LA(1);
 
-            if ( (LA30_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))||(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(Drool!
 sSoftKeywords.ENABLED))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))))) {
+            if ( (LA30_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validate!
 IdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))))) {
                 alt30=1;
             }
             switch (alt30) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:672:40: rule_attributes
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:652:40: rule_attributes
                     {
-                    pushFollow(FOLLOW_rule_attributes_in_rule1513);
+                    pushFollow(FOLLOW_rule_attributes_in_rule1467);
                     rule_attributes73=rule_attributes();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_rule_attributes.add(rule_attributes73.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_rule_attributes.add(rule_attributes73.getTree());
+
                     }
                     break;
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:672:57: ( when_part )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:652:57: ( when_part )?
             int alt31=2;
             int LA31_0 = input.LA(1);
 
@@ -3777,124 +3729,129 @@
             }
             switch (alt31) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:672:57: when_part
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:652:57: when_part
                     {
-                    pushFollow(FOLLOW_when_part_in_rule1516);
+                    pushFollow(FOLLOW_when_part_in_rule1470);
                     when_part74=when_part();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_when_part.add(when_part74.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_when_part.add(when_part74.getTree());
+
                     }
                     break;
 
             }
 
-            pushFollow(FOLLOW_rhs_chunk_in_rule1519);
+            pushFollow(FOLLOW_rhs_chunk_in_rule1473);
             rhs_chunk75=rhs_chunk();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_rhs_chunk.add(rhs_chunk75.getTree());
 
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_rhs_chunk.add(rhs_chunk75.getTree());
+
+
             // AST REWRITE
-            // elements: rule_attributes, when_part, rule_id, extend_key, rule_key, rule_id, rhs_chunk, decl_metadata
+            // elements: extend_key, rule_id, rhs_chunk, rule_attributes, rule_id, rule_key, decl_metadata, when_part
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 673:3: -> ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk )
+            // 653:3: -> ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk )
             {
-                // src/main/resources/org/drools/lang/DRL.g:673:6: ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:653:6: ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_rule_key.nextNode(), root_1);
 
-                adaptor.addChild(root_1, stream_rule_id.next());
-                // src/main/resources/org/drools/lang/DRL.g:673:25: ( ^( extend_key rule_id ) )?
-                if ( stream_rule_id.hasNext()||stream_extend_key.hasNext() ) {
-                    // src/main/resources/org/drools/lang/DRL.g:673:25: ^( extend_key rule_id )
+                adaptor.addChild(root_1, stream_rule_id.nextTree());
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:653:25: ( ^( extend_key rule_id ) )?
+                if ( stream_extend_key.hasNext()||stream_rule_id.hasNext() ) {
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:653:25: ^( extend_key rule_id )
                     {
                     Object root_2 = (Object)adaptor.nil();
                     root_2 = (Object)adaptor.becomeRoot(stream_extend_key.nextNode(), root_2);
 
-                    adaptor.addChild(root_2, stream_rule_id.next());
+                    adaptor.addChild(root_2, stream_rule_id.nextTree());
 
                     adaptor.addChild(root_1, root_2);
                     }
 
                 }
-                stream_rule_id.reset();
                 stream_extend_key.reset();
-                // src/main/resources/org/drools/lang/DRL.g:673:48: ( decl_metadata )*
+                stream_rule_id.reset();
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:653:48: ( decl_metadata )*
                 while ( stream_decl_metadata.hasNext() ) {
-                    adaptor.addChild(root_1, stream_decl_metadata.next());
+                    adaptor.addChild(root_1, stream_decl_metadata.nextTree());
 
                 }
                 stream_decl_metadata.reset();
-                // src/main/resources/org/drools/lang/DRL.g:673:63: ( rule_attributes )?
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:653:63: ( rule_attributes )?
                 if ( stream_rule_attributes.hasNext() ) {
-                    adaptor.addChild(root_1, stream_rule_attributes.next());
+                    adaptor.addChild(root_1, stream_rule_attributes.nextTree());
 
                 }
                 stream_rule_attributes.reset();
-                // src/main/resources/org/drools/lang/DRL.g:673:80: ( when_part )?
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:653:80: ( when_part )?
                 if ( stream_when_part.hasNext() ) {
-                    adaptor.addChild(root_1, stream_when_part.next());
+                    adaptor.addChild(root_1, stream_when_part.nextTree());
 
                 }
                 stream_when_part.reset();
-                adaptor.addChild(root_1, stream_rhs_chunk.next());
+                adaptor.addChild(root_1, stream_rhs_chunk.nextTree());
 
                 adaptor.addChild(root_0, root_1);
                 }
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
                paraphrases.pop(); 
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end rule
+    // $ANTLR end "rule"
 
     public static class when_part_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start when_part
-    // src/main/resources/org/drools/lang/DRL.g:676:1: when_part : WHEN ( COLON )? normal_lhs_block -> WHEN normal_lhs_block ;
-    public final when_part_return when_part() throws RecognitionException {
-        when_part_return retval = new when_part_return();
+    // $ANTLR start "when_part"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:656:1: when_part : WHEN ( COLON )? normal_lhs_block -> WHEN normal_lhs_block ;
+    public final DRLParser.when_part_return when_part() throws RecognitionException {
+        DRLParser.when_part_return retval = new DRLParser.when_part_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token WHEN76=null;
         Token COLON77=null;
-        normal_lhs_block_return normal_lhs_block78 = null;
+        DRLParser.normal_lhs_block_return normal_lhs_block78 = null;
 
 
         Object WHEN76_tree=null;
@@ -3903,17 +3860,16 @@
         RewriteRuleTokenStream stream_WHEN=new RewriteRuleTokenStream(adaptor,"token WHEN");
         RewriteRuleSubtreeStream stream_normal_lhs_block=new RewriteRuleSubtreeStream(adaptor,"rule normal_lhs_block");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:677:2: ( WHEN ( COLON )? normal_lhs_block -> WHEN normal_lhs_block )
-            // src/main/resources/org/drools/lang/DRL.g:677:5: WHEN ( COLON )? normal_lhs_block
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:657:2: ( WHEN ( COLON )? normal_lhs_block -> WHEN normal_lhs_block )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:657:5: WHEN ( COLON )? normal_lhs_block
             {
-            WHEN76=(Token)input.LT(1);
-            match(input,WHEN,FOLLOW_WHEN_in_when_part1559); if (failed) return retval;
-            if ( backtracking==0 ) stream_WHEN.add(WHEN76);
+            WHEN76=(Token)match(input,WHEN,FOLLOW_WHEN_in_when_part1513); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_WHEN.add(WHEN76);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(WHEN76, DroolsEditorType.KEYWORD);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:678:3: ( COLON )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:658:3: ( COLON )?
             int alt32=2;
             int LA32_0 = input.LA(1);
 
@@ -3922,11 +3878,10 @@
             }
             switch (alt32) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:678:3: COLON
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:658:3: COLON
                     {
-                    COLON77=(Token)input.LT(1);
-                    match(input,COLON,FOLLOW_COLON_in_when_part1565); if (failed) return retval;
-                    if ( backtracking==0 ) stream_COLON.add(COLON77);
+                    COLON77=(Token)match(input,COLON,FOLLOW_COLON_in_when_part1519); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_COLON.add(COLON77);
 
 
                     }
@@ -3934,66 +3889,70 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(COLON77, DroolsEditorType.SYMBOL);	
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
             }
-            pushFollow(FOLLOW_normal_lhs_block_in_when_part1575);
+            pushFollow(FOLLOW_normal_lhs_block_in_when_part1529);
             normal_lhs_block78=normal_lhs_block();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_normal_lhs_block.add(normal_lhs_block78.getTree());
 
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_normal_lhs_block.add(normal_lhs_block78.getTree());
+
+
             // AST REWRITE
             // elements: WHEN, normal_lhs_block
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 681:2: -> WHEN normal_lhs_block
+            // 661:2: -> WHEN normal_lhs_block
             {
-                adaptor.addChild(root_0, stream_WHEN.next());
-                adaptor.addChild(root_0, stream_normal_lhs_block.next());
+                adaptor.addChild(root_0, stream_WHEN.nextNode());
+                adaptor.addChild(root_0, stream_normal_lhs_block.nextTree());
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end when_part
+    // $ANTLR end "when_part"
 
     public static class rule_id_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start rule_id
-    // src/main/resources/org/drools/lang/DRL.g:684:1: rule_id : (id= ID -> VT_RULE_ID[$id] | id= STRING -> VT_RULE_ID[$id] );
-    public final rule_id_return rule_id() throws RecognitionException {
-        rule_id_return retval = new rule_id_return();
+    // $ANTLR start "rule_id"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:664:1: rule_id : (id= ID -> VT_RULE_ID[$id] | id= STRING -> VT_RULE_ID[$id] );
+    public final DRLParser.rule_id_return rule_id() throws RecognitionException {
+        DRLParser.rule_id_return retval = new DRLParser.rule_id_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -4005,7 +3964,7 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:685:2: (id= ID -> VT_RULE_ID[$id] | id= STRING -> VT_RULE_ID[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:665:2: (id= ID -> VT_RULE_ID[$id] | id= STRING -> VT_RULE_ID[$id] )
             int alt33=2;
             int LA33_0 = input.LA(1);
 
@@ -4016,118 +3975,119 @@
                 alt33=2;
             }
             else {
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("684:1: rule_id : (id= ID -> VT_RULE_ID[$id] | id= STRING -> VT_RULE_ID[$id] );", 33, 0, input);
+                    new NoViableAltException("", 33, 0, input);
 
                 throw nvae;
             }
             switch (alt33) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:685:5: id= ID
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:665:5: id= ID
                     {
-                    id=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_rule_id1596); if (failed) return retval;
-                    if ( backtracking==0 ) stream_ID.add(id);
+                    id=(Token)match(input,ID,FOLLOW_ID_in_rule_id1550); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_ID.add(id);
 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(id, DroolsEditorType.IDENTIFIER);
-                      		setParaphrasesValue(DroolsParaphraseTypes.RULE, id.getText());	
+                      		setParaphrasesValue(DroolsParaphraseTypes.RULE, (id!=null?id.getText():null));	
                     }
 
+
                     // AST REWRITE
                     // elements: 
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
                     // rule list labels: 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                     retval.tree = root_0;
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 687:64: -> VT_RULE_ID[$id]
+                    // 667:64: -> VT_RULE_ID[$id]
                     {
-                        adaptor.addChild(root_0, adaptor.create(VT_RULE_ID, id));
+                        adaptor.addChild(root_0, (Object)adaptor.create(VT_RULE_ID, id));
 
                     }
 
+                    retval.tree = root_0;}
                     }
-
-                    }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:688:5: id= STRING
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:668:5: id= STRING
                     {
-                    id=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_rule_id1612); if (failed) return retval;
-                    if ( backtracking==0 ) stream_STRING.add(id);
+                    id=(Token)match(input,STRING,FOLLOW_STRING_in_rule_id1566); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_STRING.add(id);
 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(id, DroolsEditorType.IDENTIFIER);
-                      		setParaphrasesValue(DroolsParaphraseTypes.RULE, id.getText());	
+                      		setParaphrasesValue(DroolsParaphraseTypes.RULE, (id!=null?id.getText():null));	
                     }
 
+
                     // AST REWRITE
                     // elements: 
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
                     // rule list labels: 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                     retval.tree = root_0;
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 690:64: -> VT_RULE_ID[$id]
+                    // 670:64: -> VT_RULE_ID[$id]
                     {
-                        adaptor.addChild(root_0, adaptor.create(VT_RULE_ID, id));
+                        adaptor.addChild(root_0, (Object)adaptor.create(VT_RULE_ID, id));
 
                     }
 
+                    retval.tree = root_0;}
                     }
-
-                    }
                     break;
 
             }
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end rule_id
+    // $ANTLR end "rule_id"
 
     public static class rule_attributes_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start rule_attributes
-    // src/main/resources/org/drools/lang/DRL.g:693:1: rule_attributes : ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )* -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ ) ;
-    public final rule_attributes_return rule_attributes() throws RecognitionException {
-        rule_attributes_return retval = new rule_attributes_return();
+    // $ANTLR start "rule_attributes"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:673:1: rule_attributes : ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )* -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ ) ;
+    public final DRLParser.rule_attributes_return rule_attributes() throws RecognitionException {
+        DRLParser.rule_attributes_return retval = new DRLParser.rule_attributes_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token COLON80=null;
         Token COMMA82=null;
-        rule_attribute_return attr = null;
+        DRLParser.rule_attribute_return attr = null;
 
-        attributes_key_return attributes_key79 = null;
+        DRLParser.attributes_key_return attributes_key79 = null;
 
-        rule_attribute_return rule_attribute81 = null;
+        DRLParser.rule_attribute_return rule_attribute81 = null;
 
 
         Object COLON80_tree=null;
@@ -4137,34 +4097,34 @@
         RewriteRuleSubtreeStream stream_attributes_key=new RewriteRuleSubtreeStream(adaptor,"rule attributes_key");
         RewriteRuleSubtreeStream stream_rule_attribute=new RewriteRuleSubtreeStream(adaptor,"rule rule_attribute");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:694:2: ( ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )* -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ ) )
-            // src/main/resources/org/drools/lang/DRL.g:694:4: ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:674:2: ( ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )* -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:674:4: ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )*
             {
-            // src/main/resources/org/drools/lang/DRL.g:694:4: ( attributes_key COLON )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:674:4: ( attributes_key COLON )?
             int alt34=2;
             int LA34_0 = input.LA(1);
 
-            if ( (LA34_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))||(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(Drool!
 sSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))||(validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))))) {
+            if ( (LA34_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validate!
 IdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))))) {
                 int LA34_1 = input.LA(2);
 
-                if ( (LA34_1==COLON) && ((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES)))) {
+                if ( (LA34_1==COLON) && (((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))))) {
                     alt34=1;
                 }
             }
             switch (alt34) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:694:6: attributes_key COLON
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:674:6: attributes_key COLON
                     {
-                    pushFollow(FOLLOW_attributes_key_in_rule_attributes1633);
+                    pushFollow(FOLLOW_attributes_key_in_rule_attributes1587);
                     attributes_key79=attributes_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_attributes_key.add(attributes_key79.getTree());
-                    COLON80=(Token)input.LT(1);
-                    match(input,COLON,FOLLOW_COLON_in_rule_attributes1635); if (failed) return retval;
-                    if ( backtracking==0 ) stream_COLON.add(COLON80);
 
-                    if ( backtracking==0 ) {
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_attributes_key.add(attributes_key79.getTree());
+                    COLON80=(Token)match(input,COLON,FOLLOW_COLON_in_rule_attributes1589); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_COLON.add(COLON80);
+
+                    if ( state.backtracking==0 ) {
                       	emit(COLON80, DroolsEditorType.SYMBOL);	
                     }
 
@@ -4173,30 +4133,28 @@
 
             }
 
-            pushFollow(FOLLOW_rule_attribute_in_rule_attributes1645);
+            pushFollow(FOLLOW_rule_attribute_in_rule_attributes1599);
             rule_attribute81=rule_attribute();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_rule_attribute.add(rule_attribute81.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:695:18: ( ( COMMA )? attr= rule_attribute )*
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_rule_attribute.add(rule_attribute81.getTree());
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:675:18: ( ( COMMA )? attr= rule_attribute )*
             loop36:
             do {
                 int alt36=2;
                 int LA36_0 = input.LA(1);
 
-                if ( (LA36_0==COMMA) ) {
+                if ( (LA36_0==ID||LA36_0==COMMA) ) {
                     alt36=1;
                 }
-                else if ( (LA36_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))||(validateIdentifierK!
 ey(DroolsSoftKeywords.DURATION))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))))) {
-                    alt36=1;
-                }
 
 
                 switch (alt36) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:695:20: ( COMMA )? attr= rule_attribute
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:675:20: ( COMMA )? attr= rule_attribute
             	    {
-            	    // src/main/resources/org/drools/lang/DRL.g:695:20: ( COMMA )?
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:675:20: ( COMMA )?
             	    int alt35=2;
             	    int LA35_0 = input.LA(1);
 
@@ -4205,11 +4163,10 @@
             	    }
             	    switch (alt35) {
             	        case 1 :
-            	            // src/main/resources/org/drools/lang/DRL.g:695:20: COMMA
+            	            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:675:20: COMMA
             	            {
-            	            COMMA82=(Token)input.LT(1);
-            	            match(input,COMMA,FOLLOW_COMMA_in_rule_attributes1649); if (failed) return retval;
-            	            if ( backtracking==0 ) stream_COMMA.add(COMMA82);
+            	            COMMA82=(Token)match(input,COMMA,FOLLOW_COMMA_in_rule_attributes1603); if (state.failed) return retval; 
+            	            if ( state.backtracking==0 ) stream_COMMA.add(COMMA82);
 
 
             	            }
@@ -4217,15 +4174,16 @@
 
             	    }
 
-            	    if ( backtracking==0 ) {
+            	    if ( state.backtracking==0 ) {
             	      	emit(COMMA82, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes1656);
+            	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes1610);
             	    attr=rule_attribute();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_rule_attribute.add(attr.getTree());
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_rule_attribute.add(attr.getTree());
+
             	    }
             	    break;
 
@@ -4235,27 +4193,28 @@
             } while (true);
 
 
+
             // AST REWRITE
-            // elements: rule_attribute, attributes_key
+            // elements: attributes_key, rule_attribute
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 696:3: -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ )
+            // 676:3: -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ )
             {
-                // src/main/resources/org/drools/lang/DRL.g:696:6: ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:676:6: ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_RULE_ATTRIBUTES, "VT_RULE_ATTRIBUTES"), root_1);
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_RULE_ATTRIBUTES, "VT_RULE_ATTRIBUTES"), root_1);
 
-                // src/main/resources/org/drools/lang/DRL.g:696:27: ( attributes_key )?
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:676:27: ( attributes_key )?
                 if ( stream_attributes_key.hasNext() ) {
-                    adaptor.addChild(root_1, stream_attributes_key.next());
+                    adaptor.addChild(root_1, stream_attributes_key.nextTree());
 
                 }
                 stream_attributes_key.reset();
@@ -4263,7 +4222,7 @@
                     throw new RewriteEarlyExitException();
                 }
                 while ( stream_rule_attribute.hasNext() ) {
-                    adaptor.addChild(root_1, stream_rule_attribute.next());
+                    adaptor.addChild(root_1, stream_rule_attribute.nextTree());
 
                 }
                 stream_rule_attribute.reset();
@@ -4273,246 +4232,263 @@
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end rule_attributes
+    // $ANTLR end "rule_attributes"
 
     public static class rule_attribute_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start rule_attribute
-    // src/main/resources/org/drools/lang/DRL.g:699:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect );
-    public final rule_attribute_return rule_attribute() throws RecognitionException {
-        rule_attribute_return retval = new rule_attribute_return();
+    // $ANTLR start "rule_attribute"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:679:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect );
+    public final DRLParser.rule_attribute_return rule_attribute() throws RecognitionException {
+        DRLParser.rule_attribute_return retval = new DRLParser.rule_attribute_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        salience_return salience83 = null;
+        DRLParser.salience_return salience83 = null;
 
-        no_loop_return no_loop84 = null;
+        DRLParser.no_loop_return no_loop84 = null;
 
-        agenda_group_return agenda_group85 = null;
+        DRLParser.agenda_group_return agenda_group85 = null;
 
-        duration_return duration86 = null;
+        DRLParser.duration_return duration86 = null;
 
-        activation_group_return activation_group87 = null;
+        DRLParser.activation_group_return activation_group87 = null;
 
-        auto_focus_return auto_focus88 = null;
+        DRLParser.auto_focus_return auto_focus88 = null;
 
-        date_effective_return date_effective89 = null;
+        DRLParser.date_effective_return date_effective89 = null;
 
-        date_expires_return date_expires90 = null;
+        DRLParser.date_expires_return date_expires90 = null;
 
-        enabled_return enabled91 = null;
+        DRLParser.enabled_return enabled91 = null;
 
-        ruleflow_group_return ruleflow_group92 = null;
+        DRLParser.ruleflow_group_return ruleflow_group92 = null;
 
-        lock_on_active_return lock_on_active93 = null;
+        DRLParser.lock_on_active_return lock_on_active93 = null;
 
-        dialect_return dialect94 = null;
+        DRLParser.dialect_return dialect94 = null;
 
 
 
          boolean isFailed = true; pushParaphrases(DroolsParaphraseTypes.RULE_ATTRIBUTE); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:702:2: ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:682:2: ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect )
             int alt37=12;
             alt37 = dfa37.predict(input);
             switch (alt37) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:702:4: salience
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:682:4: salience
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_salience_in_rule_attribute1695);
+                    pushFollow(FOLLOW_salience_in_rule_attribute1649);
                     salience83=salience();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, salience83.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, salience83.getTree());
+
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:703:4: no_loop
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:683:4: no_loop
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_no_loop_in_rule_attribute1701);
+                    pushFollow(FOLLOW_no_loop_in_rule_attribute1655);
                     no_loop84=no_loop();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, no_loop84.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, no_loop84.getTree());
+
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:704:4: agenda_group
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:684:4: agenda_group
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_agenda_group_in_rule_attribute1706);
+                    pushFollow(FOLLOW_agenda_group_in_rule_attribute1660);
                     agenda_group85=agenda_group();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, agenda_group85.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, agenda_group85.getTree());
+
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DRL.g:705:4: duration
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:685:4: duration
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_duration_in_rule_attribute1713);
+                    pushFollow(FOLLOW_duration_in_rule_attribute1667);
                     duration86=duration();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, duration86.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, duration86.getTree());
+
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/lang/DRL.g:706:4: activation_group
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:686:4: activation_group
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_activation_group_in_rule_attribute1720);
+                    pushFollow(FOLLOW_activation_group_in_rule_attribute1674);
                     activation_group87=activation_group();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, activation_group87.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, activation_group87.getTree());
+
                     }
                     break;
                 case 6 :
-                    // src/main/resources/org/drools/lang/DRL.g:707:4: auto_focus
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:687:4: auto_focus
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_auto_focus_in_rule_attribute1726);
+                    pushFollow(FOLLOW_auto_focus_in_rule_attribute1680);
                     auto_focus88=auto_focus();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, auto_focus88.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, auto_focus88.getTree());
+
                     }
                     break;
                 case 7 :
-                    // src/main/resources/org/drools/lang/DRL.g:708:4: date_effective
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:688:4: date_effective
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_date_effective_in_rule_attribute1732);
+                    pushFollow(FOLLOW_date_effective_in_rule_attribute1686);
                     date_effective89=date_effective();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, date_effective89.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, date_effective89.getTree());
+
                     }
                     break;
                 case 8 :
-                    // src/main/resources/org/drools/lang/DRL.g:709:4: date_expires
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:689:4: date_expires
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_date_expires_in_rule_attribute1738);
+                    pushFollow(FOLLOW_date_expires_in_rule_attribute1692);
                     date_expires90=date_expires();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, date_expires90.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, date_expires90.getTree());
+
                     }
                     break;
                 case 9 :
-                    // src/main/resources/org/drools/lang/DRL.g:710:4: enabled
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:690:4: enabled
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_enabled_in_rule_attribute1744);
+                    pushFollow(FOLLOW_enabled_in_rule_attribute1698);
                     enabled91=enabled();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, enabled91.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, enabled91.getTree());
+
                     }
                     break;
                 case 10 :
-                    // src/main/resources/org/drools/lang/DRL.g:711:4: ruleflow_group
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:691:4: ruleflow_group
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_ruleflow_group_in_rule_attribute1750);
+                    pushFollow(FOLLOW_ruleflow_group_in_rule_attribute1704);
                     ruleflow_group92=ruleflow_group();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, ruleflow_group92.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, ruleflow_group92.getTree());
+
                     }
                     break;
                 case 11 :
-                    // src/main/resources/org/drools/lang/DRL.g:712:4: lock_on_active
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:692:4: lock_on_active
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_lock_on_active_in_rule_attribute1756);
+                    pushFollow(FOLLOW_lock_on_active_in_rule_attribute1710);
                     lock_on_active93=lock_on_active();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, lock_on_active93.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lock_on_active93.getTree());
+
                     }
                     break;
                 case 12 :
-                    // src/main/resources/org/drools/lang/DRL.g:713:4: dialect
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:693:4: dialect
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_dialect_in_rule_attribute1761);
+                    pushFollow(FOLLOW_dialect_in_rule_attribute1715);
                     dialect94=dialect();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, dialect94.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, dialect94.getTree());
+
                     }
                     break;
 
             }
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
                paraphrases.pop(); isFailed = false; emit(Location.LOCATION_RULE_HEADER); 
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
-            
+
             	if (isEditorInterfaceEnabled && isFailed) {
             		if (input.LA(6) == EOF && input.LA(1) == ID && input.LA(2) == MISC && input.LA(3) == ID && 
             			input.LA(5) == MISC && input.LA(6) == ID && 
@@ -4557,48 +4533,48 @@
         }
         return retval;
     }
-    // $ANTLR end rule_attribute
+    // $ANTLR end "rule_attribute"
 
     public static class date_effective_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start date_effective
-    // src/main/resources/org/drools/lang/DRL.g:758:1: date_effective : date_effective_key STRING ;
-    public final date_effective_return date_effective() throws RecognitionException {
-        date_effective_return retval = new date_effective_return();
+    // $ANTLR start "date_effective"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:738:1: date_effective : date_effective_key STRING ;
+    public final DRLParser.date_effective_return date_effective() throws RecognitionException {
+        DRLParser.date_effective_return retval = new DRLParser.date_effective_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token STRING96=null;
-        date_effective_key_return date_effective_key95 = null;
+        DRLParser.date_effective_key_return date_effective_key95 = null;
 
 
         Object STRING96_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:759:2: ( date_effective_key STRING )
-            // src/main/resources/org/drools/lang/DRL.g:759:4: date_effective_key STRING
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:739:2: ( date_effective_key STRING )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:739:4: date_effective_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_date_effective_key_in_date_effective1777);
+            pushFollow(FOLLOW_date_effective_key_in_date_effective1731);
             date_effective_key95=date_effective_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(date_effective_key95.getTree(), root_0);
-            if ( backtracking==0 ) {
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(date_effective_key95.getTree(), root_0);
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING96=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_date_effective1782); if (failed) return retval;
-            if ( backtracking==0 ) {
+            STRING96=(Token)match(input,STRING,FOLLOW_STRING_in_date_effective1736); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             STRING96_tree = (Object)adaptor.create(STRING96);
             adaptor.addChild(root_0, STRING96_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(STRING96, DroolsEditorType.STRING_CONST );	
             }
 
@@ -4606,61 +4582,64 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end date_effective
+    // $ANTLR end "date_effective"
 
     public static class date_expires_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start date_expires
-    // src/main/resources/org/drools/lang/DRL.g:763:1: date_expires : date_expires_key STRING ;
-    public final date_expires_return date_expires() throws RecognitionException {
-        date_expires_return retval = new date_expires_return();
+    // $ANTLR start "date_expires"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:743:1: date_expires : date_expires_key STRING ;
+    public final DRLParser.date_expires_return date_expires() throws RecognitionException {
+        DRLParser.date_expires_return retval = new DRLParser.date_expires_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token STRING98=null;
-        date_expires_key_return date_expires_key97 = null;
+        DRLParser.date_expires_key_return date_expires_key97 = null;
 
 
         Object STRING98_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:764:2: ( date_expires_key STRING )
-            // src/main/resources/org/drools/lang/DRL.g:764:4: date_expires_key STRING
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:744:2: ( date_expires_key STRING )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:744:4: date_expires_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_date_expires_key_in_date_expires1796);
+            pushFollow(FOLLOW_date_expires_key_in_date_expires1750);
             date_expires_key97=date_expires_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(date_expires_key97.getTree(), root_0);
-            if ( backtracking==0 ) {
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(date_expires_key97.getTree(), root_0);
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING98=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_date_expires1801); if (failed) return retval;
-            if ( backtracking==0 ) {
+            STRING98=(Token)match(input,STRING,FOLLOW_STRING_in_date_expires1755); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             STRING98_tree = (Object)adaptor.create(STRING98);
             adaptor.addChild(root_0, STRING98_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(STRING98, DroolsEditorType.STRING_CONST );	
             }
 
@@ -4668,57 +4647,61 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end date_expires
+    // $ANTLR end "date_expires"
 
     public static class enabled_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start enabled
-    // src/main/resources/org/drools/lang/DRL.g:768:1: enabled : enabled_key ( BOOL | paren_chunk ) ;
-    public final enabled_return enabled() throws RecognitionException {
-        enabled_return retval = new enabled_return();
+    // $ANTLR start "enabled"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:748:1: enabled : enabled_key ( BOOL | paren_chunk ) ;
+    public final DRLParser.enabled_return enabled() throws RecognitionException {
+        DRLParser.enabled_return retval = new DRLParser.enabled_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token BOOL100=null;
-        enabled_key_return enabled_key99 = null;
+        DRLParser.enabled_key_return enabled_key99 = null;
 
-        paren_chunk_return paren_chunk101 = null;
+        DRLParser.paren_chunk_return paren_chunk101 = null;
 
 
         Object BOOL100_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:769:2: ( enabled_key ( BOOL | paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:769:4: enabled_key ( BOOL | paren_chunk )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:749:2: ( enabled_key ( BOOL | paren_chunk ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:749:4: enabled_key ( BOOL | paren_chunk )
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_enabled_key_in_enabled1816);
+            pushFollow(FOLLOW_enabled_key_in_enabled1770);
             enabled_key99=enabled_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(enabled_key99.getTree(), root_0);
-            if ( backtracking==0 ) {
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(enabled_key99.getTree(), root_0);
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:770:6: ( BOOL | paren_chunk )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:750:6: ( BOOL | paren_chunk )
             int alt38=2;
             int LA38_0 = input.LA(1);
 
@@ -4729,37 +4712,37 @@
                 alt38=2;
             }
             else {
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("770:6: ( BOOL | paren_chunk )", 38, 0, input);
+                    new NoViableAltException("", 38, 0, input);
 
                 throw nvae;
             }
             switch (alt38) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:770:8: BOOL
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:750:8: BOOL
                     {
-                    BOOL100=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_enabled1829); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    BOOL100=(Token)match(input,BOOL,FOLLOW_BOOL_in_enabled1783); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     BOOL100_tree = (Object)adaptor.create(BOOL100);
                     adaptor.addChild(root_0, BOOL100_tree);
                     }
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(BOOL100, DroolsEditorType.BOOLEAN_CONST );	
                     }
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:771:8: paren_chunk
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:751:8: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_enabled1840);
+                    pushFollow(FOLLOW_paren_chunk_in_enabled1794);
                     paren_chunk101=paren_chunk();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, paren_chunk101.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk101.getTree());
+
                     }
                     break;
 
@@ -4770,57 +4753,61 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end enabled
+    // $ANTLR end "enabled"
 
     public static class salience_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start salience
-    // src/main/resources/org/drools/lang/DRL.g:775:1: salience : salience_key ( INT | paren_chunk ) ;
-    public final salience_return salience() throws RecognitionException {
-        salience_return retval = new salience_return();
+    // $ANTLR start "salience"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:755:1: salience : salience_key ( INT | paren_chunk ) ;
+    public final DRLParser.salience_return salience() throws RecognitionException {
+        DRLParser.salience_return retval = new DRLParser.salience_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token INT103=null;
-        salience_key_return salience_key102 = null;
+        DRLParser.salience_key_return salience_key102 = null;
 
-        paren_chunk_return paren_chunk104 = null;
+        DRLParser.paren_chunk_return paren_chunk104 = null;
 
 
         Object INT103_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:776:2: ( salience_key ( INT | paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:776:4: salience_key ( INT | paren_chunk )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:756:2: ( salience_key ( INT | paren_chunk ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:756:4: salience_key ( INT | paren_chunk )
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_salience_key_in_salience1860);
+            pushFollow(FOLLOW_salience_key_in_salience1814);
             salience_key102=salience_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(salience_key102.getTree(), root_0);
-            if ( backtracking==0 ) {
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(salience_key102.getTree(), root_0);
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:777:3: ( INT | paren_chunk )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:757:3: ( INT | paren_chunk )
             int alt39=2;
             int LA39_0 = input.LA(1);
 
@@ -4831,37 +4818,37 @@
                 alt39=2;
             }
             else {
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("777:3: ( INT | paren_chunk )", 39, 0, input);
+                    new NoViableAltException("", 39, 0, input);
 
                 throw nvae;
             }
             switch (alt39) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:777:5: INT
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:757:5: INT
                     {
-                    INT103=(Token)input.LT(1);
-                    match(input,INT,FOLLOW_INT_in_salience1869); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    INT103=(Token)match(input,INT,FOLLOW_INT_in_salience1823); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     INT103_tree = (Object)adaptor.create(INT103);
                     adaptor.addChild(root_0, INT103_tree);
                     }
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(INT103, DroolsEditorType.NUMERIC_CONST );	
                     }
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:778:5: paren_chunk
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:758:5: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_salience1878);
+                    pushFollow(FOLLOW_paren_chunk_in_salience1832);
                     paren_chunk104=paren_chunk();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, paren_chunk104.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk104.getTree());
+
                     }
                     break;
 
@@ -4872,55 +4859,59 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end salience
+    // $ANTLR end "salience"
 
     public static class no_loop_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start no_loop
-    // src/main/resources/org/drools/lang/DRL.g:782:1: no_loop : no_loop_key ( BOOL )? ;
-    public final no_loop_return no_loop() throws RecognitionException {
-        no_loop_return retval = new no_loop_return();
+    // $ANTLR start "no_loop"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:762:1: no_loop : no_loop_key ( BOOL )? ;
+    public final DRLParser.no_loop_return no_loop() throws RecognitionException {
+        DRLParser.no_loop_return retval = new DRLParser.no_loop_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token BOOL106=null;
-        no_loop_key_return no_loop_key105 = null;
+        DRLParser.no_loop_key_return no_loop_key105 = null;
 
 
         Object BOOL106_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:783:2: ( no_loop_key ( BOOL )? )
-            // src/main/resources/org/drools/lang/DRL.g:783:4: no_loop_key ( BOOL )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:763:2: ( no_loop_key ( BOOL )? )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:763:4: no_loop_key ( BOOL )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_no_loop_key_in_no_loop1893);
+            pushFollow(FOLLOW_no_loop_key_in_no_loop1847);
             no_loop_key105=no_loop_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(no_loop_key105.getTree(), root_0);
-            if ( backtracking==0 ) {
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(no_loop_key105.getTree(), root_0);
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:783:66: ( BOOL )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:763:66: ( BOOL )?
             int alt40=2;
             int LA40_0 = input.LA(1);
 
@@ -4929,11 +4920,10 @@
             }
             switch (alt40) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:783:66: BOOL
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:763:66: BOOL
                     {
-                    BOOL106=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_no_loop1898); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    BOOL106=(Token)match(input,BOOL,FOLLOW_BOOL_in_no_loop1852); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     BOOL106_tree = (Object)adaptor.create(BOOL106);
                     adaptor.addChild(root_0, BOOL106_tree);
                     }
@@ -4943,7 +4933,7 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(BOOL106, DroolsEditorType.BOOLEAN_CONST );	
             }
 
@@ -4951,55 +4941,59 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end no_loop
+    // $ANTLR end "no_loop"
 
     public static class auto_focus_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start auto_focus
-    // src/main/resources/org/drools/lang/DRL.g:787:1: auto_focus : auto_focus_key ( BOOL )? ;
-    public final auto_focus_return auto_focus() throws RecognitionException {
-        auto_focus_return retval = new auto_focus_return();
+    // $ANTLR start "auto_focus"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:767:1: auto_focus : auto_focus_key ( BOOL )? ;
+    public final DRLParser.auto_focus_return auto_focus() throws RecognitionException {
+        DRLParser.auto_focus_return retval = new DRLParser.auto_focus_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token BOOL108=null;
-        auto_focus_key_return auto_focus_key107 = null;
+        DRLParser.auto_focus_key_return auto_focus_key107 = null;
 
 
         Object BOOL108_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:788:2: ( auto_focus_key ( BOOL )? )
-            // src/main/resources/org/drools/lang/DRL.g:788:4: auto_focus_key ( BOOL )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:768:2: ( auto_focus_key ( BOOL )? )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:768:4: auto_focus_key ( BOOL )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_auto_focus_key_in_auto_focus1913);
+            pushFollow(FOLLOW_auto_focus_key_in_auto_focus1867);
             auto_focus_key107=auto_focus_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(auto_focus_key107.getTree(), root_0);
-            if ( backtracking==0 ) {
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(auto_focus_key107.getTree(), root_0);
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:788:69: ( BOOL )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:768:69: ( BOOL )?
             int alt41=2;
             int LA41_0 = input.LA(1);
 
@@ -5008,11 +5002,10 @@
             }
             switch (alt41) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:788:69: BOOL
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:768:69: BOOL
                     {
-                    BOOL108=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_auto_focus1918); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    BOOL108=(Token)match(input,BOOL,FOLLOW_BOOL_in_auto_focus1872); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     BOOL108_tree = (Object)adaptor.create(BOOL108);
                     adaptor.addChild(root_0, BOOL108_tree);
                     }
@@ -5022,7 +5015,7 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(BOOL108, DroolsEditorType.BOOLEAN_CONST );	
             }
 
@@ -5030,61 +5023,64 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end auto_focus
+    // $ANTLR end "auto_focus"
 
     public static class activation_group_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start activation_group
-    // src/main/resources/org/drools/lang/DRL.g:792:1: activation_group : activation_group_key STRING ;
-    public final activation_group_return activation_group() throws RecognitionException {
-        activation_group_return retval = new activation_group_return();
+    // $ANTLR start "activation_group"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:772:1: activation_group : activation_group_key STRING ;
+    public final DRLParser.activation_group_return activation_group() throws RecognitionException {
+        DRLParser.activation_group_return retval = new DRLParser.activation_group_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token STRING110=null;
-        activation_group_key_return activation_group_key109 = null;
+        DRLParser.activation_group_key_return activation_group_key109 = null;
 
 
         Object STRING110_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:793:2: ( activation_group_key STRING )
-            // src/main/resources/org/drools/lang/DRL.g:793:4: activation_group_key STRING
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:773:2: ( activation_group_key STRING )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:773:4: activation_group_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_activation_group_key_in_activation_group1935);
+            pushFollow(FOLLOW_activation_group_key_in_activation_group1889);
             activation_group_key109=activation_group_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(activation_group_key109.getTree(), root_0);
-            if ( backtracking==0 ) {
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(activation_group_key109.getTree(), root_0);
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING110=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_activation_group1940); if (failed) return retval;
-            if ( backtracking==0 ) {
+            STRING110=(Token)match(input,STRING,FOLLOW_STRING_in_activation_group1894); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             STRING110_tree = (Object)adaptor.create(STRING110);
             adaptor.addChild(root_0, STRING110_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(STRING110, DroolsEditorType.STRING_CONST );	
             }
 
@@ -5092,61 +5088,64 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end activation_group
+    // $ANTLR end "activation_group"
 
     public static class ruleflow_group_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start ruleflow_group
-    // src/main/resources/org/drools/lang/DRL.g:797:1: ruleflow_group : ruleflow_group_key STRING ;
-    public final ruleflow_group_return ruleflow_group() throws RecognitionException {
-        ruleflow_group_return retval = new ruleflow_group_return();
+    // $ANTLR start "ruleflow_group"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:777:1: ruleflow_group : ruleflow_group_key STRING ;
+    public final DRLParser.ruleflow_group_return ruleflow_group() throws RecognitionException {
+        DRLParser.ruleflow_group_return retval = new DRLParser.ruleflow_group_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token STRING112=null;
-        ruleflow_group_key_return ruleflow_group_key111 = null;
+        DRLParser.ruleflow_group_key_return ruleflow_group_key111 = null;
 
 
         Object STRING112_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:798:2: ( ruleflow_group_key STRING )
-            // src/main/resources/org/drools/lang/DRL.g:798:4: ruleflow_group_key STRING
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:778:2: ( ruleflow_group_key STRING )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:778:4: ruleflow_group_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_ruleflow_group_key_in_ruleflow_group1954);
+            pushFollow(FOLLOW_ruleflow_group_key_in_ruleflow_group1908);
             ruleflow_group_key111=ruleflow_group_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(ruleflow_group_key111.getTree(), root_0);
-            if ( backtracking==0 ) {
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(ruleflow_group_key111.getTree(), root_0);
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING112=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_ruleflow_group1959); if (failed) return retval;
-            if ( backtracking==0 ) {
+            STRING112=(Token)match(input,STRING,FOLLOW_STRING_in_ruleflow_group1913); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             STRING112_tree = (Object)adaptor.create(STRING112);
             adaptor.addChild(root_0, STRING112_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(STRING112, DroolsEditorType.STRING_CONST );	
             }
 
@@ -5154,61 +5153,64 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end ruleflow_group
+    // $ANTLR end "ruleflow_group"
 
     public static class agenda_group_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start agenda_group
-    // src/main/resources/org/drools/lang/DRL.g:802:1: agenda_group : agenda_group_key STRING ;
-    public final agenda_group_return agenda_group() throws RecognitionException {
-        agenda_group_return retval = new agenda_group_return();
+    // $ANTLR start "agenda_group"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:782:1: agenda_group : agenda_group_key STRING ;
+    public final DRLParser.agenda_group_return agenda_group() throws RecognitionException {
+        DRLParser.agenda_group_return retval = new DRLParser.agenda_group_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token STRING114=null;
-        agenda_group_key_return agenda_group_key113 = null;
+        DRLParser.agenda_group_key_return agenda_group_key113 = null;
 
 
         Object STRING114_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:803:2: ( agenda_group_key STRING )
-            // src/main/resources/org/drools/lang/DRL.g:803:4: agenda_group_key STRING
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:783:2: ( agenda_group_key STRING )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:783:4: agenda_group_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_agenda_group_key_in_agenda_group1973);
+            pushFollow(FOLLOW_agenda_group_key_in_agenda_group1927);
             agenda_group_key113=agenda_group_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(agenda_group_key113.getTree(), root_0);
-            if ( backtracking==0 ) {
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(agenda_group_key113.getTree(), root_0);
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING114=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_agenda_group1978); if (failed) return retval;
-            if ( backtracking==0 ) {
+            STRING114=(Token)match(input,STRING,FOLLOW_STRING_in_agenda_group1932); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             STRING114_tree = (Object)adaptor.create(STRING114);
             adaptor.addChild(root_0, STRING114_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(STRING114, DroolsEditorType.STRING_CONST );	
             }
 
@@ -5216,61 +5218,64 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end agenda_group
+    // $ANTLR end "agenda_group"
 
     public static class duration_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start duration
-    // src/main/resources/org/drools/lang/DRL.g:807:1: duration : duration_key INT ;
-    public final duration_return duration() throws RecognitionException {
-        duration_return retval = new duration_return();
+    // $ANTLR start "duration"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:787:1: duration : duration_key INT ;
+    public final DRLParser.duration_return duration() throws RecognitionException {
+        DRLParser.duration_return retval = new DRLParser.duration_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token INT116=null;
-        duration_key_return duration_key115 = null;
+        DRLParser.duration_key_return duration_key115 = null;
 
 
         Object INT116_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:808:2: ( duration_key INT )
-            // src/main/resources/org/drools/lang/DRL.g:808:4: duration_key INT
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:788:2: ( duration_key INT )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:788:4: duration_key INT
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_duration_key_in_duration1992);
+            pushFollow(FOLLOW_duration_key_in_duration1946);
             duration_key115=duration_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(duration_key115.getTree(), root_0);
-            if ( backtracking==0 ) {
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(duration_key115.getTree(), root_0);
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            INT116=(Token)input.LT(1);
-            match(input,INT,FOLLOW_INT_in_duration1997); if (failed) return retval;
-            if ( backtracking==0 ) {
+            INT116=(Token)match(input,INT,FOLLOW_INT_in_duration1951); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             INT116_tree = (Object)adaptor.create(INT116);
             adaptor.addChild(root_0, INT116_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(INT116, DroolsEditorType.NUMERIC_CONST );	
             }
 
@@ -5278,61 +5283,64 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end duration
+    // $ANTLR end "duration"
 
     public static class dialect_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start dialect
-    // src/main/resources/org/drools/lang/DRL.g:812:1: dialect : dialect_key STRING ;
-    public final dialect_return dialect() throws RecognitionException {
-        dialect_return retval = new dialect_return();
+    // $ANTLR start "dialect"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:792:1: dialect : dialect_key STRING ;
+    public final DRLParser.dialect_return dialect() throws RecognitionException {
+        DRLParser.dialect_return retval = new DRLParser.dialect_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token STRING118=null;
-        dialect_key_return dialect_key117 = null;
+        DRLParser.dialect_key_return dialect_key117 = null;
 
 
         Object STRING118_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:813:2: ( dialect_key STRING )
-            // src/main/resources/org/drools/lang/DRL.g:813:4: dialect_key STRING
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:793:2: ( dialect_key STRING )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:793:4: dialect_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_dialect_key_in_dialect2013);
+            pushFollow(FOLLOW_dialect_key_in_dialect1967);
             dialect_key117=dialect_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(dialect_key117.getTree(), root_0);
-            if ( backtracking==0 ) {
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(dialect_key117.getTree(), root_0);
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING118=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_dialect2018); if (failed) return retval;
-            if ( backtracking==0 ) {
+            STRING118=(Token)match(input,STRING,FOLLOW_STRING_in_dialect1972); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             STRING118_tree = (Object)adaptor.create(STRING118);
             adaptor.addChild(root_0, STRING118_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(STRING118, DroolsEditorType.STRING_CONST );	
             }
 
@@ -5340,55 +5348,59 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end dialect
+    // $ANTLR end "dialect"
 
     public static class lock_on_active_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start lock_on_active
-    // src/main/resources/org/drools/lang/DRL.g:817:1: lock_on_active : lock_on_active_key ( BOOL )? ;
-    public final lock_on_active_return lock_on_active() throws RecognitionException {
-        lock_on_active_return retval = new lock_on_active_return();
+    // $ANTLR start "lock_on_active"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:797:1: lock_on_active : lock_on_active_key ( BOOL )? ;
+    public final DRLParser.lock_on_active_return lock_on_active() throws RecognitionException {
+        DRLParser.lock_on_active_return retval = new DRLParser.lock_on_active_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token BOOL120=null;
-        lock_on_active_key_return lock_on_active_key119 = null;
+        DRLParser.lock_on_active_key_return lock_on_active_key119 = null;
 
 
         Object BOOL120_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:818:2: ( lock_on_active_key ( BOOL )? )
-            // src/main/resources/org/drools/lang/DRL.g:818:4: lock_on_active_key ( BOOL )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:798:2: ( lock_on_active_key ( BOOL )? )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:798:4: lock_on_active_key ( BOOL )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_lock_on_active_key_in_lock_on_active2036);
+            pushFollow(FOLLOW_lock_on_active_key_in_lock_on_active1990);
             lock_on_active_key119=lock_on_active_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(lock_on_active_key119.getTree(), root_0);
-            if ( backtracking==0 ) {
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(lock_on_active_key119.getTree(), root_0);
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:818:73: ( BOOL )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:798:73: ( BOOL )?
             int alt42=2;
             int LA42_0 = input.LA(1);
 
@@ -5397,11 +5409,10 @@
             }
             switch (alt42) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:818:73: BOOL
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:798:73: BOOL
                     {
-                    BOOL120=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_lock_on_active2041); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    BOOL120=(Token)match(input,BOOL,FOLLOW_BOOL_in_lock_on_active1995); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     BOOL120_tree = (Object)adaptor.create(BOOL120);
                     adaptor.addChild(root_0, BOOL120_tree);
                     }
@@ -5411,7 +5422,7 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(BOOL120, DroolsEditorType.BOOLEAN_CONST );	
             }
 
@@ -5419,43 +5430,46 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end lock_on_active
+    // $ANTLR end "lock_on_active"
 
     public static class normal_lhs_block_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start normal_lhs_block
-    // src/main/resources/org/drools/lang/DRL.g:822:1: normal_lhs_block : ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) ;
-    public final normal_lhs_block_return normal_lhs_block() throws RecognitionException {
-        normal_lhs_block_return retval = new normal_lhs_block_return();
+    // $ANTLR start "normal_lhs_block"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:802:1: normal_lhs_block : ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) ;
+    public final DRLParser.normal_lhs_block_return normal_lhs_block() throws RecognitionException {
+        DRLParser.normal_lhs_block_return retval = new DRLParser.normal_lhs_block_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        lhs_return lhs121 = null;
+        DRLParser.lhs_return lhs121 = null;
 
 
         RewriteRuleSubtreeStream stream_lhs=new RewriteRuleSubtreeStream(adaptor,"rule lhs");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:823:2: ( ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) )
-            // src/main/resources/org/drools/lang/DRL.g:823:4: ( lhs )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:803:2: ( ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:803:4: ( lhs )*
             {
-            // src/main/resources/org/drools/lang/DRL.g:823:4: ( lhs )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:803:4: ( lhs )*
             loop43:
             do {
                 int alt43=2;
@@ -5468,14 +5482,15 @@
 
                 switch (alt43) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:823:4: lhs
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:803:4: lhs
             	    {
-            	    pushFollow(FOLLOW_lhs_in_normal_lhs_block2056);
+            	    pushFollow(FOLLOW_lhs_in_normal_lhs_block2010);
             	    lhs121=lhs();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_lhs.add(lhs121.getTree());
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_lhs.add(lhs121.getTree());
+
             	    }
             	    break;
 
@@ -5485,27 +5500,28 @@
             } while (true);
 
 
+
             // AST REWRITE
             // elements: lhs
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 824:2: -> ^( VT_AND_IMPLICIT ( lhs )* )
+            // 804:2: -> ^( VT_AND_IMPLICIT ( lhs )* )
             {
-                // src/main/resources/org/drools/lang/DRL.g:824:5: ^( VT_AND_IMPLICIT ( lhs )* )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:804:5: ^( VT_AND_IMPLICIT ( lhs )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_AND_IMPLICIT, "VT_AND_IMPLICIT"), root_1);
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_AND_IMPLICIT, "VT_AND_IMPLICIT"), root_1);
 
-                // src/main/resources/org/drools/lang/DRL.g:824:23: ( lhs )*
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:804:23: ( lhs )*
                 while ( stream_lhs.hasNext() ) {
-                    adaptor.addChild(root_1, stream_lhs.next());
+                    adaptor.addChild(root_1, stream_lhs.nextTree());
 
                 }
                 stream_lhs.reset();
@@ -5515,84 +5531,90 @@
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end normal_lhs_block
+    // $ANTLR end "normal_lhs_block"
 
     public static class lhs_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start lhs
-    // src/main/resources/org/drools/lang/DRL.g:827:1: lhs : lhs_or ;
-    public final lhs_return lhs() throws RecognitionException {
-        lhs_return retval = new lhs_return();
+    // $ANTLR start "lhs"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:807:1: lhs : lhs_or ;
+    public final DRLParser.lhs_return lhs() throws RecognitionException {
+        DRLParser.lhs_return retval = new DRLParser.lhs_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        lhs_or_return lhs_or122 = null;
+        DRLParser.lhs_or_return lhs_or122 = null;
 
 
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:827:5: ( lhs_or )
-            // src/main/resources/org/drools/lang/DRL.g:827:7: lhs_or
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:807:5: ( lhs_or )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:807:7: lhs_or
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_lhs_or_in_lhs2077);
+            pushFollow(FOLLOW_lhs_or_in_lhs2031);
             lhs_or122=lhs_or();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, lhs_or122.getTree());
 
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_or122.getTree());
+
             }
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end lhs
+    // $ANTLR end "lhs"
 
     public static class lhs_or_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start lhs_or
-    // src/main/resources/org/drools/lang/DRL.g:830:1: lhs_or : ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* );
-    public final lhs_or_return lhs_or() throws RecognitionException {
-        lhs_or_return retval = new lhs_or_return();
+    // $ANTLR start "lhs_or"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:810:1: lhs_or : ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* );
+    public final DRLParser.lhs_or_return lhs_or() throws RecognitionException {
+        DRLParser.lhs_or_return retval = new DRLParser.lhs_or_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -5600,15 +5622,15 @@
         Token pipe=null;
         Token LEFT_PAREN123=null;
         Token RIGHT_PAREN125=null;
-        or_key_return or = null;
+        DRLParser.or_key_return or = null;
 
-        or_key_return value = null;
+        DRLParser.or_key_return value = null;
 
-        lhs_and_return lhs_and124 = null;
+        DRLParser.lhs_and_return lhs_and124 = null;
 
-        lhs_and_return lhs_and126 = null;
+        DRLParser.lhs_and_return lhs_and126 = null;
 
-        lhs_and_return lhs_and127 = null;
+        DRLParser.lhs_and_return lhs_and127 = null;
 
 
         Object pipe_tree=null;
@@ -5619,80 +5641,27 @@
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
         RewriteRuleSubtreeStream stream_or_key=new RewriteRuleSubtreeStream(adaptor,"rule or_key");
         RewriteRuleSubtreeStream stream_lhs_and=new RewriteRuleSubtreeStream(adaptor,"rule lhs_and");
-        
+
         	Token orToken = null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:833:3: ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:813:3: ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* )
             int alt47=2;
             int LA47_0 = input.LA(1);
 
             if ( (LA47_0==LEFT_PAREN) ) {
                 int LA47_1 = input.LA(2);
 
-                if ( (LA47_1==LEFT_PAREN) ) {
+                if ( (synpred1_DRL()) ) {
+                    alt47=1;
+                }
+                else if ( (true) ) {
                     alt47=2;
                 }
-                else if ( (LA47_1==ID) ) {
-                    switch ( input.LA(3) ) {
-                    case DOT:
-                    case COLON:
-                    case LEFT_SQUARE:
-                        {
-                        alt47=2;
-                        }
-                        break;
-                    case LEFT_PAREN:
-                        {
-                        int LA47_4 = input.LA(4);
-
-                        if ( (synpred1()) ) {
-                            alt47=1;
-                        }
-                        else if ( (true) ) {
-                            alt47=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return retval;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("830:1: lhs_or : ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* );", 47, 4, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    case ID:
-                        {
-                        int LA47_5 = input.LA(4);
-
-                        if ( (synpred1()) ) {
-                            alt47=1;
-                        }
-                        else if ( (true) ) {
-                            alt47=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return retval;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("830:1: lhs_or : ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* );", 47, 5, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    default:
-                        if (backtracking>0) {failed=true; return retval;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("830:1: lhs_or : ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* );", 47, 3, input);
-
-                        throw nvae;
-                    }
-
-                }
                 else {
-                    if (backtracking>0) {failed=true; return retval;}
+                    if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("830:1: lhs_or : ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* );", 47, 1, input);
+                        new NoViableAltException("", 47, 1, input);
 
                     throw nvae;
                 }
@@ -5701,32 +5670,32 @@
                 alt47=2;
             }
             else {
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("830:1: lhs_or : ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* );", 47, 0, input);
+                    new NoViableAltException("", 47, 0, input);
 
                 throw nvae;
             }
             switch (alt47) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:833:5: ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:813:5: ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN
                     {
-                    LEFT_PAREN123=(Token)input.LT(1);
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2101); if (failed) return retval;
-                    if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN123);
+                    LEFT_PAREN123=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2055); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN123);
 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN123, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_or_key_in_lhs_or2111);
+                    pushFollow(FOLLOW_or_key_in_lhs_or2065);
                     or=or_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_or_key.add(or.getTree());
-                    if ( backtracking==0 ) {
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_or_key.add(or.getTree());
+                    if ( state.backtracking==0 ) {
                       	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     }
-                    // src/main/resources/org/drools/lang/DRL.g:837:4: ( lhs_and )+
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:817:4: ( lhs_and )+
                     int cnt44=0;
                     loop44:
                     do {
@@ -5740,20 +5709,21 @@
 
                         switch (alt44) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:837:4: lhs_and
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:817:4: lhs_and
                     	    {
-                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2119);
+                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2073);
                     	    lhs_and124=lhs_and();
-                    	    _fsp--;
-                    	    if (failed) return retval;
-                    	    if ( backtracking==0 ) stream_lhs_and.add(lhs_and124.getTree());
 
+                    	    state._fsp--;
+                    	    if (state.failed) return retval;
+                    	    if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and124.getTree());
+
                     	    }
                     	    break;
 
                     	default :
                     	    if ( cnt44 >= 1 ) break loop44;
-                    	    if (backtracking>0) {failed=true; return retval;}
+                    	    if (state.backtracking>0) {state.failed=true; return retval;}
                                 EarlyExitException eee =
                                     new EarlyExitException(44, input);
                                 throw eee;
@@ -5761,85 +5731,85 @@
                         cnt44++;
                     } while (true);
 
-                    RIGHT_PAREN125=(Token)input.LT(1);
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2125); if (failed) return retval;
-                    if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN125);
+                    RIGHT_PAREN125=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2079); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN125);
 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(RIGHT_PAREN125, DroolsEditorType.SYMBOL);	
                     }
 
+
                     // AST REWRITE
-                    // elements: lhs_and, RIGHT_PAREN
+                    // elements: RIGHT_PAREN, lhs_and
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
                     // rule list labels: 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                     retval.tree = root_0;
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 839:3: -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN )
+                    // 819:3: -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN )
                     {
-                        // src/main/resources/org/drools/lang/DRL.g:839:6: ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN )
+                        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:819:6: ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN )
                         {
                         Object root_1 = (Object)adaptor.nil();
-                        root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_OR_PREFIX, ((Token)or.start)), root_1);
+                        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_OR_PREFIX, (or!=null?((Token)or.start):null)), root_1);
 
                         if ( !(stream_lhs_and.hasNext()) ) {
                             throw new RewriteEarlyExitException();
                         }
                         while ( stream_lhs_and.hasNext() ) {
-                            adaptor.addChild(root_1, stream_lhs_and.next());
+                            adaptor.addChild(root_1, stream_lhs_and.nextTree());
 
                         }
                         stream_lhs_and.reset();
-                        adaptor.addChild(root_1, stream_RIGHT_PAREN.next());
+                        adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
                         adaptor.addChild(root_0, root_1);
                         }
 
                     }
 
+                    retval.tree = root_0;}
                     }
-
-                    }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:840:4: ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )*
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:820:4: ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )*
                     {
-                    // src/main/resources/org/drools/lang/DRL.g:840:4: ( lhs_and -> lhs_and )
-                    // src/main/resources/org/drools/lang/DRL.g:840:5: lhs_and
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:820:4: ( lhs_and -> lhs_and )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:820:5: lhs_and
                     {
-                    pushFollow(FOLLOW_lhs_and_in_lhs_or2148);
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or2102);
                     lhs_and126=lhs_and();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_lhs_and.add(lhs_and126.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and126.getTree());
+
+
                     // AST REWRITE
                     // elements: lhs_and
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
                     // rule list labels: 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                     retval.tree = root_0;
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 840:13: -> lhs_and
+                    // 820:13: -> lhs_and
                     {
-                        adaptor.addChild(root_0, stream_lhs_and.next());
+                        adaptor.addChild(root_0, stream_lhs_and.nextTree());
 
                     }
 
+                    retval.tree = root_0;}
                     }
 
-                    }
-
-                    // src/main/resources/org/drools/lang/DRL.g:841:3: ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )*
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:821:3: ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )*
                     loop46:
                     do {
                         int alt46=2;
@@ -5848,7 +5818,7 @@
                         if ( (LA46_0==ID) ) {
                             int LA46_2 = input.LA(2);
 
-                            if ( ((synpred2()&&(validateIdentifierKey(DroolsSoftKeywords.OR)))) ) {
+                            if ( ((synpred2_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.OR))))) ) {
                                 alt46=1;
                             }
 
@@ -5857,7 +5827,7 @@
                         else if ( (LA46_0==DOUBLE_PIPE) ) {
                             int LA46_3 = input.LA(2);
 
-                            if ( (synpred2()) ) {
+                            if ( (synpred2_DRL()) ) {
                                 alt46=1;
                             }
 
@@ -5867,48 +5837,48 @@
 
                         switch (alt46) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:841:5: ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:821:5: ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and
                     	    {
-                    	    // src/main/resources/org/drools/lang/DRL.g:841:28: (value= or_key | pipe= DOUBLE_PIPE )
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:821:28: (value= or_key | pipe= DOUBLE_PIPE )
                     	    int alt45=2;
                     	    int LA45_0 = input.LA(1);
 
-                    	    if ( (LA45_0==ID) && ((validateIdentifierKey(DroolsSoftKeywords.OR)))) {
+                    	    if ( (LA45_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.OR))))) {
                     	        alt45=1;
                     	    }
                     	    else if ( (LA45_0==DOUBLE_PIPE) ) {
                     	        alt45=2;
                     	    }
                     	    else {
-                    	        if (backtracking>0) {failed=true; return retval;}
+                    	        if (state.backtracking>0) {state.failed=true; return retval;}
                     	        NoViableAltException nvae =
-                    	            new NoViableAltException("841:28: (value= or_key | pipe= DOUBLE_PIPE )", 45, 0, input);
+                    	            new NoViableAltException("", 45, 0, input);
 
                     	        throw nvae;
                     	    }
                     	    switch (alt45) {
                     	        case 1 :
-                    	            // src/main/resources/org/drools/lang/DRL.g:841:29: value= or_key
+                    	            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:821:29: value= or_key
                     	            {
-                    	            pushFollow(FOLLOW_or_key_in_lhs_or2170);
+                    	            pushFollow(FOLLOW_or_key_in_lhs_or2124);
                     	            value=or_key();
-                    	            _fsp--;
-                    	            if (failed) return retval;
-                    	            if ( backtracking==0 ) stream_or_key.add(value.getTree());
-                    	            if ( backtracking==0 ) {
-                    	              orToken = ((Token)value.start);
+
+                    	            state._fsp--;
+                    	            if (state.failed) return retval;
+                    	            if ( state.backtracking==0 ) stream_or_key.add(value.getTree());
+                    	            if ( state.backtracking==0 ) {
+                    	              orToken = (value!=null?((Token)value.start):null);
                     	            }
 
                     	            }
                     	            break;
                     	        case 2 :
-                    	            // src/main/resources/org/drools/lang/DRL.g:841:69: pipe= DOUBLE_PIPE
+                    	            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:821:69: pipe= DOUBLE_PIPE
                     	            {
-                    	            pipe=(Token)input.LT(1);
-                    	            match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_lhs_or2177); if (failed) return retval;
-                    	            if ( backtracking==0 ) stream_DOUBLE_PIPE.add(pipe);
+                    	            pipe=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_lhs_or2131); if (state.failed) return retval; 
+                    	            if ( state.backtracking==0 ) stream_DOUBLE_PIPE.add(pipe);
 
-                    	            if ( backtracking==0 ) {
+                    	            if ( state.backtracking==0 ) {
                     	              orToken = pipe; emit(pipe, DroolsEditorType.SYMBOL);
                     	            }
 
@@ -5917,44 +5887,45 @@
 
                     	    }
 
-                    	    if ( backtracking==0 ) {
+                    	    if ( state.backtracking==0 ) {
                     	      	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     	    }
-                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2188);
+                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2142);
                     	    lhs_and127=lhs_and();
-                    	    _fsp--;
-                    	    if (failed) return retval;
-                    	    if ( backtracking==0 ) stream_lhs_and.add(lhs_and127.getTree());
 
+                    	    state._fsp--;
+                    	    if (state.failed) return retval;
+                    	    if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and127.getTree());
+
+
                     	    // AST REWRITE
-                    	    // elements: lhs_or, lhs_and
+                    	    // elements: lhs_and, lhs_or
                     	    // token labels: 
                     	    // rule labels: retval
                     	    // token list labels: 
                     	    // rule list labels: 
-                    	    if ( backtracking==0 ) {
+                    	    if ( state.backtracking==0 ) {
                     	    retval.tree = root_0;
                     	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     	    root_0 = (Object)adaptor.nil();
-                    	    // 844:3: -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and )
+                    	    // 824:3: -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and )
                     	    {
-                    	        // src/main/resources/org/drools/lang/DRL.g:844:6: ^( VT_OR_INFIX[orToken] $lhs_or lhs_and )
+                    	        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:824:6: ^( VT_OR_INFIX[orToken] $lhs_or lhs_and )
                     	        {
                     	        Object root_1 = (Object)adaptor.nil();
-                    	        root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_OR_INFIX, orToken), root_1);
+                    	        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_OR_INFIX, orToken), root_1);
 
-                    	        adaptor.addChild(root_1, stream_retval.next());
-                    	        adaptor.addChild(root_1, stream_lhs_and.next());
+                    	        adaptor.addChild(root_1, stream_retval.nextTree());
+                    	        adaptor.addChild(root_1, stream_lhs_and.nextTree());
 
                     	        adaptor.addChild(root_0, root_1);
                     	        }
 
                     	    }
 
+                    	    retval.tree = root_0;}
                     	    }
-
-                    	    }
                     	    break;
 
                     	default :
@@ -5969,30 +5940,33 @@
             }
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end lhs_or
+    // $ANTLR end "lhs_or"
 
     public static class lhs_and_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start lhs_and
-    // src/main/resources/org/drools/lang/DRL.g:847:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );
-    public final lhs_and_return lhs_and() throws RecognitionException {
-        lhs_and_return retval = new lhs_and_return();
+    // $ANTLR start "lhs_and"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:827:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );
+    public final DRLParser.lhs_and_return lhs_and() throws RecognitionException {
+        DRLParser.lhs_and_return retval = new DRLParser.lhs_and_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -6000,15 +5974,15 @@
         Token amper=null;
         Token LEFT_PAREN128=null;
         Token RIGHT_PAREN130=null;
-        and_key_return and = null;
+        DRLParser.and_key_return and = null;
 
-        and_key_return value = null;
+        DRLParser.and_key_return value = null;
 
-        lhs_unary_return lhs_unary129 = null;
+        DRLParser.lhs_unary_return lhs_unary129 = null;
 
-        lhs_unary_return lhs_unary131 = null;
+        DRLParser.lhs_unary_return lhs_unary131 = null;
 
-        lhs_unary_return lhs_unary132 = null;
+        DRLParser.lhs_unary_return lhs_unary132 = null;
 
 
         Object amper_tree=null;
@@ -6019,242 +5993,27 @@
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
         RewriteRuleSubtreeStream stream_and_key=new RewriteRuleSubtreeStream(adaptor,"rule and_key");
         RewriteRuleSubtreeStream stream_lhs_unary=new RewriteRuleSubtreeStream(adaptor,"rule lhs_unary");
-        
+
         	Token andToken = null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:850:3: ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:830:3: ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* )
             int alt51=2;
             int LA51_0 = input.LA(1);
 
             if ( (LA51_0==LEFT_PAREN) ) {
                 int LA51_1 = input.LA(2);
 
-                if ( (LA51_1==ID) ) {
-                    switch ( input.LA(3) ) {
-                    case DOT:
-                    case COLON:
-                    case LEFT_SQUARE:
-                        {
-                        alt51=2;
-                        }
-                        break;
-                    case LEFT_PAREN:
-                        {
-                        switch ( input.LA(4) ) {
-                        case LEFT_PAREN:
-                            {
-                            int LA51_6 = input.LA(5);
-
-                            if ( (synpred3()) ) {
-                                alt51=1;
-                            }
-                            else if ( (true) ) {
-                                alt51=2;
-                            }
-                            else {
-                                if (backtracking>0) {failed=true; return retval;}
-                                NoViableAltException nvae =
-                                    new NoViableAltException("847:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );", 51, 6, input);
-
-                                throw nvae;
-                            }
-                            }
-                            break;
-                        case ID:
-                            {
-                            int LA51_7 = input.LA(5);
-
-                            if ( (synpred3()) ) {
-                                alt51=1;
-                            }
-                            else if ( (true) ) {
-                                alt51=2;
-                            }
-                            else {
-                                if (backtracking>0) {failed=true; return retval;}
-                                NoViableAltException nvae =
-                                    new NoViableAltException("847:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );", 51, 7, input);
-
-                                throw nvae;
-                            }
-                            }
-                            break;
-                        case VT_COMPILATION_UNIT:
-                        case VT_FUNCTION_IMPORT:
-                        case VT_FACT:
-                        case VT_CONSTRAINTS:
-                        case VT_LABEL:
-                        case VT_QUERY_ID:
-                        case VT_TEMPLATE_ID:
-                        case VT_TYPE_DECLARE_ID:
-                        case VT_RULE_ID:
-                        case VT_ENTRYPOINT_ID:
-                        case VT_SLOT_ID:
-                        case VT_SLOT:
-                        case VT_RULE_ATTRIBUTES:
-                        case VT_RHS_CHUNK:
-                        case VT_CURLY_CHUNK:
-                        case VT_SQUARE_CHUNK:
-                        case VT_PAREN_CHUNK:
-                        case VT_BEHAVIOR:
-                        case VT_AND_IMPLICIT:
-                        case VT_AND_PREFIX:
-                        case VT_OR_PREFIX:
-                        case VT_AND_INFIX:
-                        case VT_OR_INFIX:
-                        case VT_ACCUMULATE_INIT_CLAUSE:
-                        case VT_ACCUMULATE_ID_CLAUSE:
-                        case VT_FROM_SOURCE:
-                        case VT_EXPRESSION_CHAIN:
-                        case VT_PATTERN:
-                        case VT_FACT_BINDING:
-                        case VT_FACT_OR:
-                        case VT_BIND_FIELD:
-                        case VT_FIELD:
-                        case VT_ACCESSOR_PATH:
-                        case VT_ACCESSOR_ELEMENT:
-                        case VT_DATA_TYPE:
-                        case VT_PATTERN_TYPE:
-                        case VT_PACKAGE_ID:
-                        case VT_IMPORT_ID:
-                        case VT_GLOBAL_ID:
-                        case VT_FUNCTION_ID:
-                        case VT_PARAM_LIST:
-                        case VK_DATE_EFFECTIVE:
-                        case VK_DATE_EXPIRES:
-                        case VK_LOCK_ON_ACTIVE:
-                        case VK_NO_LOOP:
-                        case VK_AUTO_FOCUS:
-                        case VK_ACTIVATION_GROUP:
-                        case VK_AGENDA_GROUP:
-                        case VK_RULEFLOW_GROUP:
-                        case VK_DURATION:
-                        case VK_DIALECT:
-                        case VK_SALIENCE:
-                        case VK_ENABLED:
-                        case VK_ATTRIBUTES:
-                        case VK_RULE:
-                        case VK_EXTEND:
-                        case VK_IMPORT:
-                        case VK_PACKAGE:
-                        case VK_TEMPLATE:
-                        case VK_QUERY:
-                        case VK_DECLARE:
-                        case VK_FUNCTION:
-                        case VK_GLOBAL:
-                        case VK_EVAL:
-                        case VK_CONTAINS:
-                        case VK_MATCHES:
-                        case VK_EXCLUDES:
-                        case VK_SOUNDSLIKE:
-                        case VK_MEMBEROF:
-                        case VK_ENTRY_POINT:
-                        case VK_NOT:
-                        case VK_IN:
-                        case VK_OR:
-                        case VK_AND:
-                        case VK_EXISTS:
-                        case VK_FORALL:
-                        case VK_ACTION:
-                        case VK_REVERSE:
-                        case VK_RESULT:
-                        case VK_OPERATOR:
-                        case SEMICOLON:
-                        case DOT:
-                        case DOT_STAR:
-                        case END:
-                        case STRING:
-                        case COMMA:
-                        case RIGHT_PAREN:
-                        case AT:
-                        case COLON:
-                        case EQUALS:
-                        case WHEN:
-                        case BOOL:
-                        case INT:
-                        case DOUBLE_PIPE:
-                        case DOUBLE_AMPER:
-                        case FROM:
-                        case OVER:
-                        case ACCUMULATE:
-                        case INIT:
-                        case COLLECT:
-                        case ARROW:
-                        case EQUAL:
-                        case GREATER:
-                        case GREATER_EQUAL:
-                        case LESS:
-                        case LESS_EQUAL:
-                        case NOT_EQUAL:
-                        case FLOAT:
-                        case NULL:
-                        case LEFT_SQUARE:
-                        case RIGHT_SQUARE:
-                        case THEN:
-                        case LEFT_CURLY:
-                        case RIGHT_CURLY:
-                        case MISC:
-                        case EOL:
-                        case WS:
-                        case EscapeSequence:
-                        case HexDigit:
-                        case UnicodeEscape:
-                        case OctalEscape:
-                        case GRAVE_ACCENT:
-                        case TILDE:
-                        case SH_STYLE_SINGLE_LINE_COMMENT:
-                        case C_STYLE_SINGLE_LINE_COMMENT:
-                        case MULTI_LINE_COMMENT:
-                            {
-                            alt51=2;
-                            }
-                            break;
-                        default:
-                            if (backtracking>0) {failed=true; return retval;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("847:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );", 51, 4, input);
-
-                            throw nvae;
-                        }
-
-                        }
-                        break;
-                    case ID:
-                        {
-                        int LA51_5 = input.LA(4);
-
-                        if ( (synpred3()) ) {
-                            alt51=1;
-                        }
-                        else if ( (true) ) {
-                            alt51=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return retval;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("847:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );", 51, 5, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    default:
-                        if (backtracking>0) {failed=true; return retval;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("847:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );", 51, 3, input);
-
-                        throw nvae;
-                    }
-
+                if ( (synpred3_DRL()) ) {
+                    alt51=1;
                 }
-                else if ( (LA51_1==LEFT_PAREN) ) {
+                else if ( (true) ) {
                     alt51=2;
                 }
                 else {
-                    if (backtracking>0) {failed=true; return retval;}
+                    if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("847:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );", 51, 1, input);
+                        new NoViableAltException("", 51, 1, input);
 
                     throw nvae;
                 }
@@ -6263,32 +6022,32 @@
                 alt51=2;
             }
             else {
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("847:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );", 51, 0, input);
+                    new NoViableAltException("", 51, 0, input);
 
                 throw nvae;
             }
             switch (alt51) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:850:5: ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:830:5: ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN
                     {
-                    LEFT_PAREN128=(Token)input.LT(1);
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_and2229); if (failed) return retval;
-                    if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN128);
+                    LEFT_PAREN128=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_and2183); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN128);
 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN128, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_and_key_in_lhs_and2239);
+                    pushFollow(FOLLOW_and_key_in_lhs_and2193);
                     and=and_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_and_key.add(and.getTree());
-                    if ( backtracking==0 ) {
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_and_key.add(and.getTree());
+                    if ( state.backtracking==0 ) {
                       	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     }
-                    // src/main/resources/org/drools/lang/DRL.g:854:4: ( lhs_unary )+
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:834:4: ( lhs_unary )+
                     int cnt48=0;
                     loop48:
                     do {
@@ -6302,20 +6061,21 @@
 
                         switch (alt48) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:854:4: lhs_unary
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:834:4: lhs_unary
                     	    {
-                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2247);
+                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2201);
                     	    lhs_unary129=lhs_unary();
-                    	    _fsp--;
-                    	    if (failed) return retval;
-                    	    if ( backtracking==0 ) stream_lhs_unary.add(lhs_unary129.getTree());
 
+                    	    state._fsp--;
+                    	    if (state.failed) return retval;
+                    	    if ( state.backtracking==0 ) stream_lhs_unary.add(lhs_unary129.getTree());
+
                     	    }
                     	    break;
 
                     	default :
                     	    if ( cnt48 >= 1 ) break loop48;
-                    	    if (backtracking>0) {failed=true; return retval;}
+                    	    if (state.backtracking>0) {state.failed=true; return retval;}
                                 EarlyExitException eee =
                                     new EarlyExitException(48, input);
                                 throw eee;
@@ -6323,85 +6083,85 @@
                         cnt48++;
                     } while (true);
 
-                    RIGHT_PAREN130=(Token)input.LT(1);
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_and2253); if (failed) return retval;
-                    if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN130);
+                    RIGHT_PAREN130=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_and2207); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN130);
 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(RIGHT_PAREN130, DroolsEditorType.SYMBOL);	
                     }
 
+
                     // AST REWRITE
-                    // elements: RIGHT_PAREN, lhs_unary
+                    // elements: lhs_unary, RIGHT_PAREN
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
                     // rule list labels: 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                     retval.tree = root_0;
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 856:3: -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN )
+                    // 836:3: -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN )
                     {
-                        // src/main/resources/org/drools/lang/DRL.g:856:6: ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN )
+                        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:836:6: ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN )
                         {
                         Object root_1 = (Object)adaptor.nil();
-                        root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_AND_PREFIX, ((Token)and.start)), root_1);
+                        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_AND_PREFIX, (and!=null?((Token)and.start):null)), root_1);
 
                         if ( !(stream_lhs_unary.hasNext()) ) {
                             throw new RewriteEarlyExitException();
                         }
                         while ( stream_lhs_unary.hasNext() ) {
-                            adaptor.addChild(root_1, stream_lhs_unary.next());
+                            adaptor.addChild(root_1, stream_lhs_unary.nextTree());
 
                         }
                         stream_lhs_unary.reset();
-                        adaptor.addChild(root_1, stream_RIGHT_PAREN.next());
+                        adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
                         adaptor.addChild(root_0, root_1);
                         }
 
                     }
 
+                    retval.tree = root_0;}
                     }
-
-                    }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:857:4: ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )*
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:837:4: ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )*
                     {
-                    // src/main/resources/org/drools/lang/DRL.g:857:4: ( lhs_unary -> lhs_unary )
-                    // src/main/resources/org/drools/lang/DRL.g:857:5: lhs_unary
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:837:4: ( lhs_unary -> lhs_unary )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:837:5: lhs_unary
                     {
-                    pushFollow(FOLLOW_lhs_unary_in_lhs_and2277);
+                    pushFollow(FOLLOW_lhs_unary_in_lhs_and2231);
                     lhs_unary131=lhs_unary();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_lhs_unary.add(lhs_unary131.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_lhs_unary.add(lhs_unary131.getTree());
+
+
                     // AST REWRITE
                     // elements: lhs_unary
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
                     // rule list labels: 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                     retval.tree = root_0;
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 857:15: -> lhs_unary
+                    // 837:15: -> lhs_unary
                     {
-                        adaptor.addChild(root_0, stream_lhs_unary.next());
+                        adaptor.addChild(root_0, stream_lhs_unary.nextTree());
 
                     }
 
+                    retval.tree = root_0;}
                     }
 
-                    }
-
-                    // src/main/resources/org/drools/lang/DRL.g:858:3: ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )*
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:838:3: ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )*
                     loop50:
                     do {
                         int alt50=2;
@@ -6410,7 +6170,7 @@
                         if ( (LA50_0==ID) ) {
                             int LA50_2 = input.LA(2);
 
-                            if ( ((synpred4()&&(validateIdentifierKey(DroolsSoftKeywords.AND)))) ) {
+                            if ( ((synpred4_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.AND))))) ) {
                                 alt50=1;
                             }
 
@@ -6419,7 +6179,7 @@
                         else if ( (LA50_0==DOUBLE_AMPER) ) {
                             int LA50_3 = input.LA(2);
 
-                            if ( (synpred4()) ) {
+                            if ( (synpred4_DRL()) ) {
                                 alt50=1;
                             }
 
@@ -6429,48 +6189,48 @@
 
                         switch (alt50) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:858:5: ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:838:5: ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary
                     	    {
-                    	    // src/main/resources/org/drools/lang/DRL.g:858:30: (value= and_key | amper= DOUBLE_AMPER )
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:838:30: (value= and_key | amper= DOUBLE_AMPER )
                     	    int alt49=2;
                     	    int LA49_0 = input.LA(1);
 
-                    	    if ( (LA49_0==ID) && ((validateIdentifierKey(DroolsSoftKeywords.AND)))) {
+                    	    if ( (LA49_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AND))))) {
                     	        alt49=1;
                     	    }
                     	    else if ( (LA49_0==DOUBLE_AMPER) ) {
                     	        alt49=2;
                     	    }
                     	    else {
-                    	        if (backtracking>0) {failed=true; return retval;}
+                    	        if (state.backtracking>0) {state.failed=true; return retval;}
                     	        NoViableAltException nvae =
-                    	            new NoViableAltException("858:30: (value= and_key | amper= DOUBLE_AMPER )", 49, 0, input);
+                    	            new NoViableAltException("", 49, 0, input);
 
                     	        throw nvae;
                     	    }
                     	    switch (alt49) {
                     	        case 1 :
-                    	            // src/main/resources/org/drools/lang/DRL.g:858:31: value= and_key
+                    	            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:838:31: value= and_key
                     	            {
-                    	            pushFollow(FOLLOW_and_key_in_lhs_and2299);
+                    	            pushFollow(FOLLOW_and_key_in_lhs_and2253);
                     	            value=and_key();
-                    	            _fsp--;
-                    	            if (failed) return retval;
-                    	            if ( backtracking==0 ) stream_and_key.add(value.getTree());
-                    	            if ( backtracking==0 ) {
-                    	              andToken = ((Token)value.start);
+
+                    	            state._fsp--;
+                    	            if (state.failed) return retval;
+                    	            if ( state.backtracking==0 ) stream_and_key.add(value.getTree());
+                    	            if ( state.backtracking==0 ) {
+                    	              andToken = (value!=null?((Token)value.start):null);
                     	            }
 
                     	            }
                     	            break;
                     	        case 2 :
-                    	            // src/main/resources/org/drools/lang/DRL.g:858:73: amper= DOUBLE_AMPER
+                    	            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:838:73: amper= DOUBLE_AMPER
                     	            {
-                    	            amper=(Token)input.LT(1);
-                    	            match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_lhs_and2306); if (failed) return retval;
-                    	            if ( backtracking==0 ) stream_DOUBLE_AMPER.add(amper);
+                    	            amper=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_lhs_and2260); if (state.failed) return retval; 
+                    	            if ( state.backtracking==0 ) stream_DOUBLE_AMPER.add(amper);
 
-                    	            if ( backtracking==0 ) {
+                    	            if ( state.backtracking==0 ) {
                     	              andToken = amper; emit(amper, DroolsEditorType.SYMBOL);
                     	            }
 
@@ -6479,44 +6239,45 @@
 
                     	    }
 
-                    	    if ( backtracking==0 ) {
+                    	    if ( state.backtracking==0 ) {
                     	      	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     	    }
-                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2317);
+                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2271);
                     	    lhs_unary132=lhs_unary();
-                    	    _fsp--;
-                    	    if (failed) return retval;
-                    	    if ( backtracking==0 ) stream_lhs_unary.add(lhs_unary132.getTree());
 
+                    	    state._fsp--;
+                    	    if (state.failed) return retval;
+                    	    if ( state.backtracking==0 ) stream_lhs_unary.add(lhs_unary132.getTree());
+
+
                     	    // AST REWRITE
-                    	    // elements: lhs_unary, lhs_and
+                    	    // elements: lhs_and, lhs_unary
                     	    // token labels: 
                     	    // rule labels: retval
                     	    // token list labels: 
                     	    // rule list labels: 
-                    	    if ( backtracking==0 ) {
+                    	    if ( state.backtracking==0 ) {
                     	    retval.tree = root_0;
                     	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     	    root_0 = (Object)adaptor.nil();
-                    	    // 861:3: -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary )
+                    	    // 841:3: -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary )
                     	    {
-                    	        // src/main/resources/org/drools/lang/DRL.g:861:6: ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary )
+                    	        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:841:6: ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary )
                     	        {
                     	        Object root_1 = (Object)adaptor.nil();
-                    	        root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_AND_INFIX, andToken), root_1);
+                    	        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_AND_INFIX, andToken), root_1);
 
-                    	        adaptor.addChild(root_1, stream_retval.next());
-                    	        adaptor.addChild(root_1, stream_lhs_unary.next());
+                    	        adaptor.addChild(root_1, stream_retval.nextTree());
+                    	        adaptor.addChild(root_1, stream_lhs_unary.nextTree());
 
                     	        adaptor.addChild(root_0, root_1);
                     	        }
 
                     	    }
 
+                    	    retval.tree = root_0;}
                     	    }
-
-                    	    }
                     	    break;
 
                     	default :
@@ -6531,30 +6292,33 @@
             }
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end lhs_and
+    // $ANTLR end "lhs_and"
 
     public static class lhs_unary_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start lhs_unary
-    // src/main/resources/org/drools/lang/DRL.g:864:1: lhs_unary : ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )? ;
-    public final lhs_unary_return lhs_unary() throws RecognitionException {
-        lhs_unary_return retval = new lhs_unary_return();
+    // $ANTLR start "lhs_unary"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:844:1: lhs_unary : ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )? ;
+    public final DRLParser.lhs_unary_return lhs_unary() throws RecognitionException {
+        DRLParser.lhs_unary_return retval = new DRLParser.lhs_unary_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -6562,19 +6326,19 @@
         Token LEFT_PAREN138=null;
         Token RIGHT_PAREN140=null;
         Token SEMICOLON142=null;
-        lhs_exist_return lhs_exist133 = null;
+        DRLParser.lhs_exist_return lhs_exist133 = null;
 
-        lhs_not_binding_return lhs_not_binding134 = null;
+        DRLParser.lhs_not_binding_return lhs_not_binding134 = null;
 
-        lhs_not_return lhs_not135 = null;
+        DRLParser.lhs_not_return lhs_not135 = null;
 
-        lhs_eval_return lhs_eval136 = null;
+        DRLParser.lhs_eval_return lhs_eval136 = null;
 
-        lhs_forall_return lhs_forall137 = null;
+        DRLParser.lhs_forall_return lhs_forall137 = null;
 
-        lhs_or_return lhs_or139 = null;
+        DRLParser.lhs_or_return lhs_or139 = null;
 
-        pattern_source_return pattern_source141 = null;
+        DRLParser.pattern_source_return pattern_source141 = null;
 
 
         Object LEFT_PAREN138_tree=null;
@@ -6582,40 +6346,40 @@
         Object SEMICOLON142_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:865:2: ( ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )? )
-            // src/main/resources/org/drools/lang/DRL.g:865:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:845:2: ( ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )? )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:845:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )?
             {
             root_0 = (Object)adaptor.nil();
 
-            // src/main/resources/org/drools/lang/DRL.g:865:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:845:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )
             int alt52=7;
             int LA52_0 = input.LA(1);
 
             if ( (LA52_0==ID) ) {
                 int LA52_1 = input.LA(2);
 
-                if ( ((validateIdentifierKey(DroolsSoftKeywords.EXISTS))) ) {
+                if ( (((validateIdentifierKey(DroolsSoftKeywords.EXISTS)))) ) {
                     alt52=1;
                 }
-                else if ( ((validateNotWithBinding()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {
+                else if ( (((validateNotWithBinding())&&((validateIdentifierKey(DroolsSoftKeywords.NOT))))) ) {
                     alt52=2;
                 }
-                else if ( ((validateIdentifierKey(DroolsSoftKeywords.NOT))) ) {
+                else if ( (((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {
                     alt52=3;
                 }
-                else if ( ((validateIdentifierKey(DroolsSoftKeywords.EVAL))) ) {
+                else if ( (((validateIdentifierKey(DroolsSoftKeywords.EVAL)))) ) {
                     alt52=4;
                 }
-                else if ( ((validateIdentifierKey(DroolsSoftKeywords.FORALL))) ) {
+                else if ( (((validateIdentifierKey(DroolsSoftKeywords.FORALL)))) ) {
                     alt52=5;
                 }
                 else if ( (true) ) {
                     alt52=7;
                 }
                 else {
-                    if (backtracking>0) {failed=true; return retval;}
+                    if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("865:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )", 52, 1, input);
+                        new NoViableAltException("", 52, 1, input);
 
                     throw nvae;
                 }
@@ -6624,129 +6388,133 @@
                 alt52=6;
             }
             else {
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("865:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )", 52, 0, input);
+                    new NoViableAltException("", 52, 0, input);
 
                 throw nvae;
             }
             switch (alt52) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:865:6: lhs_exist
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:845:6: lhs_exist
                     {
-                    pushFollow(FOLLOW_lhs_exist_in_lhs_unary2348);
+                    pushFollow(FOLLOW_lhs_exist_in_lhs_unary2302);
                     lhs_exist133=lhs_exist();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, lhs_exist133.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_exist133.getTree());
+
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:866:4: {...}? => lhs_not_binding
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:846:4: {...}? => lhs_not_binding
                     {
-                    if ( !(validateNotWithBinding()) ) {
-                        if (backtracking>0) {failed=true; return retval;}
+                    if ( !((validateNotWithBinding())) ) {
+                        if (state.backtracking>0) {state.failed=true; return retval;}
                         throw new FailedPredicateException(input, "lhs_unary", "validateNotWithBinding()");
                     }
-                    pushFollow(FOLLOW_lhs_not_binding_in_lhs_unary2356);
+                    pushFollow(FOLLOW_lhs_not_binding_in_lhs_unary2310);
                     lhs_not_binding134=lhs_not_binding();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, lhs_not_binding134.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_not_binding134.getTree());
+
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:867:5: lhs_not
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:847:5: lhs_not
                     {
-                    pushFollow(FOLLOW_lhs_not_in_lhs_unary2362);
+                    pushFollow(FOLLOW_lhs_not_in_lhs_unary2316);
                     lhs_not135=lhs_not();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, lhs_not135.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_not135.getTree());
+
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DRL.g:868:5: lhs_eval
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:848:5: lhs_eval
                     {
-                    pushFollow(FOLLOW_lhs_eval_in_lhs_unary2368);
+                    pushFollow(FOLLOW_lhs_eval_in_lhs_unary2322);
                     lhs_eval136=lhs_eval();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, lhs_eval136.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_eval136.getTree());
+
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/lang/DRL.g:869:5: lhs_forall
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:849:5: lhs_forall
                     {
-                    pushFollow(FOLLOW_lhs_forall_in_lhs_unary2374);
+                    pushFollow(FOLLOW_lhs_forall_in_lhs_unary2328);
                     lhs_forall137=lhs_forall();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, lhs_forall137.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_forall137.getTree());
+
                     }
                     break;
                 case 6 :
-                    // src/main/resources/org/drools/lang/DRL.g:870:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:850:5: LEFT_PAREN lhs_or RIGHT_PAREN
                     {
-                    LEFT_PAREN138=(Token)input.LT(1);
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_unary2380); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    LEFT_PAREN138=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_unary2334); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN138, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_unary2391);
+                    pushFollow(FOLLOW_lhs_or_in_lhs_unary2345);
                     lhs_or139=lhs_or();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, lhs_or139.getTree());
-                    RIGHT_PAREN140=(Token)input.LT(1);
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_unary2397); if (failed) return retval;
-                    if ( backtracking==0 ) {
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_or139.getTree());
+                    RIGHT_PAREN140=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_unary2351); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     RIGHT_PAREN140_tree = (Object)adaptor.create(RIGHT_PAREN140);
                     adaptor.addChild(root_0, RIGHT_PAREN140_tree);
                     }
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(RIGHT_PAREN140, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 7 :
-                    // src/main/resources/org/drools/lang/DRL.g:873:5: pattern_source
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:853:5: pattern_source
                     {
-                    pushFollow(FOLLOW_pattern_source_in_lhs_unary2405);
+                    pushFollow(FOLLOW_pattern_source_in_lhs_unary2359);
                     pattern_source141=pattern_source();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, pattern_source141.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, pattern_source141.getTree());
+
                     }
                     break;
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:875:3: ( ( SEMICOLON )=> SEMICOLON )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:855:3: ( ( SEMICOLON )=> SEMICOLON )?
             int alt53=2;
             int LA53_0 = input.LA(1);
 
             if ( (LA53_0==SEMICOLON) ) {
                 int LA53_1 = input.LA(2);
 
-                if ( (synpred5()) ) {
+                if ( (synpred5_DRL()) ) {
                     alt53=1;
                 }
             }
             switch (alt53) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:875:4: ( SEMICOLON )=> SEMICOLON
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:855:4: ( SEMICOLON )=> SEMICOLON
                     {
-                    SEMICOLON142=(Token)input.LT(1);
-                    match(input,SEMICOLON,FOLLOW_SEMICOLON_in_lhs_unary2419); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    SEMICOLON142=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_lhs_unary2373); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                       	emit(SEMICOLON142, DroolsEditorType.SYMBOL);	
                     }
 
@@ -6760,43 +6528,46 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end lhs_unary
+    // $ANTLR end "lhs_unary"
 
     public static class lhs_exist_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start lhs_exist
-    // src/main/resources/org/drools/lang/DRL.g:878:1: lhs_exist : exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) ;
-    public final lhs_exist_return lhs_exist() throws RecognitionException {
-        lhs_exist_return retval = new lhs_exist_return();
+    // $ANTLR start "lhs_exist"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:858:1: lhs_exist : exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) ;
+    public final DRLParser.lhs_exist_return lhs_exist() throws RecognitionException {
+        DRLParser.lhs_exist_return retval = new DRLParser.lhs_exist_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token LEFT_PAREN145=null;
         Token RIGHT_PAREN147=null;
-        exists_key_return exists_key143 = null;
+        DRLParser.exists_key_return exists_key143 = null;
 
-        lhs_or_return lhs_or144 = null;
+        DRLParser.lhs_or_return lhs_or144 = null;
 
-        lhs_or_return lhs_or146 = null;
+        DRLParser.lhs_or_return lhs_or146 = null;
 
-        lhs_pattern_return lhs_pattern148 = null;
+        DRLParser.lhs_pattern_return lhs_pattern148 = null;
 
 
         Object LEFT_PAREN145_tree=null;
@@ -6807,105 +6578,150 @@
         RewriteRuleSubtreeStream stream_exists_key=new RewriteRuleSubtreeStream(adaptor,"rule exists_key");
         RewriteRuleSubtreeStream stream_lhs_pattern=new RewriteRuleSubtreeStream(adaptor,"rule lhs_pattern");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:879:2: ( exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) )
-            // src/main/resources/org/drools/lang/DRL.g:879:4: exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:859:2: ( exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:859:4: exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
             {
-            pushFollow(FOLLOW_exists_key_in_lhs_exist2435);
+            pushFollow(FOLLOW_exists_key_in_lhs_exist2389);
             exists_key143=exists_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_exists_key.add(exists_key143.getTree());
-            if ( backtracking==0 ) {
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_exists_key.add(exists_key143.getTree());
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_EXISTS);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:881:10: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:861:10: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
             int alt54=3;
-            alt54 = dfa54.predict(input);
+            int LA54_0 = input.LA(1);
+
+            if ( (LA54_0==LEFT_PAREN) ) {
+                int LA54_1 = input.LA(2);
+
+                if ( (synpred6_DRL()) ) {
+                    alt54=1;
+                }
+                else if ( (true) ) {
+                    alt54=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return retval;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 54, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else if ( (LA54_0==ID) ) {
+                int LA54_2 = input.LA(2);
+
+                if ( (((synpred6_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.FORALL))))||(synpred6_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.NOT))))||(synpred6_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EVAL))))||synpred6_DRL()||((synpred6_DRL()&&(validateNotWithBinding()))&&((validateIdentifierKey(DroolsSoftKeywords.NOT))))||(synpred6_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EXISTS)))))) ) {
+                    alt54=1;
+                }
+                else if ( (true) ) {
+                    alt54=3;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return retval;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 54, 2, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 54, 0, input);
+
+                throw nvae;
+            }
             switch (alt54) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:881:12: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:861:12: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
                     {
-                    pushFollow(FOLLOW_lhs_or_in_lhs_exist2462);
+                    pushFollow(FOLLOW_lhs_or_in_lhs_exist2416);
                     lhs_or144=lhs_or();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_lhs_or.add(lhs_or144.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or144.getTree());
+
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:882:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:862:5: LEFT_PAREN lhs_or RIGHT_PAREN
                     {
-                    LEFT_PAREN145=(Token)input.LT(1);
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_exist2469); if (failed) return retval;
-                    if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN145);
+                    LEFT_PAREN145=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_exist2423); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN145);
 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN145, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_exist2477);
+                    pushFollow(FOLLOW_lhs_or_in_lhs_exist2431);
                     lhs_or146=lhs_or();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_lhs_or.add(lhs_or146.getTree());
-                    RIGHT_PAREN147=(Token)input.LT(1);
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_exist2484); if (failed) return retval;
-                    if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN147);
 
-                    if ( backtracking==0 ) {
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or146.getTree());
+                    RIGHT_PAREN147=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_exist2438); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN147);
+
+                    if ( state.backtracking==0 ) {
                       	emit(RIGHT_PAREN147, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:885:12: lhs_pattern
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:865:12: lhs_pattern
                     {
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs_exist2499);
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs_exist2453);
                     lhs_pattern148=lhs_pattern();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_lhs_pattern.add(lhs_pattern148.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_lhs_pattern.add(lhs_pattern148.getTree());
+
                     }
                     break;
 
             }
 
 
+
             // AST REWRITE
-            // elements: lhs_pattern, exists_key, RIGHT_PAREN, lhs_or
+            // elements: lhs_pattern, lhs_or, exists_key, RIGHT_PAREN
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 887:10: -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+            // 867:10: -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
             {
-                // src/main/resources/org/drools/lang/DRL.g:887:13: ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:867:13: ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_exists_key.nextNode(), root_1);
 
-                // src/main/resources/org/drools/lang/DRL.g:887:26: ( lhs_or )?
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:867:26: ( lhs_or )?
                 if ( stream_lhs_or.hasNext() ) {
-                    adaptor.addChild(root_1, stream_lhs_or.next());
+                    adaptor.addChild(root_1, stream_lhs_or.nextTree());
 
                 }
                 stream_lhs_or.reset();
-                // src/main/resources/org/drools/lang/DRL.g:887:34: ( lhs_pattern )?
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:867:34: ( lhs_pattern )?
                 if ( stream_lhs_pattern.hasNext() ) {
-                    adaptor.addChild(root_1, stream_lhs_pattern.next());
+                    adaptor.addChild(root_1, stream_lhs_pattern.nextTree());
 
                 }
                 stream_lhs_pattern.reset();
-                // src/main/resources/org/drools/lang/DRL.g:887:47: ( RIGHT_PAREN )?
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:867:47: ( RIGHT_PAREN )?
                 if ( stream_RIGHT_PAREN.hasNext() ) {
-                    adaptor.addChild(root_1, stream_RIGHT_PAREN.next());
+                    adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
                 }
                 stream_RIGHT_PAREN.reset();
@@ -6915,86 +6731,91 @@
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end lhs_exist
+    // $ANTLR end "lhs_exist"
 
     public static class lhs_not_binding_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start lhs_not_binding
-    // src/main/resources/org/drools/lang/DRL.g:890:1: lhs_not_binding : not_key fact_binding -> ^( not_key ^( VT_PATTERN fact_binding ) ) ;
-    public final lhs_not_binding_return lhs_not_binding() throws RecognitionException {
-        lhs_not_binding_return retval = new lhs_not_binding_return();
+    // $ANTLR start "lhs_not_binding"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:870:1: lhs_not_binding : not_key fact_binding -> ^( not_key ^( VT_PATTERN fact_binding ) ) ;
+    public final DRLParser.lhs_not_binding_return lhs_not_binding() throws RecognitionException {
+        DRLParser.lhs_not_binding_return retval = new DRLParser.lhs_not_binding_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        not_key_return not_key149 = null;
+        DRLParser.not_key_return not_key149 = null;
 
-        fact_binding_return fact_binding150 = null;
+        DRLParser.fact_binding_return fact_binding150 = null;
 
 
         RewriteRuleSubtreeStream stream_fact_binding=new RewriteRuleSubtreeStream(adaptor,"rule fact_binding");
         RewriteRuleSubtreeStream stream_not_key=new RewriteRuleSubtreeStream(adaptor,"rule not_key");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:891:2: ( not_key fact_binding -> ^( not_key ^( VT_PATTERN fact_binding ) ) )
-            // src/main/resources/org/drools/lang/DRL.g:891:4: not_key fact_binding
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:871:2: ( not_key fact_binding -> ^( not_key ^( VT_PATTERN fact_binding ) ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:871:4: not_key fact_binding
             {
-            pushFollow(FOLLOW_not_key_in_lhs_not_binding2545);
+            pushFollow(FOLLOW_not_key_in_lhs_not_binding2499);
             not_key149=not_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_not_key.add(not_key149.getTree());
-            pushFollow(FOLLOW_fact_binding_in_lhs_not_binding2547);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_not_key.add(not_key149.getTree());
+            pushFollow(FOLLOW_fact_binding_in_lhs_not_binding2501);
             fact_binding150=fact_binding();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_fact_binding.add(fact_binding150.getTree());
 
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_fact_binding.add(fact_binding150.getTree());
+
+
             // AST REWRITE
             // elements: not_key, fact_binding
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 892:2: -> ^( not_key ^( VT_PATTERN fact_binding ) )
+            // 872:2: -> ^( not_key ^( VT_PATTERN fact_binding ) )
             {
-                // src/main/resources/org/drools/lang/DRL.g:892:5: ^( not_key ^( VT_PATTERN fact_binding ) )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:872:5: ^( not_key ^( VT_PATTERN fact_binding ) )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_not_key.nextNode(), root_1);
 
-                // src/main/resources/org/drools/lang/DRL.g:892:15: ^( VT_PATTERN fact_binding )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:872:15: ^( VT_PATTERN fact_binding )
                 {
                 Object root_2 = (Object)adaptor.nil();
-                root_2 = (Object)adaptor.becomeRoot(adaptor.create(VT_PATTERN, "VT_PATTERN"), root_2);
+                root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PATTERN, "VT_PATTERN"), root_2);
 
-                adaptor.addChild(root_2, stream_fact_binding.next());
+                adaptor.addChild(root_2, stream_fact_binding.nextTree());
 
                 adaptor.addChild(root_1, root_2);
                 }
@@ -7004,49 +6825,51 @@
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end lhs_not_binding
+    // $ANTLR end "lhs_not_binding"
 
     public static class lhs_not_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start lhs_not
-    // src/main/resources/org/drools/lang/DRL.g:895:1: lhs_not : not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) ;
-    public final lhs_not_return lhs_not() throws RecognitionException {
-        lhs_not_return retval = new lhs_not_return();
+    // $ANTLR start "lhs_not"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:875:1: lhs_not : not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) ;
+    public final DRLParser.lhs_not_return lhs_not() throws RecognitionException {
+        DRLParser.lhs_not_return retval = new DRLParser.lhs_not_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token LEFT_PAREN153=null;
         Token RIGHT_PAREN155=null;
-        not_key_return not_key151 = null;
+        DRLParser.not_key_return not_key151 = null;
 
-        lhs_or_return lhs_or152 = null;
+        DRLParser.lhs_or_return lhs_or152 = null;
 
-        lhs_or_return lhs_or154 = null;
+        DRLParser.lhs_or_return lhs_or154 = null;
 
-        lhs_pattern_return lhs_pattern156 = null;
+        DRLParser.lhs_pattern_return lhs_pattern156 = null;
 
 
         Object LEFT_PAREN153_tree=null;
@@ -7057,108 +6880,153 @@
         RewriteRuleSubtreeStream stream_not_key=new RewriteRuleSubtreeStream(adaptor,"rule not_key");
         RewriteRuleSubtreeStream stream_lhs_pattern=new RewriteRuleSubtreeStream(adaptor,"rule lhs_pattern");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:895:9: ( not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) )
-            // src/main/resources/org/drools/lang/DRL.g:895:11: not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:875:9: ( not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:875:11: not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
             {
-            pushFollow(FOLLOW_not_key_in_lhs_not2570);
+            pushFollow(FOLLOW_not_key_in_lhs_not2524);
             not_key151=not_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_not_key.add(not_key151.getTree());
-            if ( backtracking==0 ) {
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_not_key.add(not_key151.getTree());
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_NOT);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:897:3: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:877:3: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
             int alt55=3;
-            alt55 = dfa55.predict(input);
+            int LA55_0 = input.LA(1);
+
+            if ( (LA55_0==LEFT_PAREN) ) {
+                int LA55_1 = input.LA(2);
+
+                if ( (synpred7_DRL()) ) {
+                    alt55=1;
+                }
+                else if ( (true) ) {
+                    alt55=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return retval;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 55, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else if ( (LA55_0==ID) ) {
+                int LA55_2 = input.LA(2);
+
+                if ( (synpred7_DRL()) ) {
+                    alt55=1;
+                }
+                else if ( (true) ) {
+                    alt55=3;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return retval;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 55, 2, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 55, 0, input);
+
+                throw nvae;
+            }
             switch (alt55) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:897:5: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:877:5: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
                     {
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_not2592);
+                    pushFollow(FOLLOW_lhs_or_in_lhs_not2546);
                     lhs_or152=lhs_or();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_lhs_or.add(lhs_or152.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or152.getTree());
+
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:898:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:878:5: LEFT_PAREN lhs_or RIGHT_PAREN
                     {
-                    LEFT_PAREN153=(Token)input.LT(1);
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_not2599); if (failed) return retval;
-                    if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN153);
+                    LEFT_PAREN153=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_not2553); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN153);
 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN153, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_not2608);
+                    pushFollow(FOLLOW_lhs_or_in_lhs_not2562);
                     lhs_or154=lhs_or();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_lhs_or.add(lhs_or154.getTree());
-                    RIGHT_PAREN155=(Token)input.LT(1);
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_not2614); if (failed) return retval;
-                    if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN155);
 
-                    if ( backtracking==0 ) {
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or154.getTree());
+                    RIGHT_PAREN155=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_not2568); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN155);
+
+                    if ( state.backtracking==0 ) {
                       	emit(RIGHT_PAREN155, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:901:6: lhs_pattern
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:881:6: lhs_pattern
                     {
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs_not2624);
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs_not2578);
                     lhs_pattern156=lhs_pattern();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_lhs_pattern.add(lhs_pattern156.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_lhs_pattern.add(lhs_pattern156.getTree());
+
                     }
                     break;
 
             }
 
 
+
             // AST REWRITE
-            // elements: RIGHT_PAREN, not_key, lhs_pattern, lhs_or
+            // elements: lhs_or, not_key, RIGHT_PAREN, lhs_pattern
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 902:10: -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+            // 882:10: -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
             {
-                // src/main/resources/org/drools/lang/DRL.g:902:13: ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:882:13: ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_not_key.nextNode(), root_1);
 
-                // src/main/resources/org/drools/lang/DRL.g:902:23: ( lhs_or )?
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:882:23: ( lhs_or )?
                 if ( stream_lhs_or.hasNext() ) {
-                    adaptor.addChild(root_1, stream_lhs_or.next());
+                    adaptor.addChild(root_1, stream_lhs_or.nextTree());
 
                 }
                 stream_lhs_or.reset();
-                // src/main/resources/org/drools/lang/DRL.g:902:31: ( lhs_pattern )?
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:882:31: ( lhs_pattern )?
                 if ( stream_lhs_pattern.hasNext() ) {
-                    adaptor.addChild(root_1, stream_lhs_pattern.next());
+                    adaptor.addChild(root_1, stream_lhs_pattern.nextTree());
 
                 }
                 stream_lhs_pattern.reset();
-                // src/main/resources/org/drools/lang/DRL.g:902:44: ( RIGHT_PAREN )?
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:882:44: ( RIGHT_PAREN )?
                 if ( stream_RIGHT_PAREN.hasNext() ) {
-                    adaptor.addChild(root_1, stream_RIGHT_PAREN.next());
+                    adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
                 }
                 stream_RIGHT_PAREN.reset();
@@ -7168,136 +7036,143 @@
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end lhs_not
+    // $ANTLR end "lhs_not"
 
     public static class lhs_eval_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start lhs_eval
-    // src/main/resources/org/drools/lang/DRL.g:905:1: lhs_eval : ev= eval_key pc= paren_chunk -> ^( eval_key paren_chunk ) ;
-    public final lhs_eval_return lhs_eval() throws RecognitionException {
-        lhs_eval_return retval = new lhs_eval_return();
+    // $ANTLR start "lhs_eval"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:885:1: lhs_eval : ev= eval_key pc= paren_chunk -> ^( eval_key paren_chunk ) ;
+    public final DRLParser.lhs_eval_return lhs_eval() throws RecognitionException {
+        DRLParser.lhs_eval_return retval = new DRLParser.lhs_eval_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        eval_key_return ev = null;
+        DRLParser.eval_key_return ev = null;
 
-        paren_chunk_return pc = null;
+        DRLParser.paren_chunk_return pc = null;
 
 
         RewriteRuleSubtreeStream stream_eval_key=new RewriteRuleSubtreeStream(adaptor,"rule eval_key");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:906:2: (ev= eval_key pc= paren_chunk -> ^( eval_key paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:906:4: ev= eval_key pc= paren_chunk
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:886:2: (ev= eval_key pc= paren_chunk -> ^( eval_key paren_chunk ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:886:4: ev= eval_key pc= paren_chunk
             {
-            pushFollow(FOLLOW_eval_key_in_lhs_eval2663);
+            pushFollow(FOLLOW_eval_key_in_lhs_eval2617);
             ev=eval_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_eval_key.add(ev.getTree());
-            if ( backtracking==0 ) {
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_eval_key.add(ev.getTree());
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_EVAL);	
             }
-            pushFollow(FOLLOW_paren_chunk_in_lhs_eval2672);
+            pushFollow(FOLLOW_paren_chunk_in_lhs_eval2626);
             pc=paren_chunk();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_paren_chunk.add(pc.getTree());
-            if ( backtracking==0 ) {
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_paren_chunk.add(pc.getTree());
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
             }
-            if ( backtracking==0 ) {
-              	String body = safeSubstring( input.toString(pc.start,pc.stop), 1, input.toString(pc.start,pc.stop).length()-1 );
-              		checkTrailingSemicolon( body, ((Token)ev.start) );	
+            if ( state.backtracking==0 ) {
+              	String body = safeSubstring( (pc!=null?input.toString(pc.start,pc.stop):null), 1, (pc!=null?input.toString(pc.start,pc.stop):null).length()-1 );
+              		checkTrailingSemicolon( body, (ev!=null?((Token)ev.start):null) );	
             }
 
+
             // AST REWRITE
             // elements: eval_key, paren_chunk
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 912:3: -> ^( eval_key paren_chunk )
+            // 892:3: -> ^( eval_key paren_chunk )
             {
-                // src/main/resources/org/drools/lang/DRL.g:912:6: ^( eval_key paren_chunk )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:892:6: ^( eval_key paren_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_eval_key.nextNode(), root_1);
 
-                adaptor.addChild(root_1, stream_paren_chunk.next());
+                adaptor.addChild(root_1, stream_paren_chunk.nextTree());
 
                 adaptor.addChild(root_0, root_1);
                 }
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end lhs_eval
+    // $ANTLR end "lhs_eval"
 
     public static class lhs_forall_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start lhs_forall
-    // src/main/resources/org/drools/lang/DRL.g:915:1: lhs_forall : forall_key LEFT_PAREN ( lhs_pattern )+ RIGHT_PAREN -> ^( forall_key ( lhs_pattern )+ RIGHT_PAREN ) ;
-    public final lhs_forall_return lhs_forall() throws RecognitionException {
-        lhs_forall_return retval = new lhs_forall_return();
+    // $ANTLR start "lhs_forall"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:895:1: lhs_forall : forall_key LEFT_PAREN ( lhs_pattern )+ RIGHT_PAREN -> ^( forall_key ( lhs_pattern )+ RIGHT_PAREN ) ;
+    public final DRLParser.lhs_forall_return lhs_forall() throws RecognitionException {
+        DRLParser.lhs_forall_return retval = new DRLParser.lhs_forall_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token LEFT_PAREN158=null;
         Token RIGHT_PAREN160=null;
-        forall_key_return forall_key157 = null;
+        DRLParser.forall_key_return forall_key157 = null;
 
-        lhs_pattern_return lhs_pattern159 = null;
+        DRLParser.lhs_pattern_return lhs_pattern159 = null;
 
 
         Object LEFT_PAREN158_tree=null;
@@ -7307,22 +7182,22 @@
         RewriteRuleSubtreeStream stream_forall_key=new RewriteRuleSubtreeStream(adaptor,"rule forall_key");
         RewriteRuleSubtreeStream stream_lhs_pattern=new RewriteRuleSubtreeStream(adaptor,"rule lhs_pattern");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:916:2: ( forall_key LEFT_PAREN ( lhs_pattern )+ RIGHT_PAREN -> ^( forall_key ( lhs_pattern )+ RIGHT_PAREN ) )
-            // src/main/resources/org/drools/lang/DRL.g:916:4: forall_key LEFT_PAREN ( lhs_pattern )+ RIGHT_PAREN
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:896:2: ( forall_key LEFT_PAREN ( lhs_pattern )+ RIGHT_PAREN -> ^( forall_key ( lhs_pattern )+ RIGHT_PAREN ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:896:4: forall_key LEFT_PAREN ( lhs_pattern )+ RIGHT_PAREN
             {
-            pushFollow(FOLLOW_forall_key_in_lhs_forall2699);
+            pushFollow(FOLLOW_forall_key_in_lhs_forall2653);
             forall_key157=forall_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_forall_key.add(forall_key157.getTree());
-            LEFT_PAREN158=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forall2704); if (failed) return retval;
-            if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN158);
 
-            if ( backtracking==0 ) {
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_forall_key.add(forall_key157.getTree());
+            LEFT_PAREN158=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forall2658); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN158);
+
+            if ( state.backtracking==0 ) {
               	emit(LEFT_PAREN158, DroolsEditorType.SYMBOL);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:918:4: ( lhs_pattern )+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:898:4: ( lhs_pattern )+
             int cnt56=0;
             loop56:
             do {
@@ -7336,20 +7211,21 @@
 
                 switch (alt56) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:918:4: lhs_pattern
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:898:4: lhs_pattern
             	    {
-            	    pushFollow(FOLLOW_lhs_pattern_in_lhs_forall2712);
+            	    pushFollow(FOLLOW_lhs_pattern_in_lhs_forall2666);
             	    lhs_pattern159=lhs_pattern();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_lhs_pattern.add(lhs_pattern159.getTree());
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_lhs_pattern.add(lhs_pattern159.getTree());
+
             	    }
             	    break;
 
             	default :
             	    if ( cnt56 >= 1 ) break loop56;
-            	    if (backtracking>0) {failed=true; return retval;}
+            	    if (state.backtracking>0) {state.failed=true; return retval;}
                         EarlyExitException eee =
                             new EarlyExitException(56, input);
                         throw eee;
@@ -7357,28 +7233,28 @@
                 cnt56++;
             } while (true);
 
-            RIGHT_PAREN160=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forall2718); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN160);
+            RIGHT_PAREN160=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forall2672); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN160);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(RIGHT_PAREN160, DroolsEditorType.SYMBOL);	
             }
 
+
             // AST REWRITE
-            // elements: RIGHT_PAREN, forall_key, lhs_pattern
+            // elements: forall_key, lhs_pattern, RIGHT_PAREN
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 920:3: -> ^( forall_key ( lhs_pattern )+ RIGHT_PAREN )
+            // 900:3: -> ^( forall_key ( lhs_pattern )+ RIGHT_PAREN )
             {
-                // src/main/resources/org/drools/lang/DRL.g:920:6: ^( forall_key ( lhs_pattern )+ RIGHT_PAREN )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:900:6: ^( forall_key ( lhs_pattern )+ RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_forall_key.nextNode(), root_1);
@@ -7387,80 +7263,83 @@
                     throw new RewriteEarlyExitException();
                 }
                 while ( stream_lhs_pattern.hasNext() ) {
-                    adaptor.addChild(root_1, stream_lhs_pattern.next());
+                    adaptor.addChild(root_1, stream_lhs_pattern.nextTree());
 
                 }
                 stream_lhs_pattern.reset();
-                adaptor.addChild(root_1, stream_RIGHT_PAREN.next());
+                adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
                 adaptor.addChild(root_0, root_1);
                 }
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end lhs_forall
+    // $ANTLR end "lhs_forall"
 
     public static class pattern_source_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start pattern_source
-    // src/main/resources/org/drools/lang/DRL.g:923:1: pattern_source : lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )? ;
-    public final pattern_source_return pattern_source() throws RecognitionException {
-        pattern_source_return retval = new pattern_source_return();
+    // $ANTLR start "pattern_source"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:903:1: pattern_source : lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )? ;
+    public final DRLParser.pattern_source_return pattern_source() throws RecognitionException {
+        DRLParser.pattern_source_return retval = new DRLParser.pattern_source_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token FROM163=null;
-        lhs_pattern_return lhs_pattern161 = null;
+        DRLParser.lhs_pattern_return lhs_pattern161 = null;
 
-        over_clause_return over_clause162 = null;
+        DRLParser.over_clause_return over_clause162 = null;
 
-        accumulate_statement_return accumulate_statement164 = null;
+        DRLParser.accumulate_statement_return accumulate_statement164 = null;
 
-        collect_statement_return collect_statement165 = null;
+        DRLParser.collect_statement_return collect_statement165 = null;
 
-        entrypoint_statement_return entrypoint_statement166 = null;
+        DRLParser.entrypoint_statement_return entrypoint_statement166 = null;
 
-        from_source_return from_source167 = null;
+        DRLParser.from_source_return from_source167 = null;
 
 
         Object FROM163_tree=null;
 
          boolean isFailed = true;	
         try {
-            // src/main/resources/org/drools/lang/DRL.g:926:2: ( lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )? )
-            // src/main/resources/org/drools/lang/DRL.g:926:4: lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:906:2: ( lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )? )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:906:4: lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_lhs_pattern_in_pattern_source2754);
+            pushFollow(FOLLOW_lhs_pattern_in_pattern_source2708);
             lhs_pattern161=lhs_pattern();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, lhs_pattern161.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:927:3: ( over_clause )?
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_pattern161.getTree());
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:907:3: ( over_clause )?
             int alt57=2;
             int LA57_0 = input.LA(1);
 
@@ -7469,20 +7348,21 @@
             }
             switch (alt57) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:927:3: over_clause
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:907:3: over_clause
                     {
-                    pushFollow(FOLLOW_over_clause_in_pattern_source2758);
+                    pushFollow(FOLLOW_over_clause_in_pattern_source2712);
                     over_clause162=over_clause();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, over_clause162.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, over_clause162.getTree());
+
                     }
                     break;
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:928:3: ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:908:3: ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
             int alt59=2;
             int LA59_0 = input.LA(1);
 
@@ -7491,19 +7371,18 @@
             }
             switch (alt59) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:929:4: FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:909:4: FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
                     {
-                    FROM163=(Token)input.LT(1);
-                    match(input,FROM,FOLLOW_FROM_in_pattern_source2768); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    FROM163=(Token)match(input,FROM,FOLLOW_FROM_in_pattern_source2722); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     FROM163_tree = (Object)adaptor.create(FROM163);
                     root_0 = (Object)adaptor.becomeRoot(FROM163_tree, root_0);
                     }
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(FROM163, DroolsEditorType.KEYWORD);
                       			emit(Location.LOCATION_LHS_FROM);	
                     }
-                    // src/main/resources/org/drools/lang/DRL.g:932:11: ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:912:11: ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
                     int alt58=4;
                     switch ( input.LA(1) ) {
                     case ACCUMULATE:
@@ -7520,72 +7399,76 @@
                         {
                         int LA58_3 = input.LA(2);
 
-                        if ( (LA58_3==MISC) && ((validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.POINT)))) {
+                        if ( (LA58_3==MISC) && (((validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.POINT))))) {
                             alt58=3;
                         }
                         else if ( ((LA58_3>=SEMICOLON && LA58_3<=DOT)||LA58_3==END||(LA58_3>=LEFT_PAREN && LA58_3<=RIGHT_PAREN)||(LA58_3>=DOUBLE_PIPE && LA58_3<=DOUBLE_AMPER)||LA58_3==INIT||LA58_3==THEN) ) {
                             alt58=4;
                         }
                         else {
-                            if (backtracking>0) {failed=true; return retval;}
+                            if (state.backtracking>0) {state.failed=true; return retval;}
                             NoViableAltException nvae =
-                                new NoViableAltException("932:11: ( accumulate_statement | collect_statement | entrypoint_statement | from_source )", 58, 3, input);
+                                new NoViableAltException("", 58, 3, input);
 
                             throw nvae;
                         }
                         }
                         break;
                     default:
-                        if (backtracking>0) {failed=true; return retval;}
+                        if (state.backtracking>0) {state.failed=true; return retval;}
                         NoViableAltException nvae =
-                            new NoViableAltException("932:11: ( accumulate_statement | collect_statement | entrypoint_statement | from_source )", 58, 0, input);
+                            new NoViableAltException("", 58, 0, input);
 
                         throw nvae;
                     }
 
                     switch (alt58) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DRL.g:932:14: accumulate_statement
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:912:14: accumulate_statement
                             {
-                            pushFollow(FOLLOW_accumulate_statement_in_pattern_source2788);
+                            pushFollow(FOLLOW_accumulate_statement_in_pattern_source2742);
                             accumulate_statement164=accumulate_statement();
-                            _fsp--;
-                            if (failed) return retval;
-                            if ( backtracking==0 ) adaptor.addChild(root_0, accumulate_statement164.getTree());
 
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) adaptor.addChild(root_0, accumulate_statement164.getTree());
+
                             }
                             break;
                         case 2 :
-                            // src/main/resources/org/drools/lang/DRL.g:933:15: collect_statement
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:15: collect_statement
                             {
-                            pushFollow(FOLLOW_collect_statement_in_pattern_source2804);
+                            pushFollow(FOLLOW_collect_statement_in_pattern_source2758);
                             collect_statement165=collect_statement();
-                            _fsp--;
-                            if (failed) return retval;
-                            if ( backtracking==0 ) adaptor.addChild(root_0, collect_statement165.getTree());
 
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) adaptor.addChild(root_0, collect_statement165.getTree());
+
                             }
                             break;
                         case 3 :
-                            // src/main/resources/org/drools/lang/DRL.g:934:15: entrypoint_statement
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:914:15: entrypoint_statement
                             {
-                            pushFollow(FOLLOW_entrypoint_statement_in_pattern_source2821);
+                            pushFollow(FOLLOW_entrypoint_statement_in_pattern_source2775);
                             entrypoint_statement166=entrypoint_statement();
-                            _fsp--;
-                            if (failed) return retval;
-                            if ( backtracking==0 ) adaptor.addChild(root_0, entrypoint_statement166.getTree());
 
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) adaptor.addChild(root_0, entrypoint_statement166.getTree());
+
                             }
                             break;
                         case 4 :
-                            // src/main/resources/org/drools/lang/DRL.g:935:15: from_source
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:915:15: from_source
                             {
-                            pushFollow(FOLLOW_from_source_in_pattern_source2837);
+                            pushFollow(FOLLOW_from_source_in_pattern_source2791);
                             from_source167=from_source();
-                            _fsp--;
-                            if (failed) return retval;
-                            if ( backtracking==0 ) adaptor.addChild(root_0, from_source167.getTree());
 
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) adaptor.addChild(root_0, from_source167.getTree());
+
                             }
                             break;
 
@@ -7602,20 +7485,23 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
                isFailed = false;	
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
-            
+
             	if (isEditorInterfaceEnabled && input.LA(3) == EOF && input.LA(1) == ACCUMULATE) {
             			emit(input.LT(1), DroolsEditorType.KEYWORD);
             			emit(input.LT(2), DroolsEditorType.SYMBOL);
@@ -7631,52 +7517,52 @@
         }
         return retval;
     }
-    // $ANTLR end pattern_source
+    // $ANTLR end "pattern_source"
 
     public static class over_clause_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start over_clause
-    // src/main/resources/org/drools/lang/DRL.g:953:1: over_clause : OVER over_elements ( COMMA over_elements )* ;
-    public final over_clause_return over_clause() throws RecognitionException {
-        over_clause_return retval = new over_clause_return();
+    // $ANTLR start "over_clause"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:933:1: over_clause : OVER over_elements ( COMMA over_elements )* ;
+    public final DRLParser.over_clause_return over_clause() throws RecognitionException {
+        DRLParser.over_clause_return retval = new DRLParser.over_clause_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token OVER168=null;
         Token COMMA170=null;
-        over_elements_return over_elements169 = null;
+        DRLParser.over_elements_return over_elements169 = null;
 
-        over_elements_return over_elements171 = null;
+        DRLParser.over_elements_return over_elements171 = null;
 
 
         Object OVER168_tree=null;
         Object COMMA170_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:954:2: ( OVER over_elements ( COMMA over_elements )* )
-            // src/main/resources/org/drools/lang/DRL.g:954:4: OVER over_elements ( COMMA over_elements )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:934:2: ( OVER over_elements ( COMMA over_elements )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:934:4: OVER over_elements ( COMMA over_elements )*
             {
             root_0 = (Object)adaptor.nil();
 
-            OVER168=(Token)input.LT(1);
-            match(input,OVER,FOLLOW_OVER_in_over_clause2869); if (failed) return retval;
-            if ( backtracking==0 ) {
+            OVER168=(Token)match(input,OVER,FOLLOW_OVER_in_over_clause2823); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             OVER168_tree = (Object)adaptor.create(OVER168);
             root_0 = (Object)adaptor.becomeRoot(OVER168_tree, root_0);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(OVER168, DroolsEditorType.KEYWORD);	
             }
-            pushFollow(FOLLOW_over_elements_in_over_clause2874);
+            pushFollow(FOLLOW_over_elements_in_over_clause2828);
             over_elements169=over_elements();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, over_elements169.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:955:4: ( COMMA over_elements )*
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, over_elements169.getTree());
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:935:4: ( COMMA over_elements )*
             loop60:
             do {
                 int alt60=2;
@@ -7701,19 +7587,19 @@
 
                 switch (alt60) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:955:5: COMMA over_elements
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:935:5: COMMA over_elements
             	    {
-            	    COMMA170=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_over_clause2881); if (failed) return retval;
-            	    if ( backtracking==0 ) {
+            	    COMMA170=(Token)match(input,COMMA,FOLLOW_COMMA_in_over_clause2835); if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) {
             	      	emit(COMMA170, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_over_elements_in_over_clause2886);
+            	    pushFollow(FOLLOW_over_elements_in_over_clause2840);
             	    over_elements171=over_elements();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, over_elements171.getTree());
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, over_elements171.getTree());
+
             	    }
             	    break;
 
@@ -7727,30 +7613,33 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end over_clause
+    // $ANTLR end "over_clause"
 
     public static class over_elements_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start over_elements
-    // src/main/resources/org/drools/lang/DRL.g:958:1: over_elements : id1= ID COLON id2= ID paren_chunk -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk ) ;
-    public final over_elements_return over_elements() throws RecognitionException {
-        over_elements_return retval = new over_elements_return();
+    // $ANTLR start "over_elements"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:938:1: over_elements : id1= ID COLON id2= ID paren_chunk -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk ) ;
+    public final DRLParser.over_elements_return over_elements() throws RecognitionException {
+        DRLParser.over_elements_return retval = new DRLParser.over_elements_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -7758,7 +7647,7 @@
         Token id1=null;
         Token id2=null;
         Token COLON172=null;
-        paren_chunk_return paren_chunk173 = null;
+        DRLParser.paren_chunk_return paren_chunk173 = null;
 
 
         Object id1_tree=null;
@@ -7768,95 +7657,96 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:959:2: (id1= ID COLON id2= ID paren_chunk -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:959:4: id1= ID COLON id2= ID paren_chunk
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:939:2: (id1= ID COLON id2= ID paren_chunk -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:939:4: id1= ID COLON id2= ID paren_chunk
             {
-            id1=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_over_elements2901); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id1);
+            id1=(Token)match(input,ID,FOLLOW_ID_in_over_elements2855); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id1, DroolsEditorType.IDENTIFIER);	
             }
-            COLON172=(Token)input.LT(1);
-            match(input,COLON,FOLLOW_COLON_in_over_elements2908); if (failed) return retval;
-            if ( backtracking==0 ) stream_COLON.add(COLON172);
+            COLON172=(Token)match(input,COLON,FOLLOW_COLON_in_over_elements2862); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_COLON.add(COLON172);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(COLON172, DroolsEditorType.SYMBOL);	
             }
-            id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_over_elements2917); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id2);
+            id2=(Token)match(input,ID,FOLLOW_ID_in_over_elements2871); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id2, DroolsEditorType.IDENTIFIER);	
             }
-            pushFollow(FOLLOW_paren_chunk_in_over_elements2924);
+            pushFollow(FOLLOW_paren_chunk_in_over_elements2878);
             paren_chunk173=paren_chunk();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_paren_chunk.add(paren_chunk173.getTree());
 
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk173.getTree());
+
+
             // AST REWRITE
             // elements: id2, paren_chunk, id1
             // token labels: id1, id2
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleTokenStream stream_id1=new RewriteRuleTokenStream(adaptor,"token id1",id1);
             RewriteRuleTokenStream stream_id2=new RewriteRuleTokenStream(adaptor,"token id2",id2);
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 963:2: -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
+            // 943:2: -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
             {
-                // src/main/resources/org/drools/lang/DRL.g:963:5: ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:943:5: ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_BEHAVIOR, "VT_BEHAVIOR"), root_1);
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_BEHAVIOR, "VT_BEHAVIOR"), root_1);
 
-                adaptor.addChild(root_1, stream_id1.next());
-                adaptor.addChild(root_1, stream_id2.next());
-                adaptor.addChild(root_1, stream_paren_chunk.next());
+                adaptor.addChild(root_1, stream_id1.nextNode());
+                adaptor.addChild(root_1, stream_id2.nextNode());
+                adaptor.addChild(root_1, stream_paren_chunk.nextTree());
 
                 adaptor.addChild(root_0, root_1);
                 }
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end over_elements
+    // $ANTLR end "over_elements"
 
     public static class accumulate_statement_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start accumulate_statement
-    // src/main/resources/org/drools/lang/DRL.g:966:1: accumulate_statement : ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN ) ;
-    public final accumulate_statement_return accumulate_statement() throws RecognitionException {
-        accumulate_statement_return retval = new accumulate_statement_return();
+    // $ANTLR start "accumulate_statement"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:946:1: accumulate_statement : ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN ) ;
+    public final DRLParser.accumulate_statement_return accumulate_statement() throws RecognitionException {
+        DRLParser.accumulate_statement_return retval = new DRLParser.accumulate_statement_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -7865,11 +7755,11 @@
         Token LEFT_PAREN175=null;
         Token COMMA177=null;
         Token RIGHT_PAREN180=null;
-        lhs_or_return lhs_or176 = null;
+        DRLParser.lhs_or_return lhs_or176 = null;
 
-        accumulate_init_clause_return accumulate_init_clause178 = null;
+        DRLParser.accumulate_init_clause_return accumulate_init_clause178 = null;
 
-        accumulate_id_clause_return accumulate_id_clause179 = null;
+        DRLParser.accumulate_id_clause_return accumulate_id_clause179 = null;
 
 
         Object ACCUMULATE174_tree=null;
@@ -7884,32 +7774,31 @@
         RewriteRuleSubtreeStream stream_accumulate_init_clause=new RewriteRuleSubtreeStream(adaptor,"rule accumulate_init_clause");
         RewriteRuleSubtreeStream stream_accumulate_id_clause=new RewriteRuleSubtreeStream(adaptor,"rule accumulate_id_clause");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:967:2: ( ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN ) )
-            // src/main/resources/org/drools/lang/DRL.g:967:4: ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:947:2: ( ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:947:4: ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN
             {
-            ACCUMULATE174=(Token)input.LT(1);
-            match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_accumulate_statement2950); if (failed) return retval;
-            if ( backtracking==0 ) stream_ACCUMULATE.add(ACCUMULATE174);
+            ACCUMULATE174=(Token)match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_accumulate_statement2904); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ACCUMULATE.add(ACCUMULATE174);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(ACCUMULATE174, DroolsEditorType.KEYWORD);	
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_ACCUMULATE);	
             }
-            LEFT_PAREN175=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_statement2959); if (failed) return retval;
-            if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN175);
+            LEFT_PAREN175=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_statement2913); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN175);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(LEFT_PAREN175, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_lhs_or_in_accumulate_statement2967);
+            pushFollow(FOLLOW_lhs_or_in_accumulate_statement2921);
             lhs_or176=lhs_or();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_lhs_or.add(lhs_or176.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:971:3: ( COMMA )?
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or176.getTree());
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:951:3: ( COMMA )?
             int alt61=2;
             int LA61_0 = input.LA(1);
 
@@ -7918,11 +7807,10 @@
             }
             switch (alt61) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:971:3: COMMA
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:951:3: COMMA
                     {
-                    COMMA177=(Token)input.LT(1);
-                    match(input,COMMA,FOLLOW_COMMA_in_accumulate_statement2972); if (failed) return retval;
-                    if ( backtracking==0 ) stream_COMMA.add(COMMA177);
+                    COMMA177=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_statement2926); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_COMMA.add(COMMA177);
 
 
                     }
@@ -7930,10 +7818,10 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(COMMA177, DroolsEditorType.SYMBOL);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:972:3: ( accumulate_init_clause | accumulate_id_clause )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:952:3: ( accumulate_init_clause | accumulate_id_clause )
             int alt62=2;
             int LA62_0 = input.LA(1);
 
@@ -7944,117 +7832,121 @@
                 alt62=2;
             }
             else {
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("972:3: ( accumulate_init_clause | accumulate_id_clause )", 62, 0, input);
+                    new NoViableAltException("", 62, 0, input);
 
                 throw nvae;
             }
             switch (alt62) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:972:5: accumulate_init_clause
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:952:5: accumulate_init_clause
                     {
-                    pushFollow(FOLLOW_accumulate_init_clause_in_accumulate_statement2982);
+                    pushFollow(FOLLOW_accumulate_init_clause_in_accumulate_statement2936);
                     accumulate_init_clause178=accumulate_init_clause();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_accumulate_init_clause.add(accumulate_init_clause178.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_accumulate_init_clause.add(accumulate_init_clause178.getTree());
+
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:973:5: accumulate_id_clause
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:953:5: accumulate_id_clause
                     {
-                    pushFollow(FOLLOW_accumulate_id_clause_in_accumulate_statement2988);
+                    pushFollow(FOLLOW_accumulate_id_clause_in_accumulate_statement2942);
                     accumulate_id_clause179=accumulate_id_clause();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_accumulate_id_clause.add(accumulate_id_clause179.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_accumulate_id_clause.add(accumulate_id_clause179.getTree());
+
                     }
                     break;
 
             }
 
-            RIGHT_PAREN180=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_statement2996); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN180);
+            RIGHT_PAREN180=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_statement2950); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN180);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(RIGHT_PAREN180, DroolsEditorType.SYMBOL);	
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
             }
 
+
             // AST REWRITE
-            // elements: RIGHT_PAREN, lhs_or, accumulate_id_clause, accumulate_init_clause, ACCUMULATE
+            // elements: accumulate_init_clause, lhs_or, ACCUMULATE, accumulate_id_clause, RIGHT_PAREN
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 977:3: -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
+            // 957:3: -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
             {
-                // src/main/resources/org/drools/lang/DRL.g:977:6: ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:957:6: ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(stream_ACCUMULATE.next(), root_1);
+                root_1 = (Object)adaptor.becomeRoot(stream_ACCUMULATE.nextNode(), root_1);
 
-                adaptor.addChild(root_1, stream_lhs_or.next());
-                // src/main/resources/org/drools/lang/DRL.g:977:26: ( accumulate_init_clause )?
+                adaptor.addChild(root_1, stream_lhs_or.nextTree());
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:957:26: ( accumulate_init_clause )?
                 if ( stream_accumulate_init_clause.hasNext() ) {
-                    adaptor.addChild(root_1, stream_accumulate_init_clause.next());
+                    adaptor.addChild(root_1, stream_accumulate_init_clause.nextTree());
 
                 }
                 stream_accumulate_init_clause.reset();
-                // src/main/resources/org/drools/lang/DRL.g:977:50: ( accumulate_id_clause )?
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:957:50: ( accumulate_id_clause )?
                 if ( stream_accumulate_id_clause.hasNext() ) {
-                    adaptor.addChild(root_1, stream_accumulate_id_clause.next());
+                    adaptor.addChild(root_1, stream_accumulate_id_clause.nextTree());
 
                 }
                 stream_accumulate_id_clause.reset();
-                adaptor.addChild(root_1, stream_RIGHT_PAREN.next());
+                adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
                 adaptor.addChild(root_0, root_1);
                 }
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end accumulate_statement
+    // $ANTLR end "accumulate_statement"
 
     public static class accumulate_init_clause_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start accumulate_init_clause
-    // src/main/resources/org/drools/lang/DRL.g:981:1: accumulate_init_clause : INIT pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE] -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) ) ;
-    public final accumulate_init_clause_return accumulate_init_clause() throws RecognitionException {
-        accumulate_init_clause_return retval = new accumulate_init_clause_return();
+    // $ANTLR start "accumulate_init_clause"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:961:1: accumulate_init_clause : INIT pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE] -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) ) ;
+    public final DRLParser.accumulate_init_clause_return accumulate_init_clause() throws RecognitionException {
+        DRLParser.accumulate_init_clause_return retval = new DRLParser.accumulate_init_clause_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -8063,19 +7955,19 @@
         Token cm2=null;
         Token cm3=null;
         Token INIT181=null;
-        accumulate_paren_chunk_return pc1 = null;
+        DRLParser.accumulate_paren_chunk_return pc1 = null;
 
-        accumulate_paren_chunk_return pc2 = null;
+        DRLParser.accumulate_paren_chunk_return pc2 = null;
 
-        accumulate_paren_chunk_return pc3 = null;
+        DRLParser.accumulate_paren_chunk_return pc3 = null;
 
-        result_key_return res1 = null;
+        DRLParser.result_key_return res1 = null;
 
-        accumulate_paren_chunk_return pc4 = null;
+        DRLParser.accumulate_paren_chunk_return pc4 = null;
 
-        action_key_return action_key182 = null;
+        DRLParser.action_key_return action_key182 = null;
 
-        reverse_key_return reverse_key183 = null;
+        DRLParser.reverse_key_return reverse_key183 = null;
 
 
         Object cm1_tree=null;
@@ -8090,25 +7982,25 @@
         RewriteRuleSubtreeStream stream_action_key=new RewriteRuleSubtreeStream(adaptor,"rule action_key");
          boolean isFailed = true;	
         try {
-            // src/main/resources/org/drools/lang/DRL.g:984:2: ( INIT pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE] -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) ) )
-            // src/main/resources/org/drools/lang/DRL.g:984:4: INIT pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE]
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:964:2: ( INIT pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE] -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:964:4: INIT pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE]
             {
-            INIT181=(Token)input.LT(1);
-            match(input,INIT,FOLLOW_INIT_in_accumulate_init_clause3042); if (failed) return retval;
-            if ( backtracking==0 ) stream_INIT.add(INIT181);
+            INIT181=(Token)match(input,INIT,FOLLOW_INIT_in_accumulate_init_clause2996); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_INIT.add(INIT181);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(INIT181, DroolsEditorType.KEYWORD);	
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_ACCUMULATE_INIT);	
             }
-            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3053);
+            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3007);
             pc1=accumulate_paren_chunk(Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE);
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_accumulate_paren_chunk.add(pc1.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:986:84: (cm1= COMMA )?
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_accumulate_paren_chunk.add(pc1.getTree());
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:966:84: (cm1= COMMA )?
             int alt63=2;
             int LA63_0 = input.LA(1);
 
@@ -8117,11 +8009,10 @@
             }
             switch (alt63) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:986:84: cm1= COMMA
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:966:84: cm1= COMMA
                     {
-                    cm1=(Token)input.LT(1);
-                    match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3058); if (failed) return retval;
-                    if ( backtracking==0 ) stream_COMMA.add(cm1);
+                    cm1=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3012); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_COMMA.add(cm1);
 
 
                     }
@@ -8129,23 +8020,25 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(cm1, DroolsEditorType.SYMBOL);	
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION);	
             }
-            pushFollow(FOLLOW_action_key_in_accumulate_init_clause3069);
+            pushFollow(FOLLOW_action_key_in_accumulate_init_clause3023);
             action_key182=action_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_action_key.add(action_key182.getTree());
-            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3073);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_action_key.add(action_key182.getTree());
+            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3027);
             pc2=accumulate_paren_chunk(Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE);
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_accumulate_paren_chunk.add(pc2.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:988:97: (cm2= COMMA )?
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_accumulate_paren_chunk.add(pc2.getTree());
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:968:97: (cm2= COMMA )?
             int alt64=2;
             int LA64_0 = input.LA(1);
 
@@ -8154,11 +8047,10 @@
             }
             switch (alt64) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:988:97: cm2= COMMA
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:968:97: cm2= COMMA
                     {
-                    cm2=(Token)input.LT(1);
-                    match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3078); if (failed) return retval;
-                    if ( backtracking==0 ) stream_COMMA.add(cm2);
+                    cm2=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3032); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_COMMA.add(cm2);
 
 
                     }
@@ -8166,30 +8058,40 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(cm2, DroolsEditorType.SYMBOL);	
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:991:2: ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:971:2: ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )?
             int alt66=2;
-            alt66 = dfa66.predict(input);
+            int LA66_0 = input.LA(1);
+
+            if ( (LA66_0==ID) ) {
+                int LA66_1 = input.LA(2);
+
+                if ( (((validateIdentifierKey(DroolsSoftKeywords.REVERSE)))) ) {
+                    alt66=1;
+                }
+            }
             switch (alt66) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:991:4: reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:971:4: reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )?
                     {
-                    pushFollow(FOLLOW_reverse_key_in_accumulate_init_clause3091);
+                    pushFollow(FOLLOW_reverse_key_in_accumulate_init_clause3045);
                     reverse_key183=reverse_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_reverse_key.add(reverse_key183.getTree());
-                    pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3095);
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_reverse_key.add(reverse_key183.getTree());
+                    pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3049);
                     pc3=accumulate_paren_chunk(Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE);
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_accumulate_paren_chunk.add(pc3.getTree());
-                    // src/main/resources/org/drools/lang/DRL.g:991:100: (cm3= COMMA )?
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_accumulate_paren_chunk.add(pc3.getTree());
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:971:100: (cm3= COMMA )?
                     int alt65=2;
                     int LA65_0 = input.LA(1);
 
@@ -8198,11 +8100,10 @@
                     }
                     switch (alt65) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DRL.g:991:100: cm3= COMMA
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:971:100: cm3= COMMA
                             {
-                            cm3=(Token)input.LT(1);
-                            match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3100); if (failed) return retval;
-                            if ( backtracking==0 ) stream_COMMA.add(cm3);
+                            cm3=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3054); if (state.failed) return retval; 
+                            if ( state.backtracking==0 ) stream_COMMA.add(cm3);
 
 
                             }
@@ -8210,7 +8111,7 @@
 
                     }
 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(cm3, DroolsEditorType.SYMBOL);	
                     }
 
@@ -8219,30 +8120,33 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT);	
             }
-            pushFollow(FOLLOW_result_key_in_accumulate_init_clause3115);
+            pushFollow(FOLLOW_result_key_in_accumulate_init_clause3069);
             res1=result_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_result_key.add(res1.getTree());
-            if ( backtracking==0 ) {
-              	emit(((Token)res1.start), DroolsEditorType.KEYWORD);	
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_result_key.add(res1.getTree());
+            if ( state.backtracking==0 ) {
+              	emit((res1!=null?((Token)res1.start):null), DroolsEditorType.KEYWORD);	
             }
-            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3121);
+            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3075);
             pc4=accumulate_paren_chunk(Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE);
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_accumulate_paren_chunk.add(pc4.getTree());
 
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_accumulate_paren_chunk.add(pc4.getTree());
+
+
             // AST REWRITE
-            // elements: pc4, result_key, pc2, reverse_key, pc3, action_key, pc1, INIT
+            // elements: INIT, pc4, pc3, reverse_key, pc2, pc1, result_key, action_key
             // token labels: 
             // rule labels: pc2, pc3, pc4, pc1, retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_pc2=new RewriteRuleSubtreeStream(adaptor,"token pc2",pc2!=null?pc2.tree:null);
             RewriteRuleSubtreeStream stream_pc3=new RewriteRuleSubtreeStream(adaptor,"token pc3",pc3!=null?pc3.tree:null);
@@ -8251,52 +8155,52 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 994:2: -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) )
+            // 974:2: -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) )
             {
-                // src/main/resources/org/drools/lang/DRL.g:994:5: ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:974:5: ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_ACCUMULATE_INIT_CLAUSE, "VT_ACCUMULATE_INIT_CLAUSE"), root_1);
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_ACCUMULATE_INIT_CLAUSE, "VT_ACCUMULATE_INIT_CLAUSE"), root_1);
 
-                // src/main/resources/org/drools/lang/DRL.g:994:33: ^( INIT $pc1)
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:974:33: ^( INIT $pc1)
                 {
                 Object root_2 = (Object)adaptor.nil();
-                root_2 = (Object)adaptor.becomeRoot(stream_INIT.next(), root_2);
+                root_2 = (Object)adaptor.becomeRoot(stream_INIT.nextNode(), root_2);
 
-                adaptor.addChild(root_2, stream_pc1.next());
+                adaptor.addChild(root_2, stream_pc1.nextTree());
 
                 adaptor.addChild(root_1, root_2);
                 }
-                // src/main/resources/org/drools/lang/DRL.g:994:46: ^( action_key $pc2)
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:974:46: ^( action_key $pc2)
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(stream_action_key.nextNode(), root_2);
 
-                adaptor.addChild(root_2, stream_pc2.next());
+                adaptor.addChild(root_2, stream_pc2.nextTree());
 
                 adaptor.addChild(root_1, root_2);
                 }
-                // src/main/resources/org/drools/lang/DRL.g:994:65: ( ^( reverse_key $pc3) )?
-                if ( stream_reverse_key.hasNext()||stream_pc3.hasNext() ) {
-                    // src/main/resources/org/drools/lang/DRL.g:994:65: ^( reverse_key $pc3)
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:974:65: ( ^( reverse_key $pc3) )?
+                if ( stream_pc3.hasNext()||stream_reverse_key.hasNext() ) {
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:974:65: ^( reverse_key $pc3)
                     {
                     Object root_2 = (Object)adaptor.nil();
                     root_2 = (Object)adaptor.becomeRoot(stream_reverse_key.nextNode(), root_2);
 
-                    adaptor.addChild(root_2, stream_pc3.next());
+                    adaptor.addChild(root_2, stream_pc3.nextTree());
 
                     adaptor.addChild(root_1, root_2);
                     }
 
                 }
-                stream_reverse_key.reset();
                 stream_pc3.reset();
-                // src/main/resources/org/drools/lang/DRL.g:994:86: ^( result_key $pc4)
+                stream_reverse_key.reset();
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:974:86: ^( result_key $pc4)
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(stream_result_key.nextNode(), root_2);
 
-                adaptor.addChild(root_2, stream_pc4.next());
+                adaptor.addChild(root_2, stream_pc4.nextTree());
 
                 adaptor.addChild(root_1, root_2);
                 }
@@ -8306,23 +8210,25 @@
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
                isFailed = false;	
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
              
@@ -8338,88 +8244,92 @@
         }
         return retval;
     }
-    // $ANTLR end accumulate_init_clause
+    // $ANTLR end "accumulate_init_clause"
 
     public static class accumulate_paren_chunk_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start accumulate_paren_chunk
-    // src/main/resources/org/drools/lang/DRL.g:1007:1: accumulate_paren_chunk[int locationType] : pc= accumulate_paren_chunk_data[false,$locationType] -> VT_PAREN_CHUNK[$pc.start,text] ;
-    public final accumulate_paren_chunk_return accumulate_paren_chunk(int locationType) throws RecognitionException {
-        accumulate_paren_chunk_return retval = new accumulate_paren_chunk_return();
+    // $ANTLR start "accumulate_paren_chunk"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:987:1: accumulate_paren_chunk[int locationType] : pc= accumulate_paren_chunk_data[false,$locationType] -> VT_PAREN_CHUNK[$pc.start,text] ;
+    public final DRLParser.accumulate_paren_chunk_return accumulate_paren_chunk(int locationType) throws RecognitionException {
+        DRLParser.accumulate_paren_chunk_return retval = new DRLParser.accumulate_paren_chunk_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        accumulate_paren_chunk_data_return pc = null;
+        DRLParser.accumulate_paren_chunk_data_return pc = null;
 
 
         RewriteRuleSubtreeStream stream_accumulate_paren_chunk_data=new RewriteRuleSubtreeStream(adaptor,"rule accumulate_paren_chunk_data");
-        
+
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1010:3: (pc= accumulate_paren_chunk_data[false,$locationType] -> VT_PAREN_CHUNK[$pc.start,text] )
-            // src/main/resources/org/drools/lang/DRL.g:1010:5: pc= accumulate_paren_chunk_data[false,$locationType]
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:990:3: (pc= accumulate_paren_chunk_data[false,$locationType] -> VT_PAREN_CHUNK[$pc.start,text] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:990:5: pc= accumulate_paren_chunk_data[false,$locationType]
             {
-            pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3179);
+            pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3133);
             pc=accumulate_paren_chunk_data(false, locationType);
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_accumulate_paren_chunk_data.add(pc.getTree());
-            if ( backtracking==0 ) {
-              text = input.toString(pc.start,pc.stop);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_accumulate_paren_chunk_data.add(pc.getTree());
+            if ( state.backtracking==0 ) {
+              text = (pc!=null?input.toString(pc.start,pc.stop):null);
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1011:2: -> VT_PAREN_CHUNK[$pc.start,text]
+            // 991:2: -> VT_PAREN_CHUNK[$pc.start,text]
             {
-                adaptor.addChild(root_0, adaptor.create(VT_PAREN_CHUNK, ((Token)pc.start), text));
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_PAREN_CHUNK, (pc!=null?((Token)pc.start):null), text));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end accumulate_paren_chunk
+    // $ANTLR end "accumulate_paren_chunk"
 
     public static class accumulate_paren_chunk_data_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start accumulate_paren_chunk_data
-    // src/main/resources/org/drools/lang/DRL.g:1014:1: accumulate_paren_chunk_data[boolean isRecursive, int locationType] : lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN ;
-    public final accumulate_paren_chunk_data_return accumulate_paren_chunk_data(boolean isRecursive, int locationType) throws RecognitionException {
-        accumulate_paren_chunk_data_return retval = new accumulate_paren_chunk_data_return();
+    // $ANTLR start "accumulate_paren_chunk_data"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:994:1: accumulate_paren_chunk_data[boolean isRecursive, int locationType] : lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN ;
+    public final DRLParser.accumulate_paren_chunk_data_return accumulate_paren_chunk_data(boolean isRecursive, int locationType) throws RecognitionException {
+        DRLParser.accumulate_paren_chunk_data_return retval = new DRLParser.accumulate_paren_chunk_data_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -8427,7 +8337,7 @@
         Token lp1=null;
         Token any=null;
         Token rp1=null;
-        accumulate_paren_chunk_data_return accumulate_paren_chunk_data184 = null;
+        DRLParser.accumulate_paren_chunk_data_return accumulate_paren_chunk_data184 = null;
 
 
         Object lp1_tree=null;
@@ -8435,18 +8345,17 @@
         Object rp1_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1015:2: (lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN )
-            // src/main/resources/org/drools/lang/DRL.g:1015:4: lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:995:2: (lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:995:4: lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN
             {
             root_0 = (Object)adaptor.nil();
 
-            lp1=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data3203); if (failed) return retval;
-            if ( backtracking==0 ) {
+            lp1=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data3157); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             lp1_tree = (Object)adaptor.create(lp1);
             adaptor.addChild(root_0, lp1_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	if (!isRecursive) {
               				emit(lp1, DroolsEditorType.SYMBOL);
               				emit(locationType);
@@ -8455,7 +8364,7 @@
               			}	
               		
             }
-            // src/main/resources/org/drools/lang/DRL.g:1023:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1003:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )*
             loop67:
             do {
                 int alt67=3;
@@ -8471,36 +8380,36 @@
 
                 switch (alt67) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1023:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1003:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
             	    {
             	    any=(Token)input.LT(1);
             	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=STRING)||input.LA(1)==COMMA||(input.LA(1)>=AT && input.LA(1)<=MULTI_LINE_COMMENT) ) {
             	        input.consume();
-            	        if ( backtracking==0 ) adaptor.addChild(root_0, adaptor.create(any));
-            	        errorRecovery=false;failed=false;
+            	        if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(any));
+            	        state.errorRecovery=false;state.failed=false;
             	    }
             	    else {
-            	        if (backtracking>0) {failed=true; return retval;}
-            	        MismatchedSetException mse =
-            	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_accumulate_paren_chunk_data3215);    throw mse;
+            	        if (state.backtracking>0) {state.failed=true; return retval;}
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        throw mse;
             	    }
 
-            	    if ( backtracking==0 ) {
+            	    if ( state.backtracking==0 ) {
             	       emit(any, DroolsEditorType.CODE_CHUNK); 
             	    }
 
             	    }
             	    break;
             	case 2 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1023:87: accumulate_paren_chunk_data[true,-1]
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1003:87: accumulate_paren_chunk_data[true,-1]
             	    {
-            	    pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3231);
+            	    pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3185);
             	    accumulate_paren_chunk_data184=accumulate_paren_chunk_data(true, -1);
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, accumulate_paren_chunk_data184.getTree());
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, accumulate_paren_chunk_data184.getTree());
+
             	    }
             	    break;
 
@@ -8509,13 +8418,12 @@
                 }
             } while (true);
 
-            rp1=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3242); if (failed) return retval;
-            if ( backtracking==0 ) {
+            rp1=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3196); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             rp1_tree = (Object)adaptor.create(rp1);
             adaptor.addChild(root_0, rp1_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	if (!isRecursive) {
               				emit(rp1, DroolsEditorType.SYMBOL);
               			} else {
@@ -8528,114 +8436,120 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end accumulate_paren_chunk_data
+    // $ANTLR end "accumulate_paren_chunk_data"
 
     public static class accumulate_id_clause_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start accumulate_id_clause
-    // src/main/resources/org/drools/lang/DRL.g:1033:1: accumulate_id_clause : ID paren_chunk -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk ) ;
-    public final accumulate_id_clause_return accumulate_id_clause() throws RecognitionException {
-        accumulate_id_clause_return retval = new accumulate_id_clause_return();
+    // $ANTLR start "accumulate_id_clause"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1013:1: accumulate_id_clause : ID paren_chunk -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk ) ;
+    public final DRLParser.accumulate_id_clause_return accumulate_id_clause() throws RecognitionException {
+        DRLParser.accumulate_id_clause_return retval = new DRLParser.accumulate_id_clause_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token ID185=null;
-        paren_chunk_return paren_chunk186 = null;
+        DRLParser.paren_chunk_return paren_chunk186 = null;
 
 
         Object ID185_tree=null;
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1034:2: ( ID paren_chunk -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:1034:4: ID paren_chunk
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1014:2: ( ID paren_chunk -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1014:4: ID paren_chunk
             {
-            ID185=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_accumulate_id_clause3258); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID185);
+            ID185=(Token)match(input,ID,FOLLOW_ID_in_accumulate_id_clause3212); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID185);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(ID185, DroolsEditorType.IDENTIFIER);	
             }
-            pushFollow(FOLLOW_paren_chunk_in_accumulate_id_clause3264);
+            pushFollow(FOLLOW_paren_chunk_in_accumulate_id_clause3218);
             paren_chunk186=paren_chunk();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_paren_chunk.add(paren_chunk186.getTree());
 
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk186.getTree());
+
+
             // AST REWRITE
             // elements: paren_chunk, ID
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1036:2: -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
+            // 1016:2: -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1036:5: ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1016:5: ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_ACCUMULATE_ID_CLAUSE, "VT_ACCUMULATE_ID_CLAUSE"), root_1);
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_ACCUMULATE_ID_CLAUSE, "VT_ACCUMULATE_ID_CLAUSE"), root_1);
 
-                adaptor.addChild(root_1, stream_ID.next());
-                adaptor.addChild(root_1, stream_paren_chunk.next());
+                adaptor.addChild(root_1, stream_ID.nextNode());
+                adaptor.addChild(root_1, stream_paren_chunk.nextTree());
 
                 adaptor.addChild(root_0, root_1);
                 }
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end accumulate_id_clause
+    // $ANTLR end "accumulate_id_clause"
 
     public static class collect_statement_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start collect_statement
-    // src/main/resources/org/drools/lang/DRL.g:1039:1: collect_statement : COLLECT LEFT_PAREN pattern_source RIGHT_PAREN -> ^( COLLECT pattern_source RIGHT_PAREN ) ;
-    public final collect_statement_return collect_statement() throws RecognitionException {
-        collect_statement_return retval = new collect_statement_return();
+    // $ANTLR start "collect_statement"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1019:1: collect_statement : COLLECT LEFT_PAREN pattern_source RIGHT_PAREN -> ^( COLLECT pattern_source RIGHT_PAREN ) ;
+    public final DRLParser.collect_statement_return collect_statement() throws RecognitionException {
+        DRLParser.collect_statement_return retval = new DRLParser.collect_statement_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -8643,7 +8557,7 @@
         Token COLLECT187=null;
         Token LEFT_PAREN188=null;
         Token RIGHT_PAREN190=null;
-        pattern_source_return pattern_source189 = null;
+        DRLParser.pattern_source_return pattern_source189 = null;
 
 
         Object COLLECT187_tree=null;
@@ -8654,185 +8568,191 @@
         RewriteRuleTokenStream stream_COLLECT=new RewriteRuleTokenStream(adaptor,"token COLLECT");
         RewriteRuleSubtreeStream stream_pattern_source=new RewriteRuleSubtreeStream(adaptor,"rule pattern_source");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1040:2: ( COLLECT LEFT_PAREN pattern_source RIGHT_PAREN -> ^( COLLECT pattern_source RIGHT_PAREN ) )
-            // src/main/resources/org/drools/lang/DRL.g:1040:4: COLLECT LEFT_PAREN pattern_source RIGHT_PAREN
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1020:2: ( COLLECT LEFT_PAREN pattern_source RIGHT_PAREN -> ^( COLLECT pattern_source RIGHT_PAREN ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1020:4: COLLECT LEFT_PAREN pattern_source RIGHT_PAREN
             {
-            COLLECT187=(Token)input.LT(1);
-            match(input,COLLECT,FOLLOW_COLLECT_in_collect_statement3286); if (failed) return retval;
-            if ( backtracking==0 ) stream_COLLECT.add(COLLECT187);
+            COLLECT187=(Token)match(input,COLLECT,FOLLOW_COLLECT_in_collect_statement3240); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_COLLECT.add(COLLECT187);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(COLLECT187, DroolsEditorType.KEYWORD);	
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_COLLECT);	
             }
-            LEFT_PAREN188=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_collect_statement3295); if (failed) return retval;
-            if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN188);
+            LEFT_PAREN188=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_collect_statement3249); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN188);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(LEFT_PAREN188, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_pattern_source_in_collect_statement3302);
+            pushFollow(FOLLOW_pattern_source_in_collect_statement3256);
             pattern_source189=pattern_source();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_pattern_source.add(pattern_source189.getTree());
-            RIGHT_PAREN190=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_collect_statement3307); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN190);
 
-            if ( backtracking==0 ) {
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_pattern_source.add(pattern_source189.getTree());
+            RIGHT_PAREN190=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_collect_statement3261); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN190);
+
+            if ( state.backtracking==0 ) {
               	emit(RIGHT_PAREN190, DroolsEditorType.SYMBOL);	
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
             }
 
+
             // AST REWRITE
-            // elements: pattern_source, RIGHT_PAREN, COLLECT
+            // elements: RIGHT_PAREN, COLLECT, pattern_source
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1046:2: -> ^( COLLECT pattern_source RIGHT_PAREN )
+            // 1026:2: -> ^( COLLECT pattern_source RIGHT_PAREN )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1046:5: ^( COLLECT pattern_source RIGHT_PAREN )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1026:5: ^( COLLECT pattern_source RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(stream_COLLECT.next(), root_1);
+                root_1 = (Object)adaptor.becomeRoot(stream_COLLECT.nextNode(), root_1);
 
-                adaptor.addChild(root_1, stream_pattern_source.next());
-                adaptor.addChild(root_1, stream_RIGHT_PAREN.next());
+                adaptor.addChild(root_1, stream_pattern_source.nextTree());
+                adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
                 adaptor.addChild(root_0, root_1);
                 }
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end collect_statement
+    // $ANTLR end "collect_statement"
 
     public static class entrypoint_statement_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start entrypoint_statement
-    // src/main/resources/org/drools/lang/DRL.g:1049:1: entrypoint_statement : entry_point_key entrypoint_id -> ^( entry_point_key entrypoint_id ) ;
-    public final entrypoint_statement_return entrypoint_statement() throws RecognitionException {
-        entrypoint_statement_return retval = new entrypoint_statement_return();
+    // $ANTLR start "entrypoint_statement"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1029:1: entrypoint_statement : entry_point_key entrypoint_id -> ^( entry_point_key entrypoint_id ) ;
+    public final DRLParser.entrypoint_statement_return entrypoint_statement() throws RecognitionException {
+        DRLParser.entrypoint_statement_return retval = new DRLParser.entrypoint_statement_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        entry_point_key_return entry_point_key191 = null;
+        DRLParser.entry_point_key_return entry_point_key191 = null;
 
-        entrypoint_id_return entrypoint_id192 = null;
+        DRLParser.entrypoint_id_return entrypoint_id192 = null;
 
 
         RewriteRuleSubtreeStream stream_entrypoint_id=new RewriteRuleSubtreeStream(adaptor,"rule entrypoint_id");
         RewriteRuleSubtreeStream stream_entry_point_key=new RewriteRuleSubtreeStream(adaptor,"rule entry_point_key");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1050:2: ( entry_point_key entrypoint_id -> ^( entry_point_key entrypoint_id ) )
-            // src/main/resources/org/drools/lang/DRL.g:1050:4: entry_point_key entrypoint_id
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1030:2: ( entry_point_key entrypoint_id -> ^( entry_point_key entrypoint_id ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1030:4: entry_point_key entrypoint_id
             {
-            pushFollow(FOLLOW_entry_point_key_in_entrypoint_statement3334);
+            pushFollow(FOLLOW_entry_point_key_in_entrypoint_statement3288);
             entry_point_key191=entry_point_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_entry_point_key.add(entry_point_key191.getTree());
-            if ( backtracking==0 ) {
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_entry_point_key.add(entry_point_key191.getTree());
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_COLLECT);	
             }
-            pushFollow(FOLLOW_entrypoint_id_in_entrypoint_statement3342);
+            pushFollow(FOLLOW_entrypoint_id_in_entrypoint_statement3296);
             entrypoint_id192=entrypoint_id();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_entrypoint_id.add(entrypoint_id192.getTree());
-            if ( backtracking==0 ) {
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_entrypoint_id.add(entrypoint_id192.getTree());
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
             }
 
+
             // AST REWRITE
             // elements: entrypoint_id, entry_point_key
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1054:2: -> ^( entry_point_key entrypoint_id )
+            // 1034:2: -> ^( entry_point_key entrypoint_id )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1054:5: ^( entry_point_key entrypoint_id )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1034:5: ^( entry_point_key entrypoint_id )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_entry_point_key.nextNode(), root_1);
 
-                adaptor.addChild(root_1, stream_entrypoint_id.next());
+                adaptor.addChild(root_1, stream_entrypoint_id.nextTree());
 
                 adaptor.addChild(root_0, root_1);
                 }
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end entrypoint_statement
+    // $ANTLR end "entrypoint_statement"
 
     public static class entrypoint_id_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start entrypoint_id
-    // src/main/resources/org/drools/lang/DRL.g:1057:1: entrypoint_id : (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] );
-    public final entrypoint_id_return entrypoint_id() throws RecognitionException {
-        entrypoint_id_return retval = new entrypoint_id_return();
+    // $ANTLR start "entrypoint_id"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1037:1: entrypoint_id : (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] );
+    public final DRLParser.entrypoint_id_return entrypoint_id() throws RecognitionException {
+        DRLParser.entrypoint_id_return retval = new DRLParser.entrypoint_id_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -8844,7 +8764,7 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1058:2: (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1038:2: (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] )
             int alt68=2;
             int LA68_0 = input.LA(1);
 
@@ -8855,113 +8775,114 @@
                 alt68=2;
             }
             else {
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1057:1: entrypoint_id : (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] );", 68, 0, input);
+                    new NoViableAltException("", 68, 0, input);
 
                 throw nvae;
             }
             switch (alt68) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1058:5: value= ID
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1038:5: value= ID
                     {
-                    value=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_entrypoint_id3368); if (failed) return retval;
-                    if ( backtracking==0 ) stream_ID.add(value);
+                    value=(Token)match(input,ID,FOLLOW_ID_in_entrypoint_id3322); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_ID.add(value);
 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(value, DroolsEditorType.IDENTIFIER);	
                     }
 
+
                     // AST REWRITE
                     // elements: 
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
                     // rule list labels: 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                     retval.tree = root_0;
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1059:3: -> VT_ENTRYPOINT_ID[$value]
+                    // 1039:3: -> VT_ENTRYPOINT_ID[$value]
                     {
-                        adaptor.addChild(root_0, adaptor.create(VT_ENTRYPOINT_ID, value));
+                        adaptor.addChild(root_0, (Object)adaptor.create(VT_ENTRYPOINT_ID, value));
 
                     }
 
+                    retval.tree = root_0;}
                     }
-
-                    }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1060:5: value= STRING
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1040:5: value= STRING
                     {
-                    value=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_entrypoint_id3385); if (failed) return retval;
-                    if ( backtracking==0 ) stream_STRING.add(value);
+                    value=(Token)match(input,STRING,FOLLOW_STRING_in_entrypoint_id3339); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_STRING.add(value);
 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(value, DroolsEditorType.IDENTIFIER);	
                     }
 
+
                     // AST REWRITE
                     // elements: 
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
                     // rule list labels: 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                     retval.tree = root_0;
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1061:3: -> VT_ENTRYPOINT_ID[$value]
+                    // 1041:3: -> VT_ENTRYPOINT_ID[$value]
                     {
-                        adaptor.addChild(root_0, adaptor.create(VT_ENTRYPOINT_ID, value));
+                        adaptor.addChild(root_0, (Object)adaptor.create(VT_ENTRYPOINT_ID, value));
 
                     }
 
+                    retval.tree = root_0;}
                     }
-
-                    }
                     break;
 
             }
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end entrypoint_id
+    // $ANTLR end "entrypoint_id"
 
     public static class from_source_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start from_source
-    // src/main/resources/org/drools/lang/DRL.g:1064:1: from_source : ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )? -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? ) ;
-    public final from_source_return from_source() throws RecognitionException {
-        from_source_return retval = new from_source_return();
+    // $ANTLR start "from_source"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1044:1: from_source : ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )? -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? ) ;
+    public final DRLParser.from_source_return from_source() throws RecognitionException {
+        DRLParser.from_source_return retval = new DRLParser.from_source_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token ID193=null;
-        paren_chunk_return args = null;
+        DRLParser.paren_chunk_return args = null;
 
-        expression_chain_return expression_chain194 = null;
+        DRLParser.expression_chain_return expression_chain194 = null;
 
 
         Object ID193_tree=null;
@@ -8969,60 +8890,35 @@
         RewriteRuleSubtreeStream stream_expression_chain=new RewriteRuleSubtreeStream(adaptor,"rule expression_chain");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1065:2: ( ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )? -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? ) )
-            // src/main/resources/org/drools/lang/DRL.g:1065:4: ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1045:2: ( ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )? -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1045:4: ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )?
             {
-            ID193=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_from_source3405); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID193);
+            ID193=(Token)match(input,ID,FOLLOW_ID_in_from_source3359); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID193);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(ID193, DroolsEditorType.IDENTIFIER);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:1066:3: ( ( LEFT_PAREN )=>args= paren_chunk )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1046:3: ( ( LEFT_PAREN )=>args= paren_chunk )?
             int alt69=2;
-            int LA69_0 = input.LA(1);
-
-            if ( (LA69_0==LEFT_PAREN) ) {
-                int LA69_1 = input.LA(2);
-
-                if ( (LA69_1==LEFT_PAREN) ) {
-                    int LA69_3 = input.LA(3);
-
-                    if ( (synpred8()) ) {
-                        alt69=1;
-                    }
-                }
-                else if ( (LA69_1==ID) ) {
-                    int LA69_4 = input.LA(3);
-
-                    if ( (synpred8()) ) {
-                        alt69=1;
-                    }
-                }
-                else if ( ((LA69_1>=VT_COMPILATION_UNIT && LA69_1<=SEMICOLON)||(LA69_1>=DOT && LA69_1<=STRING)||LA69_1==COMMA||(LA69_1>=AT && LA69_1<=MULTI_LINE_COMMENT)) && (synpred8())) {
-                    alt69=1;
-                }
-                else if ( (LA69_1==RIGHT_PAREN) && (synpred8())) {
-                    alt69=1;
-                }
-            }
+            alt69 = dfa69.predict(input);
             switch (alt69) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1066:5: ( LEFT_PAREN )=>args= paren_chunk
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1046:5: ( LEFT_PAREN )=>args= paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_from_source3420);
+                    pushFollow(FOLLOW_paren_chunk_in_from_source3374);
                     args=paren_chunk();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_paren_chunk.add(args.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_paren_chunk.add(args.getTree());
+
                     }
                     break;
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:1067:3: ( expression_chain )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1047:3: ( expression_chain )?
             int alt70=2;
             int LA70_0 = input.LA(1);
 
@@ -9031,20 +8927,21 @@
             }
             switch (alt70) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1067:3: expression_chain
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1047:3: expression_chain
                     {
-                    pushFollow(FOLLOW_expression_chain_in_from_source3427);
+                    pushFollow(FOLLOW_expression_chain_in_from_source3381);
                     expression_chain194=expression_chain();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_expression_chain.add(expression_chain194.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_expression_chain.add(expression_chain194.getTree());
+
                     }
                     break;
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	if ( input.LA(1) == EOF && input.get(input.index() - 1).getType() == WS) {
               			emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);
               		} else if ( input.LA(1) != EOF ) {
@@ -9052,34 +8949,35 @@
               		}	
             }
 
+
             // AST REWRITE
-            // elements: expression_chain, paren_chunk, ID
+            // elements: expression_chain, ID, paren_chunk
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1073:2: -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
+            // 1053:2: -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1073:5: ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1053:5: ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_FROM_SOURCE, "VT_FROM_SOURCE"), root_1);
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FROM_SOURCE, "VT_FROM_SOURCE"), root_1);
 
-                adaptor.addChild(root_1, stream_ID.next());
-                // src/main/resources/org/drools/lang/DRL.g:1073:25: ( paren_chunk )?
+                adaptor.addChild(root_1, stream_ID.nextNode());
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1053:25: ( paren_chunk )?
                 if ( stream_paren_chunk.hasNext() ) {
-                    adaptor.addChild(root_1, stream_paren_chunk.next());
+                    adaptor.addChild(root_1, stream_paren_chunk.nextTree());
 
                 }
                 stream_paren_chunk.reset();
-                // src/main/resources/org/drools/lang/DRL.g:1073:38: ( expression_chain )?
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1053:38: ( expression_chain )?
                 if ( stream_expression_chain.hasNext() ) {
-                    adaptor.addChild(root_1, stream_expression_chain.next());
+                    adaptor.addChild(root_1, stream_expression_chain.nextTree());
 
                 }
                 stream_expression_chain.reset();
@@ -9089,47 +8987,49 @@
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end from_source
+    // $ANTLR end "from_source"
 
     public static class expression_chain_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start expression_chain
-    // src/main/resources/org/drools/lang/DRL.g:1076:1: expression_chain : DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )? -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? ) ;
-    public final expression_chain_return expression_chain() throws RecognitionException {
-        expression_chain_return retval = new expression_chain_return();
+    // $ANTLR start "expression_chain"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1056:1: expression_chain : DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )? -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? ) ;
+    public final DRLParser.expression_chain_return expression_chain() throws RecognitionException {
+        DRLParser.expression_chain_return retval = new DRLParser.expression_chain_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token DOT195=null;
         Token ID196=null;
-        paren_chunk_return paren_chunk197 = null;
+        DRLParser.paren_chunk_return paren_chunk197 = null;
 
-        square_chunk_return square_chunk198 = null;
+        DRLParser.square_chunk_return square_chunk198 = null;
 
-        expression_chain_return expression_chain199 = null;
+        DRLParser.expression_chain_return expression_chain199 = null;
 
 
         Object DOT195_tree=null;
@@ -9140,214 +9040,57 @@
         RewriteRuleSubtreeStream stream_expression_chain=new RewriteRuleSubtreeStream(adaptor,"rule expression_chain");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1077:2: ( DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )? -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? ) )
-            // src/main/resources/org/drools/lang/DRL.g:1078:3: DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1057:2: ( DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )? -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1058:3: DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )?
             {
-            DOT195=(Token)input.LT(1);
-            match(input,DOT,FOLLOW_DOT_in_expression_chain3460); if (failed) return retval;
-            if ( backtracking==0 ) stream_DOT.add(DOT195);
+            DOT195=(Token)match(input,DOT,FOLLOW_DOT_in_expression_chain3414); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_DOT.add(DOT195);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(DOT195, DroolsEditorType.IDENTIFIER);	
             }
-            ID196=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_expression_chain3467); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID196);
+            ID196=(Token)match(input,ID,FOLLOW_ID_in_expression_chain3421); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID196);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(ID196, DroolsEditorType.IDENTIFIER);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:1080:4: ({...}? paren_chunk | square_chunk )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1060:4: ({...}? paren_chunk | square_chunk )?
             int alt71=3;
-            int LA71_0 = input.LA(1);
-
-            if ( (LA71_0==LEFT_PAREN) ) {
-                switch ( input.LA(2) ) {
-                    case LEFT_PAREN:
-                        {
-                        int LA71_4 = input.LA(3);
-
-                        if ( (input.LA(1) == LEFT_PAREN) ) {
-                            alt71=1;
-                        }
-                        }
-                        break;
-                    case ID:
-                        {
-                        int LA71_5 = input.LA(3);
-
-                        if ( (input.LA(1) == LEFT_PAREN) ) {
-                            alt71=1;
-                        }
-                        }
-                        break;
-                    case VT_COMPILATION_UNIT:
-                    case VT_FUNCTION_IMPORT:
-                    case VT_FACT:
-                    case VT_CONSTRAINTS:
-                    case VT_LABEL:
-                    case VT_QUERY_ID:
-                    case VT_TEMPLATE_ID:
-                    case VT_TYPE_DECLARE_ID:
-                    case VT_RULE_ID:
-                    case VT_ENTRYPOINT_ID:
-                    case VT_SLOT_ID:
-                    case VT_SLOT:
-                    case VT_RULE_ATTRIBUTES:
-                    case VT_RHS_CHUNK:
-                    case VT_CURLY_CHUNK:
-                    case VT_SQUARE_CHUNK:
-                    case VT_PAREN_CHUNK:
-                    case VT_BEHAVIOR:
-                    case VT_AND_IMPLICIT:
-                    case VT_AND_PREFIX:
-                    case VT_OR_PREFIX:
-                    case VT_AND_INFIX:
-                    case VT_OR_INFIX:
-                    case VT_ACCUMULATE_INIT_CLAUSE:
-                    case VT_ACCUMULATE_ID_CLAUSE:
-                    case VT_FROM_SOURCE:
-                    case VT_EXPRESSION_CHAIN:
-                    case VT_PATTERN:
-                    case VT_FACT_BINDING:
-                    case VT_FACT_OR:
-                    case VT_BIND_FIELD:
-                    case VT_FIELD:
-                    case VT_ACCESSOR_PATH:
-                    case VT_ACCESSOR_ELEMENT:
-                    case VT_DATA_TYPE:
-                    case VT_PATTERN_TYPE:
-                    case VT_PACKAGE_ID:
-                    case VT_IMPORT_ID:
-                    case VT_GLOBAL_ID:
-                    case VT_FUNCTION_ID:
-                    case VT_PARAM_LIST:
-                    case VK_DATE_EFFECTIVE:
-                    case VK_DATE_EXPIRES:
-                    case VK_LOCK_ON_ACTIVE:
-                    case VK_NO_LOOP:
-                    case VK_AUTO_FOCUS:
-                    case VK_ACTIVATION_GROUP:
-                    case VK_AGENDA_GROUP:
-                    case VK_RULEFLOW_GROUP:
-                    case VK_DURATION:
-                    case VK_DIALECT:
-                    case VK_SALIENCE:
-                    case VK_ENABLED:
-                    case VK_ATTRIBUTES:
-                    case VK_RULE:
-                    case VK_EXTEND:
-                    case VK_IMPORT:
-                    case VK_PACKAGE:
-                    case VK_TEMPLATE:
-                    case VK_QUERY:
-                    case VK_DECLARE:
-                    case VK_FUNCTION:
-                    case VK_GLOBAL:
-                    case VK_EVAL:
-                    case VK_CONTAINS:
-                    case VK_MATCHES:
-                    case VK_EXCLUDES:
-                    case VK_SOUNDSLIKE:
-                    case VK_MEMBEROF:
-                    case VK_ENTRY_POINT:
-                    case VK_NOT:
-                    case VK_IN:
-                    case VK_OR:
-                    case VK_AND:
-                    case VK_EXISTS:
-                    case VK_FORALL:
-                    case VK_ACTION:
-                    case VK_REVERSE:
-                    case VK_RESULT:
-                    case VK_OPERATOR:
-                    case SEMICOLON:
-                    case DOT:
-                    case DOT_STAR:
-                    case END:
-                    case STRING:
-                    case COMMA:
-                    case RIGHT_PAREN:
-                    case AT:
-                    case COLON:
-                    case EQUALS:
-                    case WHEN:
-                    case BOOL:
-                    case INT:
-                    case DOUBLE_PIPE:
-                    case DOUBLE_AMPER:
-                    case FROM:
-                    case OVER:
-                    case ACCUMULATE:
-                    case INIT:
-                    case COLLECT:
-                    case ARROW:
-                    case EQUAL:
-                    case GREATER:
-                    case GREATER_EQUAL:
-                    case LESS:
-                    case LESS_EQUAL:
-                    case NOT_EQUAL:
-                    case FLOAT:
-                    case NULL:
-                    case LEFT_SQUARE:
-                    case RIGHT_SQUARE:
-                    case THEN:
-                    case LEFT_CURLY:
-                    case RIGHT_CURLY:
-                    case MISC:
-                    case EOL:
-                    case WS:
-                    case EscapeSequence:
-                    case HexDigit:
-                    case UnicodeEscape:
-                    case OctalEscape:
-                    case GRAVE_ACCENT:
-                    case TILDE:
-                    case SH_STYLE_SINGLE_LINE_COMMENT:
-                    case C_STYLE_SINGLE_LINE_COMMENT:
-                    case MULTI_LINE_COMMENT:
-                        {
-                        alt71=1;
-                        }
-                        break;
-                }
-
-            }
-            else if ( (LA71_0==LEFT_SQUARE) ) {
-                alt71=2;
-            }
+            alt71 = dfa71.predict(input);
             switch (alt71) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1081:6: {...}? paren_chunk
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1061:6: {...}? paren_chunk
                     {
-                    if ( !(input.LA(1) == LEFT_PAREN) ) {
-                        if (backtracking>0) {failed=true; return retval;}
+                    if ( !((input.LA(1) == LEFT_PAREN)) ) {
+                        if (state.backtracking>0) {state.failed=true; return retval;}
                         throw new FailedPredicateException(input, "expression_chain", "input.LA(1) == LEFT_PAREN");
                     }
-                    pushFollow(FOLLOW_paren_chunk_in_expression_chain3483);
+                    pushFollow(FOLLOW_paren_chunk_in_expression_chain3437);
                     paren_chunk197=paren_chunk();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_paren_chunk.add(paren_chunk197.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk197.getTree());
+
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1083:6: square_chunk
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1063:6: square_chunk
                     {
-                    pushFollow(FOLLOW_square_chunk_in_expression_chain3497);
+                    pushFollow(FOLLOW_square_chunk_in_expression_chain3451);
                     square_chunk198=square_chunk();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_square_chunk.add(square_chunk198.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_square_chunk.add(square_chunk198.getTree());
+
                     }
                     break;
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:1085:4: ( expression_chain )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1065:4: ( expression_chain )?
             int alt72=2;
             int LA72_0 = input.LA(1);
 
@@ -9356,54 +9099,56 @@
             }
             switch (alt72) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1085:4: expression_chain
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1065:4: expression_chain
                     {
-                    pushFollow(FOLLOW_expression_chain_in_expression_chain3508);
+                    pushFollow(FOLLOW_expression_chain_in_expression_chain3462);
                     expression_chain199=expression_chain();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_expression_chain.add(expression_chain199.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_expression_chain.add(expression_chain199.getTree());
+
                     }
                     break;
 
             }
 
 
+
             // AST REWRITE
-            // elements: expression_chain, square_chunk, ID, paren_chunk
+            // elements: expression_chain, square_chunk, paren_chunk, ID
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1086:4: -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
+            // 1066:4: -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1086:7: ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1066:7: ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_EXPRESSION_CHAIN, DOT195), root_1);
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_EXPRESSION_CHAIN, DOT195), root_1);
 
-                adaptor.addChild(root_1, stream_ID.next());
-                // src/main/resources/org/drools/lang/DRL.g:1086:38: ( square_chunk )?
+                adaptor.addChild(root_1, stream_ID.nextNode());
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1066:38: ( square_chunk )?
                 if ( stream_square_chunk.hasNext() ) {
-                    adaptor.addChild(root_1, stream_square_chunk.next());
+                    adaptor.addChild(root_1, stream_square_chunk.nextTree());
 
                 }
                 stream_square_chunk.reset();
-                // src/main/resources/org/drools/lang/DRL.g:1086:52: ( paren_chunk )?
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1066:52: ( paren_chunk )?
                 if ( stream_paren_chunk.hasNext() ) {
-                    adaptor.addChild(root_1, stream_paren_chunk.next());
+                    adaptor.addChild(root_1, stream_paren_chunk.nextTree());
 
                 }
                 stream_paren_chunk.reset();
-                // src/main/resources/org/drools/lang/DRL.g:1086:65: ( expression_chain )?
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1066:65: ( expression_chain )?
                 if ( stream_expression_chain.hasNext() ) {
-                    adaptor.addChild(root_1, stream_expression_chain.next());
+                    adaptor.addChild(root_1, stream_expression_chain.nextTree());
 
                 }
                 stream_expression_chain.reset();
@@ -9413,192 +9158,199 @@
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end expression_chain
+    // $ANTLR end "expression_chain"
 
     public static class lhs_pattern_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start lhs_pattern
-    // src/main/resources/org/drools/lang/DRL.g:1089:1: lhs_pattern : ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) );
-    public final lhs_pattern_return lhs_pattern() throws RecognitionException {
-        lhs_pattern_return retval = new lhs_pattern_return();
+    // $ANTLR start "lhs_pattern"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1069:1: lhs_pattern : ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) );
+    public final DRLParser.lhs_pattern_return lhs_pattern() throws RecognitionException {
+        DRLParser.lhs_pattern_return retval = new DRLParser.lhs_pattern_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        fact_binding_return fact_binding200 = null;
+        DRLParser.fact_binding_return fact_binding200 = null;
 
-        fact_return fact201 = null;
+        DRLParser.fact_return fact201 = null;
 
 
         RewriteRuleSubtreeStream stream_fact_binding=new RewriteRuleSubtreeStream(adaptor,"rule fact_binding");
         RewriteRuleSubtreeStream stream_fact=new RewriteRuleSubtreeStream(adaptor,"rule fact");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1090:2: ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1070:2: ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) )
             int alt73=2;
             int LA73_0 = input.LA(1);
 
             if ( (LA73_0==ID) ) {
                 int LA73_1 = input.LA(2);
 
-                if ( (LA73_1==COLON) ) {
-                    alt73=1;
-                }
-                else if ( (LA73_1==DOT||LA73_1==LEFT_PAREN||LA73_1==LEFT_SQUARE) ) {
+                if ( (LA73_1==DOT||LA73_1==LEFT_PAREN||LA73_1==LEFT_SQUARE) ) {
                     alt73=2;
                 }
+                else if ( (LA73_1==COLON) ) {
+                    alt73=1;
+                }
                 else {
-                    if (backtracking>0) {failed=true; return retval;}
+                    if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1089:1: lhs_pattern : ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) );", 73, 1, input);
+                        new NoViableAltException("", 73, 1, input);
 
                     throw nvae;
                 }
             }
             else {
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1089:1: lhs_pattern : ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) );", 73, 0, input);
+                    new NoViableAltException("", 73, 0, input);
 
                 throw nvae;
             }
             switch (alt73) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1090:4: fact_binding
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1070:4: fact_binding
                     {
-                    pushFollow(FOLLOW_fact_binding_in_lhs_pattern3541);
+                    pushFollow(FOLLOW_fact_binding_in_lhs_pattern3495);
                     fact_binding200=fact_binding();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_fact_binding.add(fact_binding200.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_fact_binding.add(fact_binding200.getTree());
+
+
                     // AST REWRITE
                     // elements: fact_binding
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
                     // rule list labels: 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                     retval.tree = root_0;
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1090:17: -> ^( VT_PATTERN fact_binding )
+                    // 1070:17: -> ^( VT_PATTERN fact_binding )
                     {
-                        // src/main/resources/org/drools/lang/DRL.g:1090:20: ^( VT_PATTERN fact_binding )
+                        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1070:20: ^( VT_PATTERN fact_binding )
                         {
                         Object root_1 = (Object)adaptor.nil();
-                        root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_PATTERN, "VT_PATTERN"), root_1);
+                        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PATTERN, "VT_PATTERN"), root_1);
 
-                        adaptor.addChild(root_1, stream_fact_binding.next());
+                        adaptor.addChild(root_1, stream_fact_binding.nextTree());
 
                         adaptor.addChild(root_0, root_1);
                         }
 
                     }
 
+                    retval.tree = root_0;}
                     }
-
-                    }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1091:4: fact
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1071:4: fact
                     {
-                    pushFollow(FOLLOW_fact_in_lhs_pattern3554);
+                    pushFollow(FOLLOW_fact_in_lhs_pattern3508);
                     fact201=fact();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_fact.add(fact201.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_fact.add(fact201.getTree());
+
+
                     // AST REWRITE
                     // elements: fact
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
                     // rule list labels: 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                     retval.tree = root_0;
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1091:9: -> ^( VT_PATTERN fact )
+                    // 1071:9: -> ^( VT_PATTERN fact )
                     {
-                        // src/main/resources/org/drools/lang/DRL.g:1091:12: ^( VT_PATTERN fact )
+                        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1071:12: ^( VT_PATTERN fact )
                         {
                         Object root_1 = (Object)adaptor.nil();
-                        root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_PATTERN, "VT_PATTERN"), root_1);
+                        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PATTERN, "VT_PATTERN"), root_1);
 
-                        adaptor.addChild(root_1, stream_fact.next());
+                        adaptor.addChild(root_1, stream_fact.nextTree());
 
                         adaptor.addChild(root_0, root_1);
                         }
 
                     }
 
+                    retval.tree = root_0;}
                     }
-
-                    }
                     break;
 
             }
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end lhs_pattern
+    // $ANTLR end "lhs_pattern"
 
     public static class fact_binding_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start fact_binding
-    // src/main/resources/org/drools/lang/DRL.g:1094:1: fact_binding : label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN ) -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? ) ;
-    public final fact_binding_return fact_binding() throws RecognitionException {
-        fact_binding_return retval = new fact_binding_return();
+    // $ANTLR start "fact_binding"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1074:1: fact_binding : label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN ) -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? ) ;
+    public final DRLParser.fact_binding_return fact_binding() throws RecognitionException {
+        DRLParser.fact_binding_return retval = new DRLParser.fact_binding_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token LEFT_PAREN204=null;
         Token RIGHT_PAREN206=null;
-        label_return label202 = null;
+        DRLParser.label_return label202 = null;
 
-        fact_return fact203 = null;
+        DRLParser.fact_return fact203 = null;
 
-        fact_binding_expression_return fact_binding_expression205 = null;
+        DRLParser.fact_binding_expression_return fact_binding_expression205 = null;
 
 
         Object LEFT_PAREN204_tree=null;
@@ -9609,15 +9361,16 @@
         RewriteRuleSubtreeStream stream_fact_binding_expression=new RewriteRuleSubtreeStream(adaptor,"rule fact_binding_expression");
         RewriteRuleSubtreeStream stream_fact=new RewriteRuleSubtreeStream(adaptor,"rule fact");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1095:3: ( label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN ) -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? ) )
-            // src/main/resources/org/drools/lang/DRL.g:1095:5: label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1075:3: ( label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN ) -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1075:5: label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
             {
-            pushFollow(FOLLOW_label_in_fact_binding3574);
+            pushFollow(FOLLOW_label_in_fact_binding3528);
             label202=label();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_label.add(label202.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1096:3: ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_label.add(label202.getTree());
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1076:3: ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
             int alt74=2;
             int LA74_0 = input.LA(1);
 
@@ -9628,44 +9381,44 @@
                 alt74=2;
             }
             else {
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1096:3: ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )", 74, 0, input);
+                    new NoViableAltException("", 74, 0, input);
 
                 throw nvae;
             }
             switch (alt74) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1096:5: fact
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1076:5: fact
                     {
-                    pushFollow(FOLLOW_fact_in_fact_binding3580);
+                    pushFollow(FOLLOW_fact_in_fact_binding3534);
                     fact203=fact();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_fact.add(fact203.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_fact.add(fact203.getTree());
+
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1097:6: LEFT_PAREN fact_binding_expression RIGHT_PAREN
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1077:6: LEFT_PAREN fact_binding_expression RIGHT_PAREN
                     {
-                    LEFT_PAREN204=(Token)input.LT(1);
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_binding3587); if (failed) return retval;
-                    if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN204);
+                    LEFT_PAREN204=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_binding3541); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN204);
 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN204, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_fact_binding_expression_in_fact_binding3595);
+                    pushFollow(FOLLOW_fact_binding_expression_in_fact_binding3549);
                     fact_binding_expression205=fact_binding_expression();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_fact_binding_expression.add(fact_binding_expression205.getTree());
-                    RIGHT_PAREN206=(Token)input.LT(1);
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact_binding3603); if (failed) return retval;
-                    if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN206);
 
-                    if ( backtracking==0 ) {
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_fact_binding_expression.add(fact_binding_expression205.getTree());
+                    RIGHT_PAREN206=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact_binding3557); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN206);
+
+                    if ( state.backtracking==0 ) {
                       	emit(RIGHT_PAREN206, DroolsEditorType.SYMBOL);	
                     }
 
@@ -9675,40 +9428,41 @@
             }
 
 
+
             // AST REWRITE
-            // elements: RIGHT_PAREN, fact_binding_expression, label, fact
+            // elements: fact_binding_expression, label, RIGHT_PAREN, fact
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1101:3: -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
+            // 1081:3: -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1101:6: ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1081:6: ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_FACT_BINDING, "VT_FACT_BINDING"), root_1);
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FACT_BINDING, "VT_FACT_BINDING"), root_1);
 
-                adaptor.addChild(root_1, stream_label.next());
-                // src/main/resources/org/drools/lang/DRL.g:1101:30: ( fact )?
+                adaptor.addChild(root_1, stream_label.nextTree());
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1081:30: ( fact )?
                 if ( stream_fact.hasNext() ) {
-                    adaptor.addChild(root_1, stream_fact.next());
+                    adaptor.addChild(root_1, stream_fact.nextTree());
 
                 }
                 stream_fact.reset();
-                // src/main/resources/org/drools/lang/DRL.g:1101:36: ( fact_binding_expression )?
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1081:36: ( fact_binding_expression )?
                 if ( stream_fact_binding_expression.hasNext() ) {
-                    adaptor.addChild(root_1, stream_fact_binding_expression.next());
+                    adaptor.addChild(root_1, stream_fact_binding_expression.nextTree());
 
                 }
                 stream_fact_binding_expression.reset();
-                // src/main/resources/org/drools/lang/DRL.g:1101:61: ( RIGHT_PAREN )?
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1081:61: ( RIGHT_PAREN )?
                 if ( stream_RIGHT_PAREN.hasNext() ) {
-                    adaptor.addChild(root_1, stream_RIGHT_PAREN.next());
+                    adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
                 }
                 stream_RIGHT_PAREN.reset();
@@ -9718,96 +9472,99 @@
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end fact_binding
+    // $ANTLR end "fact_binding"
 
     public static class fact_binding_expression_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start fact_binding_expression
-    // src/main/resources/org/drools/lang/DRL.g:1104:1: fact_binding_expression : ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )* ;
-    public final fact_binding_expression_return fact_binding_expression() throws RecognitionException {
-        fact_binding_expression_return retval = new fact_binding_expression_return();
+    // $ANTLR start "fact_binding_expression"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1084:1: fact_binding_expression : ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )* ;
+    public final DRLParser.fact_binding_expression_return fact_binding_expression() throws RecognitionException {
+        DRLParser.fact_binding_expression_return retval = new DRLParser.fact_binding_expression_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token pipe=null;
-        or_key_return value = null;
+        DRLParser.or_key_return value = null;
 
-        fact_return fact207 = null;
+        DRLParser.fact_return fact207 = null;
 
-        fact_return fact208 = null;
+        DRLParser.fact_return fact208 = null;
 
 
         Object pipe_tree=null;
         RewriteRuleTokenStream stream_DOUBLE_PIPE=new RewriteRuleTokenStream(adaptor,"token DOUBLE_PIPE");
         RewriteRuleSubtreeStream stream_or_key=new RewriteRuleSubtreeStream(adaptor,"rule or_key");
         RewriteRuleSubtreeStream stream_fact=new RewriteRuleSubtreeStream(adaptor,"rule fact");
-        
+
         	Token orToken = null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1107:3: ( ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )* )
-            // src/main/resources/org/drools/lang/DRL.g:1107:5: ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1087:3: ( ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1087:5: ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
             {
-            // src/main/resources/org/drools/lang/DRL.g:1107:5: ( fact -> fact )
-            // src/main/resources/org/drools/lang/DRL.g:1107:6: fact
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1087:5: ( fact -> fact )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1087:6: fact
             {
-            pushFollow(FOLLOW_fact_in_fact_binding_expression3644);
+            pushFollow(FOLLOW_fact_in_fact_binding_expression3598);
             fact207=fact();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_fact.add(fact207.getTree());
 
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_fact.add(fact207.getTree());
+
+
             // AST REWRITE
             // elements: fact
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1107:11: -> fact
+            // 1087:11: -> fact
             {
-                adaptor.addChild(root_0, stream_fact.next());
+                adaptor.addChild(root_0, stream_fact.nextTree());
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
-            // src/main/resources/org/drools/lang/DRL.g:1107:20: ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1087:20: ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
             loop76:
             do {
                 int alt76=2;
                 int LA76_0 = input.LA(1);
 
-                if ( (LA76_0==ID) && ((validateIdentifierKey(DroolsSoftKeywords.OR)))) {
+                if ( (LA76_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.OR))))) {
                     alt76=1;
                 }
                 else if ( (LA76_0==DOUBLE_PIPE) ) {
@@ -9817,48 +9574,48 @@
 
                 switch (alt76) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1107:22: (value= or_key | pipe= DOUBLE_PIPE ) fact
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1087:22: (value= or_key | pipe= DOUBLE_PIPE ) fact
             	    {
-            	    // src/main/resources/org/drools/lang/DRL.g:1107:22: (value= or_key | pipe= DOUBLE_PIPE )
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1087:22: (value= or_key | pipe= DOUBLE_PIPE )
             	    int alt75=2;
             	    int LA75_0 = input.LA(1);
 
-            	    if ( (LA75_0==ID) && ((validateIdentifierKey(DroolsSoftKeywords.OR)))) {
+            	    if ( (LA75_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.OR))))) {
             	        alt75=1;
             	    }
             	    else if ( (LA75_0==DOUBLE_PIPE) ) {
             	        alt75=2;
             	    }
             	    else {
-            	        if (backtracking>0) {failed=true; return retval;}
+            	        if (state.backtracking>0) {state.failed=true; return retval;}
             	        NoViableAltException nvae =
-            	            new NoViableAltException("1107:22: (value= or_key | pipe= DOUBLE_PIPE )", 75, 0, input);
+            	            new NoViableAltException("", 75, 0, input);
 
             	        throw nvae;
             	    }
             	    switch (alt75) {
             	        case 1 :
-            	            // src/main/resources/org/drools/lang/DRL.g:1107:23: value= or_key
+            	            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1087:23: value= or_key
             	            {
-            	            pushFollow(FOLLOW_or_key_in_fact_binding_expression3656);
+            	            pushFollow(FOLLOW_or_key_in_fact_binding_expression3610);
             	            value=or_key();
-            	            _fsp--;
-            	            if (failed) return retval;
-            	            if ( backtracking==0 ) stream_or_key.add(value.getTree());
-            	            if ( backtracking==0 ) {
-            	              orToken = ((Token)value.start);
+
+            	            state._fsp--;
+            	            if (state.failed) return retval;
+            	            if ( state.backtracking==0 ) stream_or_key.add(value.getTree());
+            	            if ( state.backtracking==0 ) {
+            	              orToken = (value!=null?((Token)value.start):null);
             	            }
 
             	            }
             	            break;
             	        case 2 :
-            	            // src/main/resources/org/drools/lang/DRL.g:1107:62: pipe= DOUBLE_PIPE
+            	            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1087:62: pipe= DOUBLE_PIPE
             	            {
-            	            pipe=(Token)input.LT(1);
-            	            match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_fact_binding_expression3662); if (failed) return retval;
-            	            if ( backtracking==0 ) stream_DOUBLE_PIPE.add(pipe);
+            	            pipe=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_fact_binding_expression3616); if (state.failed) return retval; 
+            	            if ( state.backtracking==0 ) stream_DOUBLE_PIPE.add(pipe);
 
-            	            if ( backtracking==0 ) {
+            	            if ( state.backtracking==0 ) {
             	              orToken = pipe;
             	            }
 
@@ -9867,41 +9624,42 @@
 
             	    }
 
-            	    pushFollow(FOLLOW_fact_in_fact_binding_expression3667);
+            	    pushFollow(FOLLOW_fact_in_fact_binding_expression3621);
             	    fact208=fact();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_fact.add(fact208.getTree());
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_fact.add(fact208.getTree());
+
+
             	    // AST REWRITE
-            	    // elements: fact, fact_binding_expression
+            	    // elements: fact_binding_expression, fact
             	    // token labels: 
             	    // rule labels: retval
             	    // token list labels: 
             	    // rule list labels: 
-            	    if ( backtracking==0 ) {
+            	    if ( state.backtracking==0 ) {
             	    retval.tree = root_0;
             	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             	    root_0 = (Object)adaptor.nil();
-            	    // 1108:3: -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
+            	    // 1088:3: -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
             	    {
-            	        // src/main/resources/org/drools/lang/DRL.g:1108:6: ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
+            	        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1088:6: ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
             	        {
             	        Object root_1 = (Object)adaptor.nil();
-            	        root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_FACT_OR, orToken), root_1);
+            	        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FACT_OR, orToken), root_1);
 
-            	        adaptor.addChild(root_1, stream_retval.next());
-            	        adaptor.addChild(root_1, stream_fact.next());
+            	        adaptor.addChild(root_1, stream_retval.nextTree());
+            	        adaptor.addChild(root_1, stream_fact.nextTree());
 
             	        adaptor.addChild(root_0, root_1);
             	        }
 
             	    }
 
+            	    retval.tree = root_0;}
             	    }
-
-            	    }
             	    break;
 
             	default :
@@ -9914,39 +9672,42 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end fact_binding_expression
+    // $ANTLR end "fact_binding_expression"
 
     public static class fact_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start fact
-    // src/main/resources/org/drools/lang/DRL.g:1111:1: fact : pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN -> ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN ) ;
-    public final fact_return fact() throws RecognitionException {
-        fact_return retval = new fact_return();
+    // $ANTLR start "fact"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1091:1: fact : pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN -> ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN ) ;
+    public final DRLParser.fact_return fact() throws RecognitionException {
+        DRLParser.fact_return retval = new DRLParser.fact_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token LEFT_PAREN210=null;
         Token RIGHT_PAREN212=null;
-        pattern_type_return pattern_type209 = null;
+        DRLParser.pattern_type_return pattern_type209 = null;
 
-        constraints_return constraints211 = null;
+        DRLParser.constraints_return constraints211 = null;
 
 
         Object LEFT_PAREN210_tree=null;
@@ -9957,25 +9718,25 @@
         RewriteRuleSubtreeStream stream_constraints=new RewriteRuleSubtreeStream(adaptor,"rule constraints");
          boolean isFailedOnConstraints = true; pushParaphrases(DroolsParaphraseTypes.PATTERN); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1114:2: ( pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN -> ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN ) )
-            // src/main/resources/org/drools/lang/DRL.g:1114:4: pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1094:2: ( pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN -> ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1094:4: pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN
             {
-            pushFollow(FOLLOW_pattern_type_in_fact3707);
+            pushFollow(FOLLOW_pattern_type_in_fact3661);
             pattern_type209=pattern_type();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_pattern_type.add(pattern_type209.getTree());
-            LEFT_PAREN210=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact3712); if (failed) return retval;
-            if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN210);
 
-            if ( backtracking==0 ) {
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_pattern_type.add(pattern_type209.getTree());
+            LEFT_PAREN210=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact3666); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN210);
+
+            if ( state.backtracking==0 ) {
               	emit(LEFT_PAREN210, DroolsEditorType.SYMBOL);	
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_CONDITION_START);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:1117:4: ( constraints )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1097:4: ( constraints )?
             int alt77=2;
             int LA77_0 = input.LA(1);
 
@@ -9984,85 +9745,88 @@
             }
             switch (alt77) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1117:4: constraints
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1097:4: constraints
                     {
-                    pushFollow(FOLLOW_constraints_in_fact3723);
+                    pushFollow(FOLLOW_constraints_in_fact3677);
                     constraints211=constraints();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_constraints.add(constraints211.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_constraints.add(constraints211.getTree());
+
                     }
                     break;
 
             }
 
-            RIGHT_PAREN212=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact3729); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN212);
+            RIGHT_PAREN212=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact3683); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN212);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	isFailedOnConstraints = false;	
             }
-            if ( backtracking==0 ) {
-              	if (RIGHT_PAREN212.getText().equals(")") ){ //WORKAROUND FOR ANTLR BUG!
+            if ( state.backtracking==0 ) {
+              	if ((RIGHT_PAREN212!=null?RIGHT_PAREN212.getText():null).equals(")") ){ //WORKAROUND FOR ANTLR BUG!
               			emit(RIGHT_PAREN212, DroolsEditorType.SYMBOL);
               			emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);
               		}	
             }
 
+
             // AST REWRITE
-            // elements: pattern_type, RIGHT_PAREN, constraints
+            // elements: constraints, pattern_type, RIGHT_PAREN
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1123:2: -> ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN )
+            // 1103:2: -> ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1123:5: ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1103:5: ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_FACT, "VT_FACT"), root_1);
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FACT, "VT_FACT"), root_1);
 
-                adaptor.addChild(root_1, stream_pattern_type.next());
-                // src/main/resources/org/drools/lang/DRL.g:1123:28: ( constraints )?
+                adaptor.addChild(root_1, stream_pattern_type.nextTree());
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1103:28: ( constraints )?
                 if ( stream_constraints.hasNext() ) {
-                    adaptor.addChild(root_1, stream_constraints.next());
+                    adaptor.addChild(root_1, stream_constraints.nextTree());
 
                 }
                 stream_constraints.reset();
-                adaptor.addChild(root_1, stream_RIGHT_PAREN.next());
+                adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
                 adaptor.addChild(root_0, root_1);
                 }
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
                paraphrases.pop();	
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
-            
+
             	if (isEditorInterfaceEnabled && isFailedOnConstraints && input.LA(1) == EOF && input.get(input.index() - 1).getType() == WS){
             		if (!(getActiveSentence().getContent().getLast() instanceof Integer) && input.LA(-1) != COLON) {
             			emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
@@ -10072,41 +9836,42 @@
         }
         return retval;
     }
-    // $ANTLR end fact
+    // $ANTLR end "fact"
 
     public static class constraints_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start constraints
-    // src/main/resources/org/drools/lang/DRL.g:1133:1: constraints : constraint ( COMMA constraint )* ;
-    public final constraints_return constraints() throws RecognitionException {
-        constraints_return retval = new constraints_return();
+    // $ANTLR start "constraints"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1113:1: constraints : constraint ( COMMA constraint )* ;
+    public final DRLParser.constraints_return constraints() throws RecognitionException {
+        DRLParser.constraints_return retval = new DRLParser.constraints_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token COMMA214=null;
-        constraint_return constraint213 = null;
+        DRLParser.constraint_return constraint213 = null;
 
-        constraint_return constraint215 = null;
+        DRLParser.constraint_return constraint215 = null;
 
 
         Object COMMA214_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1134:2: ( constraint ( COMMA constraint )* )
-            // src/main/resources/org/drools/lang/DRL.g:1134:4: constraint ( COMMA constraint )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1114:2: ( constraint ( COMMA constraint )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1114:4: constraint ( COMMA constraint )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_constraint_in_constraints3763);
+            pushFollow(FOLLOW_constraint_in_constraints3717);
             constraint213=constraint();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, constraint213.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1134:15: ( COMMA constraint )*
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint213.getTree());
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1114:15: ( COMMA constraint )*
             loop78:
             do {
                 int alt78=2;
@@ -10119,20 +9884,20 @@
 
                 switch (alt78) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1134:17: COMMA constraint
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1114:17: COMMA constraint
             	    {
-            	    COMMA214=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_constraints3767); if (failed) return retval;
-            	    if ( backtracking==0 ) {
+            	    COMMA214=(Token)match(input,COMMA,FOLLOW_COMMA_in_constraints3721); if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) {
             	      	emit(COMMA214, DroolsEditorType.SYMBOL);
             	      		emit(Location.LOCATION_LHS_INSIDE_CONDITION_START);	
             	    }
-            	    pushFollow(FOLLOW_constraint_in_constraints3774);
+            	    pushFollow(FOLLOW_constraint_in_constraints3728);
             	    constraint215=constraint();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, constraint215.getTree());
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint215.getTree());
+
             	    }
             	    break;
 
@@ -10146,102 +9911,110 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end constraints
+    // $ANTLR end "constraints"
 
     public static class constraint_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start constraint
-    // src/main/resources/org/drools/lang/DRL.g:1139:1: constraint : or_constr ;
-    public final constraint_return constraint() throws RecognitionException {
-        constraint_return retval = new constraint_return();
+    // $ANTLR start "constraint"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1119:1: constraint : or_constr ;
+    public final DRLParser.constraint_return constraint() throws RecognitionException {
+        DRLParser.constraint_return retval = new DRLParser.constraint_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        or_constr_return or_constr216 = null;
+        DRLParser.or_constr_return or_constr216 = null;
 
 
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1140:2: ( or_constr )
-            // src/main/resources/org/drools/lang/DRL.g:1140:4: or_constr
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1120:2: ( or_constr )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1120:4: or_constr
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_or_constr_in_constraint3788);
+            pushFollow(FOLLOW_or_constr_in_constraint3742);
             or_constr216=or_constr();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, or_constr216.getTree());
 
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, or_constr216.getTree());
+
             }
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end constraint
+    // $ANTLR end "constraint"
 
     public static class or_constr_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start or_constr
-    // src/main/resources/org/drools/lang/DRL.g:1143:1: or_constr : and_constr ( DOUBLE_PIPE and_constr )* ;
-    public final or_constr_return or_constr() throws RecognitionException {
-        or_constr_return retval = new or_constr_return();
+    // $ANTLR start "or_constr"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1123:1: or_constr : and_constr ( DOUBLE_PIPE and_constr )* ;
+    public final DRLParser.or_constr_return or_constr() throws RecognitionException {
+        DRLParser.or_constr_return retval = new DRLParser.or_constr_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token DOUBLE_PIPE218=null;
-        and_constr_return and_constr217 = null;
+        DRLParser.and_constr_return and_constr217 = null;
 
-        and_constr_return and_constr219 = null;
+        DRLParser.and_constr_return and_constr219 = null;
 
 
         Object DOUBLE_PIPE218_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1144:2: ( and_constr ( DOUBLE_PIPE and_constr )* )
-            // src/main/resources/org/drools/lang/DRL.g:1144:4: and_constr ( DOUBLE_PIPE and_constr )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1124:2: ( and_constr ( DOUBLE_PIPE and_constr )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1124:4: and_constr ( DOUBLE_PIPE and_constr )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_and_constr_in_or_constr3799);
+            pushFollow(FOLLOW_and_constr_in_or_constr3753);
             and_constr217=and_constr();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, and_constr217.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1144:15: ( DOUBLE_PIPE and_constr )*
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, and_constr217.getTree());
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1124:15: ( DOUBLE_PIPE and_constr )*
             loop79:
             do {
                 int alt79=2;
@@ -10254,23 +10027,23 @@
 
                 switch (alt79) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1144:17: DOUBLE_PIPE and_constr
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1124:17: DOUBLE_PIPE and_constr
             	    {
-            	    DOUBLE_PIPE218=(Token)input.LT(1);
-            	    match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_constr3803); if (failed) return retval;
-            	    if ( backtracking==0 ) {
+            	    DOUBLE_PIPE218=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_constr3757); if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) {
             	    DOUBLE_PIPE218_tree = (Object)adaptor.create(DOUBLE_PIPE218);
             	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_PIPE218_tree, root_0);
             	    }
-            	    if ( backtracking==0 ) {
+            	    if ( state.backtracking==0 ) {
             	      	emit(DOUBLE_PIPE218, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_and_constr_in_or_constr3810);
+            	    pushFollow(FOLLOW_and_constr_in_or_constr3764);
             	    and_constr219=and_constr();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, and_constr219.getTree());
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, and_constr219.getTree());
+
             	    }
             	    break;
 
@@ -10284,54 +10057,58 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end or_constr
+    // $ANTLR end "or_constr"
 
     public static class and_constr_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start and_constr
-    // src/main/resources/org/drools/lang/DRL.g:1148:1: and_constr : unary_constr ( DOUBLE_AMPER unary_constr )* ;
-    public final and_constr_return and_constr() throws RecognitionException {
-        and_constr_return retval = new and_constr_return();
+    // $ANTLR start "and_constr"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1128:1: and_constr : unary_constr ( DOUBLE_AMPER unary_constr )* ;
+    public final DRLParser.and_constr_return and_constr() throws RecognitionException {
+        DRLParser.and_constr_return retval = new DRLParser.and_constr_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token DOUBLE_AMPER221=null;
-        unary_constr_return unary_constr220 = null;
+        DRLParser.unary_constr_return unary_constr220 = null;
 
-        unary_constr_return unary_constr222 = null;
+        DRLParser.unary_constr_return unary_constr222 = null;
 
 
         Object DOUBLE_AMPER221_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1149:2: ( unary_constr ( DOUBLE_AMPER unary_constr )* )
-            // src/main/resources/org/drools/lang/DRL.g:1149:4: unary_constr ( DOUBLE_AMPER unary_constr )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1129:2: ( unary_constr ( DOUBLE_AMPER unary_constr )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1129:4: unary_constr ( DOUBLE_AMPER unary_constr )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_unary_constr_in_and_constr3825);
+            pushFollow(FOLLOW_unary_constr_in_and_constr3779);
             unary_constr220=unary_constr();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, unary_constr220.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1149:17: ( DOUBLE_AMPER unary_constr )*
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, unary_constr220.getTree());
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1129:17: ( DOUBLE_AMPER unary_constr )*
             loop80:
             do {
                 int alt80=2;
@@ -10344,23 +10121,23 @@
 
                 switch (alt80) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1149:19: DOUBLE_AMPER unary_constr
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1129:19: DOUBLE_AMPER unary_constr
             	    {
-            	    DOUBLE_AMPER221=(Token)input.LT(1);
-            	    match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_constr3829); if (failed) return retval;
-            	    if ( backtracking==0 ) {
+            	    DOUBLE_AMPER221=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_constr3783); if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) {
             	    DOUBLE_AMPER221_tree = (Object)adaptor.create(DOUBLE_AMPER221);
             	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_AMPER221_tree, root_0);
             	    }
-            	    if ( backtracking==0 ) {
+            	    if ( state.backtracking==0 ) {
             	      	emit(DOUBLE_AMPER221, DroolsEditorType.SYMBOL);;	
             	    }
-            	    pushFollow(FOLLOW_unary_constr_in_and_constr3836);
+            	    pushFollow(FOLLOW_unary_constr_in_and_constr3790);
             	    unary_constr222=unary_constr();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, unary_constr222.getTree());
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, unary_constr222.getTree());
+
             	    }
             	    break;
 
@@ -10374,43 +10151,46 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end and_constr
+    // $ANTLR end "and_constr"
 
     public static class unary_constr_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start unary_constr
-    // src/main/resources/org/drools/lang/DRL.g:1153:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );
-    public final unary_constr_return unary_constr() throws RecognitionException {
-        unary_constr_return retval = new unary_constr_return();
+    // $ANTLR start "unary_constr"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1133:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );
+    public final DRLParser.unary_constr_return unary_constr() throws RecognitionException {
+        DRLParser.unary_constr_return retval = new DRLParser.unary_constr_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token LEFT_PAREN226=null;
         Token RIGHT_PAREN228=null;
-        eval_key_return eval_key223 = null;
+        DRLParser.eval_key_return eval_key223 = null;
 
-        paren_chunk_return paren_chunk224 = null;
+        DRLParser.paren_chunk_return paren_chunk224 = null;
 
-        field_constraint_return field_constraint225 = null;
+        DRLParser.field_constraint_return field_constraint225 = null;
 
-        or_constr_return or_constr227 = null;
+        DRLParser.or_constr_return or_constr227 = null;
 
 
         Object LEFT_PAREN226_tree=null;
@@ -10418,105 +10198,65 @@
 
          boolean isFailed = true;	
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1157:2: ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1137:2: ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN )
             int alt81=3;
-            int LA81_0 = input.LA(1);
-
-            if ( (LA81_0==ID) ) {
-                int LA81_1 = input.LA(2);
-
-                if ( ((LA81_1>=ID && LA81_1<=DOT)||LA81_1==COLON||(LA81_1>=EQUAL && LA81_1<=NOT_EQUAL)||LA81_1==LEFT_SQUARE) ) {
-                    alt81=2;
-                }
-                else if ( (LA81_1==LEFT_PAREN) ) {
-                    int LA81_13 = input.LA(3);
-
-                    if ( ((validateIdentifierKey(DroolsSoftKeywords.EVAL))) ) {
-                        alt81=1;
-                    }
-                    else if ( (true) ) {
-                        alt81=2;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return retval;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("1153:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );", 81, 13, input);
-
-                        throw nvae;
-                    }
-                }
-                else {
-                    if (backtracking>0) {failed=true; return retval;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("1153:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );", 81, 1, input);
-
-                    throw nvae;
-                }
-            }
-            else if ( (LA81_0==LEFT_PAREN) ) {
-                alt81=3;
-            }
-            else {
-                if (backtracking>0) {failed=true; return retval;}
-                NoViableAltException nvae =
-                    new NoViableAltException("1153:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );", 81, 0, input);
-
-                throw nvae;
-            }
+            alt81 = dfa81.predict(input);
             switch (alt81) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1157:4: eval_key paren_chunk
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1137:4: eval_key paren_chunk
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_eval_key_in_unary_constr3869);
+                    pushFollow(FOLLOW_eval_key_in_unary_constr3823);
                     eval_key223=eval_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(eval_key223.getTree(), root_0);
-                    pushFollow(FOLLOW_paren_chunk_in_unary_constr3872);
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(eval_key223.getTree(), root_0);
+                    pushFollow(FOLLOW_paren_chunk_in_unary_constr3826);
                     paren_chunk224=paren_chunk();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, paren_chunk224.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk224.getTree());
+
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1158:4: field_constraint
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1138:4: field_constraint
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_field_constraint_in_unary_constr3877);
+                    pushFollow(FOLLOW_field_constraint_in_unary_constr3831);
                     field_constraint225=field_constraint();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, field_constraint225.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, field_constraint225.getTree());
+
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1159:5: LEFT_PAREN or_constr RIGHT_PAREN
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1139:5: LEFT_PAREN or_constr RIGHT_PAREN
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    LEFT_PAREN226=(Token)input.LT(1);
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_unary_constr3883); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    LEFT_PAREN226=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_unary_constr3837); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN226, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_or_constr_in_unary_constr3893);
+                    pushFollow(FOLLOW_or_constr_in_unary_constr3847);
                     or_constr227=or_constr();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, or_constr227.getTree());
-                    RIGHT_PAREN228=(Token)input.LT(1);
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_unary_constr3898); if (failed) return retval;
-                    if ( backtracking==0 ) {
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, or_constr227.getTree());
+                    RIGHT_PAREN228=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_unary_constr3852); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     RIGHT_PAREN228_tree = (Object)adaptor.create(RIGHT_PAREN228);
                     adaptor.addChild(root_0, RIGHT_PAREN228_tree);
                     }
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(RIGHT_PAREN228, DroolsEditorType.SYMBOL);	
                     }
 
@@ -10526,17 +10266,20 @@
             }
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
                isFailed = false;	
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
              
@@ -10550,33 +10293,33 @@
         }
         return retval;
     }
-    // $ANTLR end unary_constr
+    // $ANTLR end "unary_constr"
 
     public static class field_constraint_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start field_constraint
-    // src/main/resources/org/drools/lang/DRL.g:1172:1: field_constraint options {backtrack=true; } : ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) );
-    public final field_constraint_return field_constraint() throws RecognitionException {
-        field_constraint_return retval = new field_constraint_return();
+    // $ANTLR start "field_constraint"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1152:1: field_constraint options {backtrack=true; } : ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) );
+    public final DRLParser.field_constraint_return field_constraint() throws RecognitionException {
+        DRLParser.field_constraint_return retval = new DRLParser.field_constraint_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token arw=null;
-        label_return label229 = null;
+        DRLParser.label_return label229 = null;
 
-        accessor_path_return accessor_path230 = null;
+        DRLParser.accessor_path_return accessor_path230 = null;
 
-        or_restr_connective_return or_restr_connective231 = null;
+        DRLParser.or_restr_connective_return or_restr_connective231 = null;
 
-        paren_chunk_return paren_chunk232 = null;
+        DRLParser.paren_chunk_return paren_chunk232 = null;
 
-        accessor_path_return accessor_path233 = null;
+        DRLParser.accessor_path_return accessor_path233 = null;
 
-        or_restr_connective_return or_restr_connective234 = null;
+        DRLParser.or_restr_connective_return or_restr_connective234 = null;
 
 
         Object arw_tree=null;
@@ -10585,90 +10328,96 @@
         RewriteRuleSubtreeStream stream_label=new RewriteRuleSubtreeStream(adaptor,"rule label");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         RewriteRuleSubtreeStream stream_or_restr_connective=new RewriteRuleSubtreeStream(adaptor,"rule or_restr_connective");
-        
+
         	boolean isArrow = false;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1176:3: ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1156:3: ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) )
             int alt83=2;
             int LA83_0 = input.LA(1);
 
             if ( (LA83_0==ID) ) {
                 int LA83_1 = input.LA(2);
 
-                if ( (LA83_1==COLON) ) {
-                    alt83=1;
-                }
-                else if ( ((LA83_1>=ID && LA83_1<=DOT)||LA83_1==LEFT_PAREN||(LA83_1>=EQUAL && LA83_1<=NOT_EQUAL)||LA83_1==LEFT_SQUARE) ) {
+                if ( ((LA83_1>=ID && LA83_1<=DOT)||LA83_1==LEFT_PAREN||(LA83_1>=EQUAL && LA83_1<=NOT_EQUAL)||LA83_1==LEFT_SQUARE) ) {
                     alt83=2;
                 }
+                else if ( (LA83_1==COLON) ) {
+                    alt83=1;
+                }
                 else {
-                    if (backtracking>0) {failed=true; return retval;}
+                    if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1172:1: field_constraint options {backtrack=true; } : ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) );", 83, 1, input);
+                        new NoViableAltException("", 83, 1, input);
 
                     throw nvae;
                 }
             }
             else {
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1172:1: field_constraint options {backtrack=true; } : ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) );", 83, 0, input);
+                    new NoViableAltException("", 83, 0, input);
 
                 throw nvae;
             }
             switch (alt83) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1176:5: label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1156:5: label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )?
                     {
-                    pushFollow(FOLLOW_label_in_field_constraint3927);
+                    pushFollow(FOLLOW_label_in_field_constraint3881);
                     label229=label();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_label.add(label229.getTree());
-                    pushFollow(FOLLOW_accessor_path_in_field_constraint3929);
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_label.add(label229.getTree());
+                    pushFollow(FOLLOW_accessor_path_in_field_constraint3883);
                     accessor_path230=accessor_path();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_accessor_path.add(accessor_path230.getTree());
-                    // src/main/resources/org/drools/lang/DRL.g:1177:3: ( or_restr_connective | arw= ARROW paren_chunk )?
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_accessor_path.add(accessor_path230.getTree());
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1157:3: ( or_restr_connective | arw= ARROW paren_chunk )?
                     int alt82=3;
                     int LA82_0 = input.LA(1);
 
-                    if ( (LA82_0==ID||LA82_0==LEFT_PAREN||(LA82_0>=EQUAL && LA82_0<=NOT_EQUAL)) ) {
+                    if ( (LA82_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((validateIdentifierKey(DroolsSoftKeywords.IN)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {
                         alt82=1;
                     }
+                    else if ( (LA82_0==LEFT_PAREN||(LA82_0>=EQUAL && LA82_0<=NOT_EQUAL)) ) {
+                        alt82=1;
+                    }
                     else if ( (LA82_0==ARROW) ) {
                         alt82=2;
                     }
                     switch (alt82) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DRL.g:1177:5: or_restr_connective
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1157:5: or_restr_connective
                             {
-                            pushFollow(FOLLOW_or_restr_connective_in_field_constraint3936);
+                            pushFollow(FOLLOW_or_restr_connective_in_field_constraint3890);
                             or_restr_connective231=or_restr_connective();
-                            _fsp--;
-                            if (failed) return retval;
-                            if ( backtracking==0 ) stream_or_restr_connective.add(or_restr_connective231.getTree());
 
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) stream_or_restr_connective.add(or_restr_connective231.getTree());
+
                             }
                             break;
                         case 2 :
-                            // src/main/resources/org/drools/lang/DRL.g:1177:27: arw= ARROW paren_chunk
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1157:27: arw= ARROW paren_chunk
                             {
-                            arw=(Token)input.LT(1);
-                            match(input,ARROW,FOLLOW_ARROW_in_field_constraint3942); if (failed) return retval;
-                            if ( backtracking==0 ) stream_ARROW.add(arw);
+                            arw=(Token)match(input,ARROW,FOLLOW_ARROW_in_field_constraint3896); if (state.failed) return retval; 
+                            if ( state.backtracking==0 ) stream_ARROW.add(arw);
 
-                            if ( backtracking==0 ) {
+                            if ( state.backtracking==0 ) {
                               	emit(arw, DroolsEditorType.SYMBOL);	
                             }
-                            pushFollow(FOLLOW_paren_chunk_in_field_constraint3946);
+                            pushFollow(FOLLOW_paren_chunk_in_field_constraint3900);
                             paren_chunk232=paren_chunk();
-                            _fsp--;
-                            if (failed) return retval;
-                            if ( backtracking==0 ) stream_paren_chunk.add(paren_chunk232.getTree());
-                            if ( backtracking==0 ) {
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk232.getTree());
+                            if ( state.backtracking==0 ) {
                               isArrow = true;
                             }
 
@@ -10678,45 +10427,46 @@
                     }
 
 
+
                     // AST REWRITE
-                    // elements: or_restr_connective, label, accessor_path, paren_chunk, label, accessor_path
+                    // elements: label, accessor_path, paren_chunk, accessor_path, label, or_restr_connective
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
                     // rule list labels: 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                     retval.tree = root_0;
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1178:3: -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )?
+                    // 1158:3: -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )?
                     if (isArrow) {
-                        // src/main/resources/org/drools/lang/DRL.g:1178:17: ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) )
+                        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1158:17: ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) )
                         {
                         Object root_1 = (Object)adaptor.nil();
-                        root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_BIND_FIELD, "VT_BIND_FIELD"), root_1);
+                        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_BIND_FIELD, "VT_BIND_FIELD"), root_1);
 
-                        adaptor.addChild(root_1, stream_label.next());
-                        // src/main/resources/org/drools/lang/DRL.g:1178:39: ^( VT_FIELD accessor_path )
+                        adaptor.addChild(root_1, stream_label.nextTree());
+                        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1158:39: ^( VT_FIELD accessor_path )
                         {
                         Object root_2 = (Object)adaptor.nil();
-                        root_2 = (Object)adaptor.becomeRoot(adaptor.create(VT_FIELD, "VT_FIELD"), root_2);
+                        root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FIELD, "VT_FIELD"), root_2);
 
-                        adaptor.addChild(root_2, stream_accessor_path.next());
+                        adaptor.addChild(root_2, stream_accessor_path.nextTree());
 
                         adaptor.addChild(root_1, root_2);
                         }
 
                         adaptor.addChild(root_0, root_1);
                         }
-                        // src/main/resources/org/drools/lang/DRL.g:1178:66: ( ^( VK_EVAL[$arw] paren_chunk ) )?
+                        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1158:66: ( ^( VK_EVAL[$arw] paren_chunk ) )?
                         if ( stream_paren_chunk.hasNext() ) {
-                            // src/main/resources/org/drools/lang/DRL.g:1178:66: ^( VK_EVAL[$arw] paren_chunk )
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1158:66: ^( VK_EVAL[$arw] paren_chunk )
                             {
                             Object root_1 = (Object)adaptor.nil();
-                            root_1 = (Object)adaptor.becomeRoot(adaptor.create(VK_EVAL, arw), root_1);
+                            root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VK_EVAL, arw), root_1);
 
-                            adaptor.addChild(root_1, stream_paren_chunk.next());
+                            adaptor.addChild(root_1, stream_paren_chunk.nextTree());
 
                             adaptor.addChild(root_0, root_1);
                             }
@@ -10725,23 +10475,23 @@
                         stream_paren_chunk.reset();
 
                     }
-                    else // 1179:3: -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) )
+                    else // 1159:3: -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) )
                     {
-                        // src/main/resources/org/drools/lang/DRL.g:1179:6: ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) )
+                        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1159:6: ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) )
                         {
                         Object root_1 = (Object)adaptor.nil();
-                        root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_BIND_FIELD, "VT_BIND_FIELD"), root_1);
+                        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_BIND_FIELD, "VT_BIND_FIELD"), root_1);
 
-                        adaptor.addChild(root_1, stream_label.next());
-                        // src/main/resources/org/drools/lang/DRL.g:1179:28: ^( VT_FIELD accessor_path ( or_restr_connective )? )
+                        adaptor.addChild(root_1, stream_label.nextTree());
+                        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1159:28: ^( VT_FIELD accessor_path ( or_restr_connective )? )
                         {
                         Object root_2 = (Object)adaptor.nil();
-                        root_2 = (Object)adaptor.becomeRoot(adaptor.create(VT_FIELD, "VT_FIELD"), root_2);
+                        root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FIELD, "VT_FIELD"), root_2);
 
-                        adaptor.addChild(root_2, stream_accessor_path.next());
-                        // src/main/resources/org/drools/lang/DRL.g:1179:53: ( or_restr_connective )?
+                        adaptor.addChild(root_2, stream_accessor_path.nextTree());
+                        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1159:53: ( or_restr_connective )?
                         if ( stream_or_restr_connective.hasNext() ) {
-                            adaptor.addChild(root_2, stream_or_restr_connective.next());
+                            adaptor.addChild(root_2, stream_or_restr_connective.nextTree());
 
                         }
                         stream_or_restr_connective.reset();
@@ -10754,82 +10504,86 @@
 
                     }
 
+                    retval.tree = root_0;}
                     }
-
-                    }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1180:4: accessor_path or_restr_connective
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1160:4: accessor_path or_restr_connective
                     {
-                    pushFollow(FOLLOW_accessor_path_in_field_constraint4000);
+                    pushFollow(FOLLOW_accessor_path_in_field_constraint3954);
                     accessor_path233=accessor_path();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_accessor_path.add(accessor_path233.getTree());
-                    pushFollow(FOLLOW_or_restr_connective_in_field_constraint4002);
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_accessor_path.add(accessor_path233.getTree());
+                    pushFollow(FOLLOW_or_restr_connective_in_field_constraint3956);
                     or_restr_connective234=or_restr_connective();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_or_restr_connective.add(or_restr_connective234.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_or_restr_connective.add(or_restr_connective234.getTree());
+
+
                     // AST REWRITE
-                    // elements: or_restr_connective, accessor_path
+                    // elements: accessor_path, or_restr_connective
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
                     // rule list labels: 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                     retval.tree = root_0;
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1181:3: -> ^( VT_FIELD accessor_path or_restr_connective )
+                    // 1161:3: -> ^( VT_FIELD accessor_path or_restr_connective )
                     {
-                        // src/main/resources/org/drools/lang/DRL.g:1181:6: ^( VT_FIELD accessor_path or_restr_connective )
+                        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1161:6: ^( VT_FIELD accessor_path or_restr_connective )
                         {
                         Object root_1 = (Object)adaptor.nil();
-                        root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_FIELD, "VT_FIELD"), root_1);
+                        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FIELD, "VT_FIELD"), root_1);
 
-                        adaptor.addChild(root_1, stream_accessor_path.next());
-                        adaptor.addChild(root_1, stream_or_restr_connective.next());
+                        adaptor.addChild(root_1, stream_accessor_path.nextTree());
+                        adaptor.addChild(root_1, stream_or_restr_connective.nextTree());
 
                         adaptor.addChild(root_0, root_1);
                         }
 
                     }
 
+                    retval.tree = root_0;}
                     }
-
-                    }
                     break;
 
             }
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end field_constraint
+    // $ANTLR end "field_constraint"
 
     public static class label_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start label
-    // src/main/resources/org/drools/lang/DRL.g:1184:1: label : value= ID COLON -> VT_LABEL[$value] ;
-    public final label_return label() throws RecognitionException {
-        label_return retval = new label_return();
+    // $ANTLR start "label"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1164:1: label : value= ID COLON -> VT_LABEL[$value] ;
+    public final DRLParser.label_return label() throws RecognitionException {
+        DRLParser.label_return retval = new DRLParser.label_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -10843,122 +10597,136 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1185:2: (value= ID COLON -> VT_LABEL[$value] )
-            // src/main/resources/org/drools/lang/DRL.g:1185:4: value= ID COLON
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1165:2: (value= ID COLON -> VT_LABEL[$value] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1165:4: value= ID COLON
             {
-            value=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_label4027); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(value);
+            value=(Token)match(input,ID,FOLLOW_ID_in_label3981); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(value);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(value, DroolsEditorType.IDENTIFIER_VARIABLE);	
             }
-            COLON235=(Token)input.LT(1);
-            match(input,COLON,FOLLOW_COLON_in_label4034); if (failed) return retval;
-            if ( backtracking==0 ) stream_COLON.add(COLON235);
+            COLON235=(Token)match(input,COLON,FOLLOW_COLON_in_label3988); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_COLON.add(COLON235);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(COLON235, DroolsEditorType.SYMBOL);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1187:3: -> VT_LABEL[$value]
+            // 1167:3: -> VT_LABEL[$value]
             {
-                adaptor.addChild(root_0, adaptor.create(VT_LABEL, value));
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_LABEL, value));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end label
+    // $ANTLR end "label"
 
     public static class or_restr_connective_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start or_restr_connective
-    // src/main/resources/org/drools/lang/DRL.g:1190:1: or_restr_connective : and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )* ;
-    public final or_restr_connective_return or_restr_connective() throws RecognitionException {
-        or_restr_connective_return retval = new or_restr_connective_return();
+    // $ANTLR start "or_restr_connective"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1170:1: or_restr_connective : and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )* ;
+    public final DRLParser.or_restr_connective_return or_restr_connective() throws RecognitionException {
+        DRLParser.or_restr_connective_return retval = new DRLParser.or_restr_connective_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token DOUBLE_PIPE237=null;
-        and_restr_connective_return and_restr_connective236 = null;
+        DRLParser.and_restr_connective_return and_restr_connective236 = null;
 
-        and_restr_connective_return and_restr_connective238 = null;
+        DRLParser.and_restr_connective_return and_restr_connective238 = null;
 
 
         Object DOUBLE_PIPE237_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1191:2: ( and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )* )
-            // src/main/resources/org/drools/lang/DRL.g:1191:4: and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1171:2: ( and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1171:4: and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective4055);
+            pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective4009);
             and_restr_connective236=and_restr_connective();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, and_restr_connective236.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1191:25: ({...}? => DOUBLE_PIPE and_restr_connective )*
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, and_restr_connective236.getTree());
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1171:25: ({...}? => DOUBLE_PIPE and_restr_connective )*
             loop84:
             do {
                 int alt84=2;
-                alt84 = dfa84.predict(input);
+                int LA84_0 = input.LA(1);
+
+                if ( (LA84_0==DOUBLE_PIPE) ) {
+                    int LA84_2 = input.LA(2);
+
+                    if ( (((validateRestr()))) ) {
+                        alt84=1;
+                    }
+
+
+                }
+
+
                 switch (alt84) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1191:26: {...}? => DOUBLE_PIPE and_restr_connective
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1171:26: {...}? => DOUBLE_PIPE and_restr_connective
             	    {
-            	    if ( !((validateRestr())) ) {
-            	        if (backtracking>0) {failed=true; return retval;}
+            	    if ( !(((validateRestr()))) ) {
+            	        if (state.backtracking>0) {state.failed=true; return retval;}
             	        throw new FailedPredicateException(input, "or_restr_connective", "(validateRestr())");
             	    }
-            	    DOUBLE_PIPE237=(Token)input.LT(1);
-            	    match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_restr_connective4061); if (failed) return retval;
-            	    if ( backtracking==0 ) {
+            	    DOUBLE_PIPE237=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_restr_connective4015); if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) {
             	    DOUBLE_PIPE237_tree = (Object)adaptor.create(DOUBLE_PIPE237);
             	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_PIPE237_tree, root_0);
             	    }
-            	    if ( backtracking==0 ) {
+            	    if ( state.backtracking==0 ) {
             	      	emit(DOUBLE_PIPE237, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective4069);
+            	    pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective4023);
             	    and_restr_connective238=and_restr_connective();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, and_restr_connective238.getTree());
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, and_restr_connective238.getTree());
+
             	    }
             	    break;
 
@@ -10972,81 +10740,97 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end or_restr_connective
+    // $ANTLR end "or_restr_connective"
 
     public static class and_restr_connective_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start and_restr_connective
-    // src/main/resources/org/drools/lang/DRL.g:1195:1: and_restr_connective : constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* ;
-    public final and_restr_connective_return and_restr_connective() throws RecognitionException {
-        and_restr_connective_return retval = new and_restr_connective_return();
+    // $ANTLR start "and_restr_connective"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1175:1: and_restr_connective : constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* ;
+    public final DRLParser.and_restr_connective_return and_restr_connective() throws RecognitionException {
+        DRLParser.and_restr_connective_return retval = new DRLParser.and_restr_connective_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token DOUBLE_AMPER240=null;
-        constraint_expression_return constraint_expression239 = null;
+        DRLParser.constraint_expression_return constraint_expression239 = null;
 
-        constraint_expression_return constraint_expression241 = null;
+        DRLParser.constraint_expression_return constraint_expression241 = null;
 
 
         Object DOUBLE_AMPER240_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1196:2: ( constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* )
-            // src/main/resources/org/drools/lang/DRL.g:1196:4: constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1176:2: ( constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1176:4: constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_constraint_expression_in_and_restr_connective4084);
+            pushFollow(FOLLOW_constraint_expression_in_and_restr_connective4038);
             constraint_expression239=constraint_expression();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, constraint_expression239.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1196:26: ({...}? => DOUBLE_AMPER constraint_expression )*
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint_expression239.getTree());
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1176:26: ({...}? => DOUBLE_AMPER constraint_expression )*
             loop85:
             do {
                 int alt85=2;
-                alt85 = dfa85.predict(input);
+                int LA85_0 = input.LA(1);
+
+                if ( (LA85_0==DOUBLE_AMPER) ) {
+                    int LA85_2 = input.LA(2);
+
+                    if ( (((validateRestr()))) ) {
+                        alt85=1;
+                    }
+
+
+                }
+
+
                 switch (alt85) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1196:27: {...}? => DOUBLE_AMPER constraint_expression
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1176:27: {...}? => DOUBLE_AMPER constraint_expression
             	    {
-            	    if ( !((validateRestr())) ) {
-            	        if (backtracking>0) {failed=true; return retval;}
+            	    if ( !(((validateRestr()))) ) {
+            	        if (state.backtracking>0) {state.failed=true; return retval;}
             	        throw new FailedPredicateException(input, "and_restr_connective", "(validateRestr())");
             	    }
-            	    DOUBLE_AMPER240=(Token)input.LT(1);
-            	    match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_restr_connective4090); if (failed) return retval;
-            	    if ( backtracking==0 ) {
+            	    DOUBLE_AMPER240=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_restr_connective4044); if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) {
             	    DOUBLE_AMPER240_tree = (Object)adaptor.create(DOUBLE_AMPER240);
             	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_AMPER240_tree, root_0);
             	    }
-            	    if ( backtracking==0 ) {
+            	    if ( state.backtracking==0 ) {
             	      	emit(DOUBLE_AMPER240, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_constraint_expression_in_and_restr_connective4097);
+            	    pushFollow(FOLLOW_constraint_expression_in_and_restr_connective4051);
             	    constraint_expression241=constraint_expression();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, constraint_expression241.getTree());
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint_expression241.getTree());
+
             	    }
             	    break;
 
@@ -11060,452 +10844,103 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end and_restr_connective
+    // $ANTLR end "and_restr_connective"
 
     public static class constraint_expression_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start constraint_expression
-    // src/main/resources/org/drools/lang/DRL.g:1200:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );
-    public final constraint_expression_return constraint_expression() throws RecognitionException {
-        constraint_expression_return retval = new constraint_expression_return();
+    // $ANTLR start "constraint_expression"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1180:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );
+    public final DRLParser.constraint_expression_return constraint_expression() throws RecognitionException {
+        DRLParser.constraint_expression_return retval = new DRLParser.constraint_expression_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token LEFT_PAREN244=null;
         Token RIGHT_PAREN246=null;
-        compound_operator_return compound_operator242 = null;
+        DRLParser.compound_operator_return compound_operator242 = null;
 
-        simple_operator_return simple_operator243 = null;
+        DRLParser.simple_operator_return simple_operator243 = null;
 
-        or_restr_connective_return or_restr_connective245 = null;
+        DRLParser.or_restr_connective_return or_restr_connective245 = null;
 
 
         Object LEFT_PAREN244_tree=null;
         Object RIGHT_PAREN246_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1204:3: ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1184:3: ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN )
             int alt86=3;
-            switch ( input.LA(1) ) {
-            case ID:
-                {
-                switch ( input.LA(2) ) {
-                case ID:
-                    {
-                    int LA86_9 = input.LA(3);
-
-                    if ( (LA86_9==ID||LA86_9==STRING||(LA86_9>=BOOL && LA86_9<=INT)||(LA86_9>=FLOAT && LA86_9<=NULL)) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
-                        alt86=2;
-                    }
-                    else if ( (LA86_9==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
-                        int LA86_23 = input.LA(4);
-
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.NOT))) ) {
-                            alt86=1;
-                        }
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.NOT))) ) {
-                            alt86=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return retval;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("1200:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 86, 23, input);
-
-                            throw nvae;
-                        }
-                    }
-                    else if ( (LA86_9==EOF||LA86_9==DOT||(LA86_9>=COMMA && LA86_9<=RIGHT_PAREN)||(LA86_9>=DOUBLE_PIPE && LA86_9<=DOUBLE_AMPER)||LA86_9==LEFT_SQUARE) ) {
-                        alt86=2;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return retval;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("1200:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 86, 9, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case STRING:
-                case BOOL:
-                case INT:
-                case FLOAT:
-                case NULL:
-                case LEFT_SQUARE:
-                    {
-                    alt86=2;
-                    }
-                    break;
-                case LEFT_PAREN:
-                    {
-                    switch ( input.LA(3) ) {
-                    case ID:
-                        {
-                        int LA86_31 = input.LA(4);
-
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
-                            alt86=1;
-                        }
-                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.CONTAINS))||(validateIdentifierKey(DroolsSoftKeywords.EXCLUDES))||(validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE))||(validateIdentifierKey(DroolsSoftKeywords.MATCHES))||(isPluggableEvaluator(false))||(validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))) ) {
-                            alt86=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return retval;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("1200:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 86, 31, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    case STRING:
-                        {
-                        int LA86_32 = input.LA(4);
-
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
-                            alt86=1;
-                        }
-                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.CONTAINS))||(validateIdentifierKey(DroolsSoftKeywords.EXCLUDES))||(validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE))||(validateIdentifierKey(DroolsSoftKeywords.MATCHES))||(isPluggableEvaluator(false))||(validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))) ) {
-                            alt86=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return retval;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("1200:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 86, 32, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    case INT:
-                        {
-                        int LA86_33 = input.LA(4);
-
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
-                            alt86=1;
-                        }
-                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.CONTAINS))||(validateIdentifierKey(DroolsSoftKeywords.EXCLUDES))||(validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE))||(validateIdentifierKey(DroolsSoftKeywords.MATCHES))||(isPluggableEvaluator(false))||(validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))) ) {
-                            alt86=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return retval;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("1200:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 86, 33, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    case FLOAT:
-                        {
-                        int LA86_34 = input.LA(4);
-
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
-                            alt86=1;
-                        }
-                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.CONTAINS))||(validateIdentifierKey(DroolsSoftKeywords.EXCLUDES))||(validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE))||(validateIdentifierKey(DroolsSoftKeywords.MATCHES))||(isPluggableEvaluator(false))||(validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))) ) {
-                            alt86=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return retval;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("1200:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 86, 34, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    case BOOL:
-                        {
-                        int LA86_35 = input.LA(4);
-
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
-                            alt86=1;
-                        }
-                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.CONTAINS))||(validateIdentifierKey(DroolsSoftKeywords.EXCLUDES))||(validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE))||(validateIdentifierKey(DroolsSoftKeywords.MATCHES))||(isPluggableEvaluator(false))||(validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))) ) {
-                            alt86=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return retval;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("1200:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 86, 35, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    case NULL:
-                        {
-                        int LA86_36 = input.LA(4);
-
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
-                            alt86=1;
-                        }
-                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.CONTAINS))||(validateIdentifierKey(DroolsSoftKeywords.EXCLUDES))||(validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE))||(validateIdentifierKey(DroolsSoftKeywords.MATCHES))||(isPluggableEvaluator(false))||(validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))) ) {
-                            alt86=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return retval;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("1200:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 86, 36, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    case LEFT_PAREN:
-                        {
-                        int LA86_37 = input.LA(4);
-
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
-                            alt86=1;
-                        }
-                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.CONTAINS))||(validateIdentifierKey(DroolsSoftKeywords.EXCLUDES))||(validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE))||(isPluggableEvaluator(false))||(validateIdentifierKey(DroolsSoftKeywords.MATCHES))||(validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))) ) {
-                            alt86=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return retval;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("1200:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 86, 37, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    case VT_COMPILATION_UNIT:
-                    case VT_FUNCTION_IMPORT:
-                    case VT_FACT:
-                    case VT_CONSTRAINTS:
-                    case VT_LABEL:
-                    case VT_QUERY_ID:
-                    case VT_TEMPLATE_ID:
-                    case VT_TYPE_DECLARE_ID:
-                    case VT_RULE_ID:
-                    case VT_ENTRYPOINT_ID:
-                    case VT_SLOT_ID:
-                    case VT_SLOT:
-                    case VT_RULE_ATTRIBUTES:
-                    case VT_RHS_CHUNK:
-                    case VT_CURLY_CHUNK:
-                    case VT_SQUARE_CHUNK:
-                    case VT_PAREN_CHUNK:
-                    case VT_BEHAVIOR:
-                    case VT_AND_IMPLICIT:
-                    case VT_AND_PREFIX:
-                    case VT_OR_PREFIX:
-                    case VT_AND_INFIX:
-                    case VT_OR_INFIX:
-                    case VT_ACCUMULATE_INIT_CLAUSE:
-                    case VT_ACCUMULATE_ID_CLAUSE:
-                    case VT_FROM_SOURCE:
-                    case VT_EXPRESSION_CHAIN:
-                    case VT_PATTERN:
-                    case VT_FACT_BINDING:
-                    case VT_FACT_OR:
-                    case VT_BIND_FIELD:
-                    case VT_FIELD:
-                    case VT_ACCESSOR_PATH:
-                    case VT_ACCESSOR_ELEMENT:
-                    case VT_DATA_TYPE:
-                    case VT_PATTERN_TYPE:
-                    case VT_PACKAGE_ID:
-                    case VT_IMPORT_ID:
-                    case VT_GLOBAL_ID:
-                    case VT_FUNCTION_ID:
-                    case VT_PARAM_LIST:
-                    case VK_DATE_EFFECTIVE:
-                    case VK_DATE_EXPIRES:
-                    case VK_LOCK_ON_ACTIVE:
-                    case VK_NO_LOOP:
-                    case VK_AUTO_FOCUS:
-                    case VK_ACTIVATION_GROUP:
-                    case VK_AGENDA_GROUP:
-                    case VK_RULEFLOW_GROUP:
-                    case VK_DURATION:
-                    case VK_DIALECT:
-                    case VK_SALIENCE:
-                    case VK_ENABLED:
-                    case VK_ATTRIBUTES:
-                    case VK_RULE:
-                    case VK_EXTEND:
-                    case VK_IMPORT:
-                    case VK_PACKAGE:
-                    case VK_TEMPLATE:
-                    case VK_QUERY:
-                    case VK_DECLARE:
-                    case VK_FUNCTION:
-                    case VK_GLOBAL:
-                    case VK_EVAL:
-                    case VK_CONTAINS:
-                    case VK_MATCHES:
-                    case VK_EXCLUDES:
-                    case VK_SOUNDSLIKE:
-                    case VK_MEMBEROF:
-                    case VK_ENTRY_POINT:
-                    case VK_NOT:
-                    case VK_IN:
-                    case VK_OR:
-                    case VK_AND:
-                    case VK_EXISTS:
-                    case VK_FORALL:
-                    case VK_ACTION:
-                    case VK_REVERSE:
-                    case VK_RESULT:
-                    case VK_OPERATOR:
-                    case SEMICOLON:
-                    case DOT:
-                    case DOT_STAR:
-                    case END:
-                    case COMMA:
-                    case RIGHT_PAREN:
-                    case AT:
-                    case COLON:
-                    case EQUALS:
-                    case WHEN:
-                    case DOUBLE_PIPE:
-                    case DOUBLE_AMPER:
-                    case FROM:
-                    case OVER:
-                    case ACCUMULATE:
-                    case INIT:
-                    case COLLECT:
-                    case ARROW:
-                    case EQUAL:
-                    case GREATER:
-                    case GREATER_EQUAL:
-                    case LESS:
-                    case LESS_EQUAL:
-                    case NOT_EQUAL:
-                    case LEFT_SQUARE:
-                    case RIGHT_SQUARE:
-                    case THEN:
-                    case LEFT_CURLY:
-                    case RIGHT_CURLY:
-                    case MISC:
-                    case EOL:
-                    case WS:
-                    case EscapeSequence:
-                    case HexDigit:
-                    case UnicodeEscape:
-                    case OctalEscape:
-                    case GRAVE_ACCENT:
-                    case TILDE:
-                    case SH_STYLE_SINGLE_LINE_COMMENT:
-                    case C_STYLE_SINGLE_LINE_COMMENT:
-                    case MULTI_LINE_COMMENT:
-                        {
-                        alt86=2;
-                        }
-                        break;
-                    default:
-                        if (backtracking>0) {failed=true; return retval;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("1200:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 86, 15, input);
-
-                        throw nvae;
-                    }
-
-                    }
-                    break;
-                default:
-                    if (backtracking>0) {failed=true; return retval;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("1200:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 86, 1, input);
-
-                    throw nvae;
-                }
-
-                }
-                break;
-            case EQUAL:
-            case GREATER:
-            case GREATER_EQUAL:
-            case LESS:
-            case LESS_EQUAL:
-            case NOT_EQUAL:
-                {
-                alt86=2;
-                }
-                break;
-            case LEFT_PAREN:
-                {
-                alt86=3;
-                }
-                break;
-            default:
-                if (backtracking>0) {failed=true; return retval;}
-                NoViableAltException nvae =
-                    new NoViableAltException("1200:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 86, 0, input);
-
-                throw nvae;
-            }
-
+            alt86 = dfa86.predict(input);
             switch (alt86) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1204:5: compound_operator
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1184:5: compound_operator
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_compound_operator_in_constraint_expression4122);
+                    pushFollow(FOLLOW_compound_operator_in_constraint_expression4076);
                     compound_operator242=compound_operator();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, compound_operator242.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, compound_operator242.getTree());
+
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1205:4: simple_operator
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1185:4: simple_operator
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_simple_operator_in_constraint_expression4127);
+                    pushFollow(FOLLOW_simple_operator_in_constraint_expression4081);
                     simple_operator243=simple_operator();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, simple_operator243.getTree());
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, simple_operator243.getTree());
+
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1206:4: LEFT_PAREN or_restr_connective RIGHT_PAREN
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1186:4: LEFT_PAREN or_restr_connective RIGHT_PAREN
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    LEFT_PAREN244=(Token)input.LT(1);
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_constraint_expression4132); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    LEFT_PAREN244=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_constraint_expression4086); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN244, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_or_restr_connective_in_constraint_expression4141);
+                    pushFollow(FOLLOW_or_restr_connective_in_constraint_expression4095);
                     or_restr_connective245=or_restr_connective();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, or_restr_connective245.getTree());
-                    RIGHT_PAREN246=(Token)input.LT(1);
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_constraint_expression4146); if (failed) return retval;
-                    if ( backtracking==0 ) {
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, or_restr_connective245.getTree());
+                    RIGHT_PAREN246=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_constraint_expression4100); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     RIGHT_PAREN246_tree = (Object)adaptor.create(RIGHT_PAREN246);
                     adaptor.addChild(root_0, RIGHT_PAREN246_tree);
                     }
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(RIGHT_PAREN246, DroolsEditorType.SYMBOL);	
                     }
 
@@ -11515,13 +10950,14 @@
             }
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch ( RecognitionException re ) {
-            
+
             	if (!lookaheadTest){
             		reportError(re);
             		recover(input, re);
@@ -11531,7 +10967,7 @@
 
         }
         finally {
-            
+
             	if (isEditorInterfaceEnabled && input.LA(2) == EOF && input.LA(1) == ID) {
             		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
             		emit(input.LT(1), DroolsEditorType.KEYWORD);
@@ -11566,17 +11002,17 @@
         }
         return retval;
     }
-    // $ANTLR end constraint_expression
+    // $ANTLR end "constraint_expression"
 
     public static class simple_operator_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start simple_operator
-    // src/main/resources/org/drools/lang/DRL.g:1251:1: simple_operator : ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | neg_operator_key ( square_chunk )? ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | operator_key ( square_chunk )? ) expression_value ;
-    public final simple_operator_return simple_operator() throws RecognitionException {
-        simple_operator_return retval = new simple_operator_return();
+    // $ANTLR start "simple_operator"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1231:1: simple_operator : ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( contains_key | soundslike_key | matches_key | memberof_key | operator_key ( square_chunk )? ) ) expression_value ;
+    public final DRLParser.simple_operator_return simple_operator() throws RecognitionException {
+        DRLParser.simple_operator_return retval = new DRLParser.simple_operator_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -11587,37 +11023,23 @@
         Token LESS250=null;
         Token LESS_EQUAL251=null;
         Token NOT_EQUAL252=null;
-        not_key_return not_key253 = null;
+        DRLParser.not_key_return not_key253 = null;
 
-        contains_key_return contains_key254 = null;
+        DRLParser.contains_key_return contains_key254 = null;
 
-        soundslike_key_return soundslike_key255 = null;
+        DRLParser.soundslike_key_return soundslike_key255 = null;
 
-        matches_key_return matches_key256 = null;
+        DRLParser.matches_key_return matches_key256 = null;
 
-        memberof_key_return memberof_key257 = null;
+        DRLParser.memberof_key_return memberof_key257 = null;
 
-        neg_operator_key_return neg_operator_key258 = null;
+        DRLParser.operator_key_return operator_key258 = null;
 
-        square_chunk_return square_chunk259 = null;
+        DRLParser.square_chunk_return square_chunk259 = null;
 
-        contains_key_return contains_key260 = null;
+        DRLParser.expression_value_return expression_value260 = null;
 
-        excludes_key_return excludes_key261 = null;
 
-        matches_key_return matches_key262 = null;
-
-        soundslike_key_return soundslike_key263 = null;
-
-        memberof_key_return memberof_key264 = null;
-
-        operator_key_return operator_key265 = null;
-
-        square_chunk_return square_chunk266 = null;
-
-        expression_value_return expression_value267 = null;
-
-
         Object EQUAL247_tree=null;
         Object GREATER248_tree=null;
         Object GREATER_EQUAL249_tree=null;
@@ -11625,296 +11047,273 @@
         Object LESS_EQUAL251_tree=null;
         Object NOT_EQUAL252_tree=null;
 
+        if ( state.backtracking==0 ) emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1252:2: ( ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | neg_operator_key ( square_chunk )? ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | operator_key ( square_chunk )? ) expression_value )
-            // src/main/resources/org/drools/lang/DRL.g:1252:4: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | neg_operator_key ( square_chunk )? ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | operator_key ( square_chunk )? ) expression_value
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1233:2: ( ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( contains_key | soundslike_key | matches_key | memberof_key | operator_key ( square_chunk )? ) ) expression_value )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1233:4: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( contains_key | soundslike_key | matches_key | memberof_key | operator_key ( square_chunk )? ) ) expression_value
             {
             root_0 = (Object)adaptor.nil();
 
-            if ( backtracking==0 ) {
-              	emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);	
-            }
-            // src/main/resources/org/drools/lang/DRL.g:1253:3: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | neg_operator_key ( square_chunk )? ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | operator_key ( square_chunk )? )
-            int alt90=13;
-            switch ( input.LA(1) ) {
-            case EQUAL:
-                {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1233:4: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( contains_key | soundslike_key | matches_key | memberof_key | operator_key ( square_chunk )? ) )
+            int alt90=7;
+            int LA90_0 = input.LA(1);
+
+            if ( (LA90_0==EQUAL) ) {
                 alt90=1;
-                }
-                break;
-            case GREATER:
-                {
+            }
+            else if ( (LA90_0==GREATER) ) {
                 alt90=2;
-                }
-                break;
-            case GREATER_EQUAL:
-                {
+            }
+            else if ( (LA90_0==GREATER_EQUAL) ) {
                 alt90=3;
-                }
-                break;
-            case LESS:
-                {
+            }
+            else if ( (LA90_0==LESS) ) {
                 alt90=4;
-                }
-                break;
-            case LESS_EQUAL:
-                {
+            }
+            else if ( (LA90_0==LESS_EQUAL) ) {
                 alt90=5;
-                }
-                break;
-            case NOT_EQUAL:
-                {
+            }
+            else if ( (LA90_0==NOT_EQUAL) ) {
                 alt90=6;
-                }
-                break;
-            case ID:
-                {
-                int LA90_7 = input.LA(2);
-
-                if ( (LA90_7==ID) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
-                    alt90=7;
-                }
-                else if ( ((validateIdentifierKey(DroolsSoftKeywords.CONTAINS))) ) {
-                    alt90=8;
-                }
-                else if ( ((validateIdentifierKey(DroolsSoftKeywords.EXCLUDES))) ) {
-                    alt90=9;
-                }
-                else if ( ((validateIdentifierKey(DroolsSoftKeywords.MATCHES))) ) {
-                    alt90=10;
-                }
-                else if ( ((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE))) ) {
-                    alt90=11;
-                }
-                else if ( ((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF))) ) {
-                    alt90=12;
-                }
-                else if ( ((isPluggableEvaluator(false))) ) {
-                    alt90=13;
-                }
-                else {
-                    if (backtracking>0) {failed=true; return retval;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("1253:3: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | neg_operator_key ( square_chunk )? ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | operator_key ( square_chunk )? )", 90, 7, input);
-
-                    throw nvae;
-                }
-                }
-                break;
-            default:
-                if (backtracking>0) {failed=true; return retval;}
+            }
+            else if ( (LA90_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {
+                alt90=7;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1253:3: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | neg_operator_key ( square_chunk )? ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | operator_key ( square_chunk )? )", 90, 0, input);
+                    new NoViableAltException("", 90, 0, input);
 
                 throw nvae;
             }
-
             switch (alt90) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1253:4: EQUAL
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1233:5: EQUAL
                     {
-                    EQUAL247=(Token)input.LT(1);
-                    match(input,EQUAL,FOLLOW_EQUAL_in_simple_operator4175); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    EQUAL247=(Token)match(input,EQUAL,FOLLOW_EQUAL_in_simple_operator4130); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     EQUAL247_tree = (Object)adaptor.create(EQUAL247);
                     root_0 = (Object)adaptor.becomeRoot(EQUAL247_tree, root_0);
                     }
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(EQUAL247, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1254:4: GREATER
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1234:4: GREATER
                     {
-                    GREATER248=(Token)input.LT(1);
-                    match(input,GREATER,FOLLOW_GREATER_in_simple_operator4183); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    GREATER248=(Token)match(input,GREATER,FOLLOW_GREATER_in_simple_operator4138); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     GREATER248_tree = (Object)adaptor.create(GREATER248);
                     root_0 = (Object)adaptor.becomeRoot(GREATER248_tree, root_0);
                     }
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(GREATER248, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1255:4: GREATER_EQUAL
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1235:4: GREATER_EQUAL
                     {
-                    GREATER_EQUAL249=(Token)input.LT(1);
-                    match(input,GREATER_EQUAL,FOLLOW_GREATER_EQUAL_in_simple_operator4191); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    GREATER_EQUAL249=(Token)match(input,GREATER_EQUAL,FOLLOW_GREATER_EQUAL_in_simple_operator4146); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     GREATER_EQUAL249_tree = (Object)adaptor.create(GREATER_EQUAL249);
                     root_0 = (Object)adaptor.becomeRoot(GREATER_EQUAL249_tree, root_0);
                     }
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(GREATER_EQUAL249, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DRL.g:1256:4: LESS
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1236:4: LESS
                     {
-                    LESS250=(Token)input.LT(1);
-                    match(input,LESS,FOLLOW_LESS_in_simple_operator4199); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    LESS250=(Token)match(input,LESS,FOLLOW_LESS_in_simple_operator4154); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     LESS250_tree = (Object)adaptor.create(LESS250);
                     root_0 = (Object)adaptor.becomeRoot(LESS250_tree, root_0);
                     }
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(LESS250, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/lang/DRL.g:1257:4: LESS_EQUAL
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1237:4: LESS_EQUAL
                     {
-                    LESS_EQUAL251=(Token)input.LT(1);
-                    match(input,LESS_EQUAL,FOLLOW_LESS_EQUAL_in_simple_operator4207); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    LESS_EQUAL251=(Token)match(input,LESS_EQUAL,FOLLOW_LESS_EQUAL_in_simple_operator4162); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     LESS_EQUAL251_tree = (Object)adaptor.create(LESS_EQUAL251);
                     root_0 = (Object)adaptor.becomeRoot(LESS_EQUAL251_tree, root_0);
                     }
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(LESS_EQUAL251, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 6 :
-                    // src/main/resources/org/drools/lang/DRL.g:1258:4: NOT_EQUAL
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1238:4: NOT_EQUAL
                     {
-                    NOT_EQUAL252=(Token)input.LT(1);
-                    match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_simple_operator4215); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    NOT_EQUAL252=(Token)match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_simple_operator4170); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     NOT_EQUAL252_tree = (Object)adaptor.create(NOT_EQUAL252);
                     root_0 = (Object)adaptor.becomeRoot(NOT_EQUAL252_tree, root_0);
                     }
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(NOT_EQUAL252, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 7 :
-                    // src/main/resources/org/drools/lang/DRL.g:1259:4: not_key ( contains_key | soundslike_key | matches_key | memberof_key | neg_operator_key ( square_chunk )? )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1239:4: ( not_key )? ( contains_key | soundslike_key | matches_key | memberof_key | operator_key ( square_chunk )? )
                     {
-                    pushFollow(FOLLOW_not_key_in_simple_operator4223);
-                    not_key253=not_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, not_key253.getTree());
-                    // src/main/resources/org/drools/lang/DRL.g:1260:3: ( contains_key | soundslike_key | matches_key | memberof_key | neg_operator_key ( square_chunk )? )
-                    int alt88=5;
-                    int LA88_0 = input.LA(1);
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1239:4: ( not_key )?
+                    int alt87=2;
+                    int LA87_0 = input.LA(1);
 
-                    if ( (LA88_0==ID) ) {
-                        int LA88_1 = input.LA(2);
+                    if ( (LA87_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {
+                        int LA87_1 = input.LA(2);
 
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.CONTAINS))) ) {
-                            alt88=1;
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {
+                            alt87=1;
                         }
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE))) ) {
-                            alt88=2;
+                    }
+                    switch (alt87) {
+                        case 1 :
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1239:4: not_key
+                            {
+                            pushFollow(FOLLOW_not_key_in_simple_operator4178);
+                            not_key253=not_key();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) adaptor.addChild(root_0, not_key253.getTree());
+
+                            }
+                            break;
+
+                    }
+
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1240:3: ( contains_key | soundslike_key | matches_key | memberof_key | operator_key ( square_chunk )? )
+                    int alt89=5;
+                    int LA89_0 = input.LA(1);
+
+                    if ( (LA89_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {
+                        int LA89_1 = input.LA(2);
+
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))) ) {
+                            alt89=1;
                         }
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.MATCHES))) ) {
-                            alt88=3;
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))) ) {
+                            alt89=2;
                         }
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF))) ) {
-                            alt88=4;
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))) ) {
+                            alt89=3;
                         }
-                        else if ( ((isPluggableEvaluator(true))) ) {
-                            alt88=5;
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))) ) {
+                            alt89=4;
                         }
+                        else if ( (((isPluggableEvaluator(false)))) ) {
+                            alt89=5;
+                        }
                         else {
-                            if (backtracking>0) {failed=true; return retval;}
+                            if (state.backtracking>0) {state.failed=true; return retval;}
                             NoViableAltException nvae =
-                                new NoViableAltException("1260:3: ( contains_key | soundslike_key | matches_key | memberof_key | neg_operator_key ( square_chunk )? )", 88, 1, input);
+                                new NoViableAltException("", 89, 1, input);
 
                             throw nvae;
                         }
                     }
                     else {
-                        if (backtracking>0) {failed=true; return retval;}
+                        if (state.backtracking>0) {state.failed=true; return retval;}
                         NoViableAltException nvae =
-                            new NoViableAltException("1260:3: ( contains_key | soundslike_key | matches_key | memberof_key | neg_operator_key ( square_chunk )? )", 88, 0, input);
+                            new NoViableAltException("", 89, 0, input);
 
                         throw nvae;
                     }
-                    switch (alt88) {
+                    switch (alt89) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DRL.g:1260:5: contains_key
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1240:5: contains_key
                             {
-                            pushFollow(FOLLOW_contains_key_in_simple_operator4230);
+                            pushFollow(FOLLOW_contains_key_in_simple_operator4185);
                             contains_key254=contains_key();
-                            _fsp--;
-                            if (failed) return retval;
-                            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(contains_key254.getTree(), root_0);
 
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(contains_key254.getTree(), root_0);
+
                             }
                             break;
                         case 2 :
-                            // src/main/resources/org/drools/lang/DRL.g:1261:5: soundslike_key
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1241:5: soundslike_key
                             {
-                            pushFollow(FOLLOW_soundslike_key_in_simple_operator4237);
+                            pushFollow(FOLLOW_soundslike_key_in_simple_operator4192);
                             soundslike_key255=soundslike_key();
-                            _fsp--;
-                            if (failed) return retval;
-                            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(soundslike_key255.getTree(), root_0);
 
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(soundslike_key255.getTree(), root_0);
+
                             }
                             break;
                         case 3 :
-                            // src/main/resources/org/drools/lang/DRL.g:1262:5: matches_key
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1242:5: matches_key
                             {
-                            pushFollow(FOLLOW_matches_key_in_simple_operator4244);
+                            pushFollow(FOLLOW_matches_key_in_simple_operator4199);
                             matches_key256=matches_key();
-                            _fsp--;
-                            if (failed) return retval;
-                            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(matches_key256.getTree(), root_0);
 
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(matches_key256.getTree(), root_0);
+
                             }
                             break;
                         case 4 :
-                            // src/main/resources/org/drools/lang/DRL.g:1263:5: memberof_key
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1243:5: memberof_key
                             {
-                            pushFollow(FOLLOW_memberof_key_in_simple_operator4251);
+                            pushFollow(FOLLOW_memberof_key_in_simple_operator4206);
                             memberof_key257=memberof_key();
-                            _fsp--;
-                            if (failed) return retval;
-                            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(memberof_key257.getTree(), root_0);
 
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(memberof_key257.getTree(), root_0);
+
                             }
                             break;
                         case 5 :
-                            // src/main/resources/org/drools/lang/DRL.g:1264:5: neg_operator_key ( square_chunk )?
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1244:5: operator_key ( square_chunk )?
                             {
-                            pushFollow(FOLLOW_neg_operator_key_in_simple_operator4258);
-                            neg_operator_key258=neg_operator_key();
-                            _fsp--;
-                            if (failed) return retval;
-                            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(neg_operator_key258.getTree(), root_0);
-                            // src/main/resources/org/drools/lang/DRL.g:1264:23: ( square_chunk )?
-                            int alt87=2;
-                            int LA87_0 = input.LA(1);
+                            pushFollow(FOLLOW_operator_key_in_simple_operator4213);
+                            operator_key258=operator_key();
 
-                            if ( (LA87_0==LEFT_SQUARE) ) {
-                                alt87=1;
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(operator_key258.getTree(), root_0);
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1244:19: ( square_chunk )?
+                            int alt88=2;
+                            int LA88_0 = input.LA(1);
+
+                            if ( (LA88_0==LEFT_SQUARE) ) {
+                                alt88=1;
                             }
-                            switch (alt87) {
+                            switch (alt88) {
                                 case 1 :
-                                    // src/main/resources/org/drools/lang/DRL.g:1264:23: square_chunk
+                                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1244:19: square_chunk
                                     {
-                                    pushFollow(FOLLOW_square_chunk_in_simple_operator4261);
+                                    pushFollow(FOLLOW_square_chunk_in_simple_operator4216);
                                     square_chunk259=square_chunk();
-                                    _fsp--;
-                                    if (failed) return retval;
-                                    if ( backtracking==0 ) adaptor.addChild(root_0, square_chunk259.getTree());
 
+                                    state._fsp--;
+                                    if (state.failed) return retval;
+                                    if ( state.backtracking==0 ) adaptor.addChild(root_0, square_chunk259.getTree());
+
                                     }
                                     break;
 
@@ -11929,238 +11328,155 @@
 
                     }
                     break;
-                case 8 :
-                    // src/main/resources/org/drools/lang/DRL.g:1268:4: contains_key
-                    {
-                    pushFollow(FOLLOW_contains_key_in_simple_operator4287);
-                    contains_key260=contains_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(contains_key260.getTree(), root_0);
 
-                    }
-                    break;
-                case 9 :
-                    // src/main/resources/org/drools/lang/DRL.g:1269:4: excludes_key
-                    {
-                    pushFollow(FOLLOW_excludes_key_in_simple_operator4293);
-                    excludes_key261=excludes_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(excludes_key261.getTree(), root_0);
-
-                    }
-                    break;
-                case 10 :
-                    // src/main/resources/org/drools/lang/DRL.g:1270:4: matches_key
-                    {
-                    pushFollow(FOLLOW_matches_key_in_simple_operator4299);
-                    matches_key262=matches_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(matches_key262.getTree(), root_0);
-
-                    }
-                    break;
-                case 11 :
-                    // src/main/resources/org/drools/lang/DRL.g:1271:4: soundslike_key
-                    {
-                    pushFollow(FOLLOW_soundslike_key_in_simple_operator4305);
-                    soundslike_key263=soundslike_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(soundslike_key263.getTree(), root_0);
-
-                    }
-                    break;
-                case 12 :
-                    // src/main/resources/org/drools/lang/DRL.g:1272:4: memberof_key
-                    {
-                    pushFollow(FOLLOW_memberof_key_in_simple_operator4311);
-                    memberof_key264=memberof_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(memberof_key264.getTree(), root_0);
-
-                    }
-                    break;
-                case 13 :
-                    // src/main/resources/org/drools/lang/DRL.g:1274:4: operator_key ( square_chunk )?
-                    {
-                    pushFollow(FOLLOW_operator_key_in_simple_operator4318);
-                    operator_key265=operator_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(operator_key265.getTree(), root_0);
-                    // src/main/resources/org/drools/lang/DRL.g:1274:18: ( square_chunk )?
-                    int alt89=2;
-                    int LA89_0 = input.LA(1);
-
-                    if ( (LA89_0==LEFT_SQUARE) ) {
-                        alt89=1;
-                    }
-                    switch (alt89) {
-                        case 1 :
-                            // src/main/resources/org/drools/lang/DRL.g:1274:18: square_chunk
-                            {
-                            pushFollow(FOLLOW_square_chunk_in_simple_operator4321);
-                            square_chunk266=square_chunk();
-                            _fsp--;
-                            if (failed) return retval;
-                            if ( backtracking==0 ) adaptor.addChild(root_0, square_chunk266.getTree());
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-                    break;
-
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);	
             }
-            pushFollow(FOLLOW_expression_value_in_simple_operator4339);
-            expression_value267=expression_value();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, expression_value267.getTree());
+            pushFollow(FOLLOW_expression_value_in_simple_operator4253);
+            expression_value260=expression_value();
 
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, expression_value260.getTree());
+
             }
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end simple_operator
+    // $ANTLR end "simple_operator"
 
     public static class compound_operator_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start compound_operator
-    // src/main/resources/org/drools/lang/DRL.g:1282:1: compound_operator : ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN ;
-    public final compound_operator_return compound_operator() throws RecognitionException {
-        compound_operator_return retval = new compound_operator_return();
+    // $ANTLR start "compound_operator"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1254:1: compound_operator : ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN ;
+    public final DRLParser.compound_operator_return compound_operator() throws RecognitionException {
+        DRLParser.compound_operator_return retval = new DRLParser.compound_operator_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_PAREN271=null;
-        Token COMMA273=null;
-        Token RIGHT_PAREN275=null;
-        in_key_return in_key268 = null;
+        Token LEFT_PAREN264=null;
+        Token COMMA266=null;
+        Token RIGHT_PAREN268=null;
+        DRLParser.in_key_return in_key261 = null;
 
-        not_key_return not_key269 = null;
+        DRLParser.not_key_return not_key262 = null;
 
-        in_key_return in_key270 = null;
+        DRLParser.in_key_return in_key263 = null;
 
-        expression_value_return expression_value272 = null;
+        DRLParser.expression_value_return expression_value265 = null;
 
-        expression_value_return expression_value274 = null;
+        DRLParser.expression_value_return expression_value267 = null;
 
 
-        Object LEFT_PAREN271_tree=null;
-        Object COMMA273_tree=null;
-        Object RIGHT_PAREN275_tree=null;
+        Object LEFT_PAREN264_tree=null;
+        Object COMMA266_tree=null;
+        Object RIGHT_PAREN268_tree=null;
 
+        if ( state.backtracking==0 ) emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1283:2: ( ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN )
-            // src/main/resources/org/drools/lang/DRL.g:1283:4: ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1256:2: ( ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1257:2: ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN
             {
             root_0 = (Object)adaptor.nil();
 
-            if ( backtracking==0 ) {
-              	emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);	
-            }
-            // src/main/resources/org/drools/lang/DRL.g:1284:2: ( in_key | not_key in_key )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1257:2: ( in_key | not_key in_key )
             int alt91=2;
             int LA91_0 = input.LA(1);
 
-            if ( (LA91_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))||(validateIdentifierKey(DroolsSoftKeywords.IN))))) {
+            if ( (LA91_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((validateIdentifierKey(DroolsSoftKeywords.IN)))))) {
                 int LA91_1 = input.LA(2);
 
-                if ( (LA91_1==ID) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
-                    alt91=2;
-                }
-                else if ( (LA91_1==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.IN)))) {
+                if ( (LA91_1==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.IN))))) {
                     alt91=1;
                 }
+                else if ( (LA91_1==ID) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {
+                    alt91=2;
+                }
                 else {
-                    if (backtracking>0) {failed=true; return retval;}
+                    if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1284:2: ( in_key | not_key in_key )", 91, 1, input);
+                        new NoViableAltException("", 91, 1, input);
 
                     throw nvae;
                 }
             }
             else {
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1284:2: ( in_key | not_key in_key )", 91, 0, input);
+                    new NoViableAltException("", 91, 0, input);
 
                 throw nvae;
             }
             switch (alt91) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1284:4: in_key
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1257:4: in_key
                     {
-                    pushFollow(FOLLOW_in_key_in_compound_operator4357);
-                    in_key268=in_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key268.getTree(), root_0);
+                    pushFollow(FOLLOW_in_key_in_compound_operator4273);
+                    in_key261=in_key();
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key261.getTree(), root_0);
+
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1284:14: not_key in_key
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1257:14: not_key in_key
                     {
-                    pushFollow(FOLLOW_not_key_in_compound_operator4362);
-                    not_key269=not_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, not_key269.getTree());
-                    pushFollow(FOLLOW_in_key_in_compound_operator4364);
-                    in_key270=in_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key270.getTree(), root_0);
+                    pushFollow(FOLLOW_not_key_in_compound_operator4278);
+                    not_key262=not_key();
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, not_key262.getTree());
+                    pushFollow(FOLLOW_in_key_in_compound_operator4280);
+                    in_key263=in_key();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key263.getTree(), root_0);
+
                     }
                     break;
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);	
             }
-            LEFT_PAREN271=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_compound_operator4375); if (failed) return retval;
-            if ( backtracking==0 ) {
-              	emit(LEFT_PAREN271, DroolsEditorType.SYMBOL);	
+            LEFT_PAREN264=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_compound_operator4291); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+              	emit(LEFT_PAREN264, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_expression_value_in_compound_operator4383);
-            expression_value272=expression_value();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, expression_value272.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1287:21: ( COMMA expression_value )*
+            pushFollow(FOLLOW_expression_value_in_compound_operator4299);
+            expression_value265=expression_value();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, expression_value265.getTree());
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1260:21: ( COMMA expression_value )*
             loop92:
             do {
                 int alt92=2;
@@ -12173,19 +11489,19 @@
 
                 switch (alt92) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1287:23: COMMA expression_value
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1260:23: COMMA expression_value
             	    {
-            	    COMMA273=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_compound_operator4387); if (failed) return retval;
-            	    if ( backtracking==0 ) {
-            	      	emit(COMMA273, DroolsEditorType.SYMBOL);	
+            	    COMMA266=(Token)match(input,COMMA,FOLLOW_COMMA_in_compound_operator4303); if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) {
+            	      	emit(COMMA266, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_expression_value_in_compound_operator4392);
-            	    expression_value274=expression_value();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, expression_value274.getTree());
+            	    pushFollow(FOLLOW_expression_value_in_compound_operator4308);
+            	    expression_value267=expression_value();
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, expression_value267.getTree());
+
             	    }
             	    break;
 
@@ -12194,16 +11510,15 @@
                 }
             } while (true);
 
-            RIGHT_PAREN275=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_compound_operator4400); if (failed) return retval;
-            if ( backtracking==0 ) {
-            RIGHT_PAREN275_tree = (Object)adaptor.create(RIGHT_PAREN275);
-            adaptor.addChild(root_0, RIGHT_PAREN275_tree);
+            RIGHT_PAREN268=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_compound_operator4316); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            RIGHT_PAREN268_tree = (Object)adaptor.create(RIGHT_PAREN268);
+            adaptor.addChild(root_0, RIGHT_PAREN268_tree);
             }
-            if ( backtracking==0 ) {
-              	emit(RIGHT_PAREN275, DroolsEditorType.SYMBOL);	
+            if ( state.backtracking==0 ) {
+              	emit(RIGHT_PAREN268, DroolsEditorType.SYMBOL);	
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_CONDITION_END);	
             }
 
@@ -12211,14 +11526,17 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
              
@@ -12230,17 +11548,17 @@
         }
         return retval;
     }
-    // $ANTLR end compound_operator
+    // $ANTLR end "compound_operator"
 
     public static class operator_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start operator_key
-    // src/main/resources/org/drools/lang/DRL.g:1298:1: operator_key : {...}?id= ID -> VK_OPERATOR[$id] ;
-    public final operator_key_return operator_key() throws RecognitionException {
-        operator_key_return retval = new operator_key_return();
+    // $ANTLR start "operator_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1271:1: operator_key : {...}? =>id= ID -> VK_OPERATOR[$id] ;
+    public final DRLParser.operator_key_return operator_key() throws RecognitionException {
+        DRLParser.operator_key_return retval = new DRLParser.operator_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -12251,68 +11569,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1299:2: ({...}?id= ID -> VK_OPERATOR[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1299:9: {...}?id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1272:2: ({...}? =>id= ID -> VK_OPERATOR[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1272:9: {...}? =>id= ID
             {
-            if ( !((isPluggableEvaluator(false))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((isPluggableEvaluator(false)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "operator_key", "(isPluggableEvaluator(false))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_operator_key4429); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_operator_key4347); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
                emit(id, DroolsEditorType.IDENTIFIER); 
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1301:9: -> VK_OPERATOR[$id]
+            // 1274:9: -> VK_OPERATOR[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_OPERATOR, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_OPERATOR, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end operator_key
+    // $ANTLR end "operator_key"
 
     public static class neg_operator_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start neg_operator_key
-    // src/main/resources/org/drools/lang/DRL.g:1304:1: neg_operator_key : {...}?id= ID -> VK_OPERATOR[$id] ;
-    public final neg_operator_key_return neg_operator_key() throws RecognitionException {
-        neg_operator_key_return retval = new neg_operator_key_return();
+    // $ANTLR start "neg_operator_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1277:1: neg_operator_key : {...}? =>id= ID -> VK_OPERATOR[$id] ;
+    public final DRLParser.neg_operator_key_return neg_operator_key() throws RecognitionException {
+        DRLParser.neg_operator_key_return retval = new DRLParser.neg_operator_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -12323,87 +11643,89 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1305:2: ({...}?id= ID -> VK_OPERATOR[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1305:9: {...}?id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1278:2: ({...}? =>id= ID -> VK_OPERATOR[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1278:9: {...}? =>id= ID
             {
-            if ( !((isPluggableEvaluator(true))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((isPluggableEvaluator(true)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "neg_operator_key", "(isPluggableEvaluator(true))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_neg_operator_key4472); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_neg_operator_key4392); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
                emit(id, DroolsEditorType.IDENTIFIER); 
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1307:9: -> VK_OPERATOR[$id]
+            // 1280:9: -> VK_OPERATOR[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_OPERATOR, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_OPERATOR, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end neg_operator_key
+    // $ANTLR end "neg_operator_key"
 
     public static class expression_value_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start expression_value
-    // src/main/resources/org/drools/lang/DRL.g:1316:1: expression_value : ( accessor_path | literal_constraint | paren_chunk ) ;
-    public final expression_value_return expression_value() throws RecognitionException {
-        expression_value_return retval = new expression_value_return();
+    // $ANTLR start "expression_value"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1289:1: expression_value : ( accessor_path | literal_constraint | paren_chunk ) ;
+    public final DRLParser.expression_value_return expression_value() throws RecognitionException {
+        DRLParser.expression_value_return retval = new DRLParser.expression_value_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        accessor_path_return accessor_path276 = null;
+        DRLParser.accessor_path_return accessor_path269 = null;
 
-        literal_constraint_return literal_constraint277 = null;
+        DRLParser.literal_constraint_return literal_constraint270 = null;
 
-        paren_chunk_return paren_chunk278 = null;
+        DRLParser.paren_chunk_return paren_chunk271 = null;
 
 
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1317:2: ( ( accessor_path | literal_constraint | paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:1317:4: ( accessor_path | literal_constraint | paren_chunk )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1290:2: ( ( accessor_path | literal_constraint | paren_chunk ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1290:4: ( accessor_path | literal_constraint | paren_chunk )
             {
             root_0 = (Object)adaptor.nil();
 
-            // src/main/resources/org/drools/lang/DRL.g:1317:4: ( accessor_path | literal_constraint | paren_chunk )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1290:4: ( accessor_path | literal_constraint | paren_chunk )
             int alt93=3;
             switch ( input.LA(1) ) {
             case ID:
@@ -12426,51 +11748,54 @@
                 }
                 break;
             default:
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1317:4: ( accessor_path | literal_constraint | paren_chunk )", 93, 0, input);
+                    new NoViableAltException("", 93, 0, input);
 
                 throw nvae;
             }
 
             switch (alt93) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1317:5: accessor_path
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1290:5: accessor_path
                     {
-                    pushFollow(FOLLOW_accessor_path_in_expression_value4512);
-                    accessor_path276=accessor_path();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, accessor_path276.getTree());
+                    pushFollow(FOLLOW_accessor_path_in_expression_value4432);
+                    accessor_path269=accessor_path();
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, accessor_path269.getTree());
+
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1318:4: literal_constraint
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1291:4: literal_constraint
                     {
-                    pushFollow(FOLLOW_literal_constraint_in_expression_value4517);
-                    literal_constraint277=literal_constraint();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, literal_constraint277.getTree());
+                    pushFollow(FOLLOW_literal_constraint_in_expression_value4437);
+                    literal_constraint270=literal_constraint();
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, literal_constraint270.getTree());
+
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1319:4: paren_chunk
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1292:4: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_expression_value4523);
-                    paren_chunk278=paren_chunk();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, paren_chunk278.getTree());
+                    pushFollow(FOLLOW_paren_chunk_in_expression_value4443);
+                    paren_chunk271=paren_chunk();
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk271.getTree());
+
                     }
                     break;
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	if (isEditorInterfaceEnabled && !(input.LA(1) == EOF && input.get(input.index() - 1).getType() != WS))
               			emit(Location.LOCATION_LHS_INSIDE_CONDITION_END);	
             }
@@ -12479,14 +11804,17 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
              
@@ -12501,35 +11829,35 @@
         }
         return retval;
     }
-    // $ANTLR end expression_value
+    // $ANTLR end "expression_value"
 
     public static class literal_constraint_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start literal_constraint
-    // src/main/resources/org/drools/lang/DRL.g:1333:1: literal_constraint : ( STRING | INT | FLOAT | BOOL | NULL );
-    public final literal_constraint_return literal_constraint() throws RecognitionException {
-        literal_constraint_return retval = new literal_constraint_return();
+    // $ANTLR start "literal_constraint"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1306:1: literal_constraint : ( STRING | INT | FLOAT | BOOL | NULL );
+    public final DRLParser.literal_constraint_return literal_constraint() throws RecognitionException {
+        DRLParser.literal_constraint_return retval = new DRLParser.literal_constraint_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token STRING279=null;
-        Token INT280=null;
-        Token FLOAT281=null;
-        Token BOOL282=null;
-        Token NULL283=null;
+        Token STRING272=null;
+        Token INT273=null;
+        Token FLOAT274=null;
+        Token BOOL275=null;
+        Token NULL276=null;
 
-        Object STRING279_tree=null;
-        Object INT280_tree=null;
-        Object FLOAT281_tree=null;
-        Object BOOL282_tree=null;
-        Object NULL283_tree=null;
+        Object STRING272_tree=null;
+        Object INT273_tree=null;
+        Object FLOAT274_tree=null;
+        Object BOOL275_tree=null;
+        Object NULL276_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1334:2: ( STRING | INT | FLOAT | BOOL | NULL )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1307:2: ( STRING | INT | FLOAT | BOOL | NULL )
             int alt94=5;
             switch ( input.LA(1) ) {
             case STRING:
@@ -12558,95 +11886,90 @@
                 }
                 break;
             default:
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1333:1: literal_constraint : ( STRING | INT | FLOAT | BOOL | NULL );", 94, 0, input);
+                    new NoViableAltException("", 94, 0, input);
 
                 throw nvae;
             }
 
             switch (alt94) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1334:4: STRING
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1307:4: STRING
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    STRING279=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_literal_constraint4542); if (failed) return retval;
-                    if ( backtracking==0 ) {
-                    STRING279_tree = (Object)adaptor.create(STRING279);
-                    adaptor.addChild(root_0, STRING279_tree);
+                    STRING272=(Token)match(input,STRING,FOLLOW_STRING_in_literal_constraint4462); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    STRING272_tree = (Object)adaptor.create(STRING272);
+                    adaptor.addChild(root_0, STRING272_tree);
                     }
-                    if ( backtracking==0 ) {
-                      	emit(STRING279, DroolsEditorType.STRING_CONST);	
+                    if ( state.backtracking==0 ) {
+                      	emit(STRING272, DroolsEditorType.STRING_CONST);	
                     }
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1335:4: INT
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1308:4: INT
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    INT280=(Token)input.LT(1);
-                    match(input,INT,FOLLOW_INT_in_literal_constraint4549); if (failed) return retval;
-                    if ( backtracking==0 ) {
-                    INT280_tree = (Object)adaptor.create(INT280);
-                    adaptor.addChild(root_0, INT280_tree);
+                    INT273=(Token)match(input,INT,FOLLOW_INT_in_literal_constraint4469); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    INT273_tree = (Object)adaptor.create(INT273);
+                    adaptor.addChild(root_0, INT273_tree);
                     }
-                    if ( backtracking==0 ) {
-                      	emit(INT280, DroolsEditorType.NUMERIC_CONST);	
+                    if ( state.backtracking==0 ) {
+                      	emit(INT273, DroolsEditorType.NUMERIC_CONST);	
                     }
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1336:4: FLOAT
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1309:4: FLOAT
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    FLOAT281=(Token)input.LT(1);
-                    match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint4556); if (failed) return retval;
-                    if ( backtracking==0 ) {
-                    FLOAT281_tree = (Object)adaptor.create(FLOAT281);
-                    adaptor.addChild(root_0, FLOAT281_tree);
+                    FLOAT274=(Token)match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint4476); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    FLOAT274_tree = (Object)adaptor.create(FLOAT274);
+                    adaptor.addChild(root_0, FLOAT274_tree);
                     }
-                    if ( backtracking==0 ) {
-                      	emit(FLOAT281, DroolsEditorType.NUMERIC_CONST);	
+                    if ( state.backtracking==0 ) {
+                      	emit(FLOAT274, DroolsEditorType.NUMERIC_CONST);	
                     }
 
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DRL.g:1337:4: BOOL
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1310:4: BOOL
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    BOOL282=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_literal_constraint4563); if (failed) return retval;
-                    if ( backtracking==0 ) {
-                    BOOL282_tree = (Object)adaptor.create(BOOL282);
-                    adaptor.addChild(root_0, BOOL282_tree);
+                    BOOL275=(Token)match(input,BOOL,FOLLOW_BOOL_in_literal_constraint4483); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    BOOL275_tree = (Object)adaptor.create(BOOL275);
+                    adaptor.addChild(root_0, BOOL275_tree);
                     }
-                    if ( backtracking==0 ) {
-                      	emit(BOOL282, DroolsEditorType.BOOLEAN_CONST);	
+                    if ( state.backtracking==0 ) {
+                      	emit(BOOL275, DroolsEditorType.BOOLEAN_CONST);	
                     }
 
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/lang/DRL.g:1338:4: NULL
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1311:4: NULL
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    NULL283=(Token)input.LT(1);
-                    match(input,NULL,FOLLOW_NULL_in_literal_constraint4570); if (failed) return retval;
-                    if ( backtracking==0 ) {
-                    NULL283_tree = (Object)adaptor.create(NULL283);
-                    adaptor.addChild(root_0, NULL283_tree);
+                    NULL276=(Token)match(input,NULL,FOLLOW_NULL_in_literal_constraint4490); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    NULL276_tree = (Object)adaptor.create(NULL276);
+                    adaptor.addChild(root_0, NULL276_tree);
                     }
-                    if ( backtracking==0 ) {
-                      	emit(NULL283, DroolsEditorType.NULL_CONST);	
+                    if ( state.backtracking==0 ) {
+                      	emit(NULL276, DroolsEditorType.NULL_CONST);	
                     }
 
                     }
@@ -12655,37 +11978,40 @@
             }
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end literal_constraint
+    // $ANTLR end "literal_constraint"
 
     public static class pattern_type_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start pattern_type
-    // src/main/resources/org/drools/lang/DRL.g:1341:1: pattern_type : id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) ;
-    public final pattern_type_return pattern_type() throws RecognitionException {
-        pattern_type_return retval = new pattern_type_return();
+    // $ANTLR start "pattern_type"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1314:1: pattern_type : id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) ;
+    public final DRLParser.pattern_type_return pattern_type() throws RecognitionException {
+        DRLParser.pattern_type_return retval = new DRLParser.pattern_type_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token id=null;
         List list_id=null;
-        dimension_definition_return dimension_definition284 = null;
+        DRLParser.dimension_definition_return dimension_definition277 = null;
 
 
         Object id_tree=null;
@@ -12693,17 +12019,16 @@
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
         RewriteRuleSubtreeStream stream_dimension_definition=new RewriteRuleSubtreeStream(adaptor,"rule dimension_definition");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1342:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) )
-            // src/main/resources/org/drools/lang/DRL.g:1342:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1315:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1315:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
             {
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_pattern_type4585); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_pattern_type4505); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
             if (list_id==null) list_id=new ArrayList();
             list_id.add(id);
 
-            // src/main/resources/org/drools/lang/DRL.g:1342:11: (id+= DOT id+= ID )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1315:11: (id+= DOT id+= ID )*
             loop95:
             do {
                 int alt95=2;
@@ -12716,18 +12041,16 @@
 
                 switch (alt95) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1342:13: id+= DOT id+= ID
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1315:13: id+= DOT id+= ID
             	    {
-            	    id=(Token)input.LT(1);
-            	    match(input,DOT,FOLLOW_DOT_in_pattern_type4591); if (failed) return retval;
-            	    if ( backtracking==0 ) stream_DOT.add(id);
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_pattern_type4511); if (state.failed) return retval; 
+            	    if ( state.backtracking==0 ) stream_DOT.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
             	    list_id.add(id);
 
-            	    id=(Token)input.LT(1);
-            	    match(input,ID,FOLLOW_ID_in_pattern_type4595); if (failed) return retval;
-            	    if ( backtracking==0 ) stream_ID.add(id);
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_pattern_type4515); if (state.failed) return retval; 
+            	    if ( state.backtracking==0 ) stream_ID.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
             	    list_id.add(id);
@@ -12741,11 +12064,11 @@
                 }
             } while (true);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(list_id, DroolsEditorType.IDENTIFIER);
               		setParaphrasesValue(DroolsParaphraseTypes.PATTERN, buildStringFromTokens(list_id));	
             }
-            // src/main/resources/org/drools/lang/DRL.g:1345:6: ( dimension_definition )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1318:6: ( dimension_definition )*
             loop96:
             do {
                 int alt96=2;
@@ -12758,14 +12081,15 @@
 
                 switch (alt96) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1345:6: dimension_definition
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1318:6: dimension_definition
             	    {
-            	    pushFollow(FOLLOW_dimension_definition_in_pattern_type4610);
-            	    dimension_definition284=dimension_definition();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_dimension_definition.add(dimension_definition284.getTree());
+            	    pushFollow(FOLLOW_dimension_definition_in_pattern_type4530);
+            	    dimension_definition277=dimension_definition();
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_dimension_definition.add(dimension_definition277.getTree());
+
             	    }
             	    break;
 
@@ -12775,35 +12099,36 @@
             } while (true);
 
 
+
             // AST REWRITE
-            // elements: ID, dimension_definition
+            // elements: dimension_definition, ID
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1346:3: -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
+            // 1319:3: -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1346:6: ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1319:6: ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_PATTERN_TYPE, "VT_PATTERN_TYPE"), root_1);
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PATTERN_TYPE, "VT_PATTERN_TYPE"), root_1);
 
                 if ( !(stream_ID.hasNext()) ) {
                     throw new RewriteEarlyExitException();
                 }
                 while ( stream_ID.hasNext() ) {
-                    adaptor.addChild(root_1, stream_ID.next());
+                    adaptor.addChild(root_1, stream_ID.nextNode());
 
                 }
                 stream_ID.reset();
-                // src/main/resources/org/drools/lang/DRL.g:1346:28: ( dimension_definition )*
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1319:28: ( dimension_definition )*
                 while ( stream_dimension_definition.hasNext() ) {
-                    adaptor.addChild(root_1, stream_dimension_definition.next());
+                    adaptor.addChild(root_1, stream_dimension_definition.nextTree());
 
                 }
                 stream_dimension_definition.reset();
@@ -12813,43 +12138,45 @@
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end pattern_type
+    // $ANTLR end "pattern_type"
 
     public static class data_type_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start data_type
-    // src/main/resources/org/drools/lang/DRL.g:1349:1: data_type : id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) ;
-    public final data_type_return data_type() throws RecognitionException {
-        data_type_return retval = new data_type_return();
+    // $ANTLR start "data_type"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1322:1: data_type : id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) ;
+    public final DRLParser.data_type_return data_type() throws RecognitionException {
+        DRLParser.data_type_return retval = new DRLParser.data_type_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token id=null;
         List list_id=null;
-        dimension_definition_return dimension_definition285 = null;
+        DRLParser.dimension_definition_return dimension_definition278 = null;
 
 
         Object id_tree=null;
@@ -12857,17 +12184,16 @@
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
         RewriteRuleSubtreeStream stream_dimension_definition=new RewriteRuleSubtreeStream(adaptor,"rule dimension_definition");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1350:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) )
-            // src/main/resources/org/drools/lang/DRL.g:1350:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1323:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1323:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
             {
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_data_type4638); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_data_type4558); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
             if (list_id==null) list_id=new ArrayList();
             list_id.add(id);
 
-            // src/main/resources/org/drools/lang/DRL.g:1350:11: (id+= DOT id+= ID )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1323:11: (id+= DOT id+= ID )*
             loop97:
             do {
                 int alt97=2;
@@ -12880,18 +12206,16 @@
 
                 switch (alt97) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1350:13: id+= DOT id+= ID
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1323:13: id+= DOT id+= ID
             	    {
-            	    id=(Token)input.LT(1);
-            	    match(input,DOT,FOLLOW_DOT_in_data_type4644); if (failed) return retval;
-            	    if ( backtracking==0 ) stream_DOT.add(id);
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_data_type4564); if (state.failed) return retval; 
+            	    if ( state.backtracking==0 ) stream_DOT.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
             	    list_id.add(id);
 
-            	    id=(Token)input.LT(1);
-            	    match(input,ID,FOLLOW_ID_in_data_type4648); if (failed) return retval;
-            	    if ( backtracking==0 ) stream_ID.add(id);
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_data_type4568); if (state.failed) return retval; 
+            	    if ( state.backtracking==0 ) stream_ID.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
             	    list_id.add(id);
@@ -12905,7 +12229,7 @@
                 }
             } while (true);
 
-            // src/main/resources/org/drools/lang/DRL.g:1350:31: ( dimension_definition )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1323:31: ( dimension_definition )*
             loop98:
             do {
                 int alt98=2;
@@ -12918,14 +12242,15 @@
 
                 switch (alt98) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1350:31: dimension_definition
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1323:31: dimension_definition
             	    {
-            	    pushFollow(FOLLOW_dimension_definition_in_data_type4653);
-            	    dimension_definition285=dimension_definition();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_dimension_definition.add(dimension_definition285.getTree());
+            	    pushFollow(FOLLOW_dimension_definition_in_data_type4573);
+            	    dimension_definition278=dimension_definition();
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_dimension_definition.add(dimension_definition278.getTree());
+
             	    }
             	    break;
 
@@ -12934,39 +12259,40 @@
                 }
             } while (true);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(list_id, DroolsEditorType.IDENTIFIER);	
             }
 
+
             // AST REWRITE
             // elements: ID, dimension_definition
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1352:3: -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
+            // 1325:3: -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1352:6: ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1325:6: ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_DATA_TYPE, "VT_DATA_TYPE"), root_1);
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_DATA_TYPE, "VT_DATA_TYPE"), root_1);
 
                 if ( !(stream_ID.hasNext()) ) {
                     throw new RewriteEarlyExitException();
                 }
                 while ( stream_ID.hasNext() ) {
-                    adaptor.addChild(root_1, stream_ID.next());
+                    adaptor.addChild(root_1, stream_ID.nextNode());
 
                 }
                 stream_ID.reset();
-                // src/main/resources/org/drools/lang/DRL.g:1352:25: ( dimension_definition )*
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1325:25: ( dimension_definition )*
                 while ( stream_dimension_definition.hasNext() ) {
-                    adaptor.addChild(root_1, stream_dimension_definition.next());
+                    adaptor.addChild(root_1, stream_dimension_definition.nextTree());
 
                 }
                 stream_dimension_definition.reset();
@@ -12976,122 +12302,126 @@
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end data_type
+    // $ANTLR end "data_type"
 
     public static class dimension_definition_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start dimension_definition
-    // src/main/resources/org/drools/lang/DRL.g:1355:1: dimension_definition : LEFT_SQUARE RIGHT_SQUARE ;
-    public final dimension_definition_return dimension_definition() throws RecognitionException {
-        dimension_definition_return retval = new dimension_definition_return();
+    // $ANTLR start "dimension_definition"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1328:1: dimension_definition : LEFT_SQUARE RIGHT_SQUARE ;
+    public final DRLParser.dimension_definition_return dimension_definition() throws RecognitionException {
+        DRLParser.dimension_definition_return retval = new DRLParser.dimension_definition_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_SQUARE286=null;
-        Token RIGHT_SQUARE287=null;
+        Token LEFT_SQUARE279=null;
+        Token RIGHT_SQUARE280=null;
 
-        Object LEFT_SQUARE286_tree=null;
-        Object RIGHT_SQUARE287_tree=null;
+        Object LEFT_SQUARE279_tree=null;
+        Object RIGHT_SQUARE280_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1356:2: ( LEFT_SQUARE RIGHT_SQUARE )
-            // src/main/resources/org/drools/lang/DRL.g:1356:4: LEFT_SQUARE RIGHT_SQUARE
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1329:2: ( LEFT_SQUARE RIGHT_SQUARE )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1329:4: LEFT_SQUARE RIGHT_SQUARE
             {
             root_0 = (Object)adaptor.nil();
 
-            LEFT_SQUARE286=(Token)input.LT(1);
-            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dimension_definition4682); if (failed) return retval;
-            if ( backtracking==0 ) {
-            LEFT_SQUARE286_tree = (Object)adaptor.create(LEFT_SQUARE286);
-            adaptor.addChild(root_0, LEFT_SQUARE286_tree);
+            LEFT_SQUARE279=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dimension_definition4602); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            LEFT_SQUARE279_tree = (Object)adaptor.create(LEFT_SQUARE279);
+            adaptor.addChild(root_0, LEFT_SQUARE279_tree);
             }
-            if ( backtracking==0 ) {
-              	emit(LEFT_SQUARE286, DroolsEditorType.SYMBOL);	
+            if ( state.backtracking==0 ) {
+              	emit(LEFT_SQUARE279, DroolsEditorType.SYMBOL);	
             }
-            RIGHT_SQUARE287=(Token)input.LT(1);
-            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dimension_definition4689); if (failed) return retval;
-            if ( backtracking==0 ) {
-            RIGHT_SQUARE287_tree = (Object)adaptor.create(RIGHT_SQUARE287);
-            adaptor.addChild(root_0, RIGHT_SQUARE287_tree);
+            RIGHT_SQUARE280=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dimension_definition4609); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            RIGHT_SQUARE280_tree = (Object)adaptor.create(RIGHT_SQUARE280);
+            adaptor.addChild(root_0, RIGHT_SQUARE280_tree);
             }
-            if ( backtracking==0 ) {
-              	emit(RIGHT_SQUARE287, DroolsEditorType.SYMBOL);	
+            if ( state.backtracking==0 ) {
+              	emit(RIGHT_SQUARE280, DroolsEditorType.SYMBOL);	
             }
 
             }
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end dimension_definition
+    // $ANTLR end "dimension_definition"
 
     public static class accessor_path_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start accessor_path
-    // src/main/resources/org/drools/lang/DRL.g:1360:1: accessor_path : accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) ;
-    public final accessor_path_return accessor_path() throws RecognitionException {
-        accessor_path_return retval = new accessor_path_return();
+    // $ANTLR start "accessor_path"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1333:1: accessor_path : accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) ;
+    public final DRLParser.accessor_path_return accessor_path() throws RecognitionException {
+        DRLParser.accessor_path_return retval = new DRLParser.accessor_path_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token DOT289=null;
-        accessor_element_return accessor_element288 = null;
+        Token DOT282=null;
+        DRLParser.accessor_element_return accessor_element281 = null;
 
-        accessor_element_return accessor_element290 = null;
+        DRLParser.accessor_element_return accessor_element283 = null;
 
 
-        Object DOT289_tree=null;
+        Object DOT282_tree=null;
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
         RewriteRuleSubtreeStream stream_accessor_element=new RewriteRuleSubtreeStream(adaptor,"rule accessor_element");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1361:2: ( accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) )
-            // src/main/resources/org/drools/lang/DRL.g:1361:4: accessor_element ( DOT accessor_element )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1334:2: ( accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1334:4: accessor_element ( DOT accessor_element )*
             {
-            pushFollow(FOLLOW_accessor_element_in_accessor_path4703);
-            accessor_element288=accessor_element();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_accessor_element.add(accessor_element288.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1361:21: ( DOT accessor_element )*
+            pushFollow(FOLLOW_accessor_element_in_accessor_path4623);
+            accessor_element281=accessor_element();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_accessor_element.add(accessor_element281.getTree());
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1334:21: ( DOT accessor_element )*
             loop99:
             do {
                 int alt99=2;
@@ -13104,21 +12434,21 @@
 
                 switch (alt99) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1361:23: DOT accessor_element
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1334:23: DOT accessor_element
             	    {
-            	    DOT289=(Token)input.LT(1);
-            	    match(input,DOT,FOLLOW_DOT_in_accessor_path4707); if (failed) return retval;
-            	    if ( backtracking==0 ) stream_DOT.add(DOT289);
+            	    DOT282=(Token)match(input,DOT,FOLLOW_DOT_in_accessor_path4627); if (state.failed) return retval; 
+            	    if ( state.backtracking==0 ) stream_DOT.add(DOT282);
 
-            	    if ( backtracking==0 ) {
-            	      	emit(DOT289, DroolsEditorType.IDENTIFIER);	
+            	    if ( state.backtracking==0 ) {
+            	      	emit(DOT282, DroolsEditorType.IDENTIFIER);	
             	    }
-            	    pushFollow(FOLLOW_accessor_element_in_accessor_path4711);
-            	    accessor_element290=accessor_element();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_accessor_element.add(accessor_element290.getTree());
+            	    pushFollow(FOLLOW_accessor_element_in_accessor_path4631);
+            	    accessor_element283=accessor_element();
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_accessor_element.add(accessor_element283.getTree());
+
             	    }
             	    break;
 
@@ -13128,29 +12458,30 @@
             } while (true);
 
 
+
             // AST REWRITE
             // elements: accessor_element
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1362:2: -> ^( VT_ACCESSOR_PATH ( accessor_element )+ )
+            // 1335:2: -> ^( VT_ACCESSOR_PATH ( accessor_element )+ )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1362:5: ^( VT_ACCESSOR_PATH ( accessor_element )+ )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1335:5: ^( VT_ACCESSOR_PATH ( accessor_element )+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_ACCESSOR_PATH, "VT_ACCESSOR_PATH"), root_1);
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_ACCESSOR_PATH, "VT_ACCESSOR_PATH"), root_1);
 
                 if ( !(stream_accessor_element.hasNext()) ) {
                     throw new RewriteEarlyExitException();
                 }
                 while ( stream_accessor_element.hasNext() ) {
-                    adaptor.addChild(root_1, stream_accessor_element.next());
+                    adaptor.addChild(root_1, stream_accessor_element.nextTree());
 
                 }
                 stream_accessor_element.reset();
@@ -13160,59 +12491,60 @@
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end accessor_path
+    // $ANTLR end "accessor_path"
 
     public static class accessor_element_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start accessor_element
-    // src/main/resources/org/drools/lang/DRL.g:1365:1: accessor_element : ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) ;
-    public final accessor_element_return accessor_element() throws RecognitionException {
-        accessor_element_return retval = new accessor_element_return();
+    // $ANTLR start "accessor_element"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1338:1: accessor_element : ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) ;
+    public final DRLParser.accessor_element_return accessor_element() throws RecognitionException {
+        DRLParser.accessor_element_return retval = new DRLParser.accessor_element_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token ID291=null;
-        square_chunk_return square_chunk292 = null;
+        Token ID284=null;
+        DRLParser.square_chunk_return square_chunk285 = null;
 
 
-        Object ID291_tree=null;
+        Object ID284_tree=null;
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleSubtreeStream stream_square_chunk=new RewriteRuleSubtreeStream(adaptor,"rule square_chunk");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1366:2: ( ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) )
-            // src/main/resources/org/drools/lang/DRL.g:1366:4: ID ( square_chunk )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1339:2: ( ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1339:4: ID ( square_chunk )*
             {
-            ID291=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_accessor_element4735); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID291);
+            ID284=(Token)match(input,ID,FOLLOW_ID_in_accessor_element4655); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID284);
 
-            if ( backtracking==0 ) {
-              	emit(ID291, DroolsEditorType.IDENTIFIER);	
+            if ( state.backtracking==0 ) {
+              	emit(ID284, DroolsEditorType.IDENTIFIER);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:1367:3: ( square_chunk )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1340:3: ( square_chunk )*
             loop100:
             do {
                 int alt100=2;
@@ -13225,14 +12557,15 @@
 
                 switch (alt100) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1367:3: square_chunk
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1340:3: square_chunk
             	    {
-            	    pushFollow(FOLLOW_square_chunk_in_accessor_element4741);
-            	    square_chunk292=square_chunk();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_square_chunk.add(square_chunk292.getTree());
+            	    pushFollow(FOLLOW_square_chunk_in_accessor_element4661);
+            	    square_chunk285=square_chunk();
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_square_chunk.add(square_chunk285.getTree());
+
             	    }
             	    break;
 
@@ -13242,28 +12575,29 @@
             } while (true);
 
 
+
             // AST REWRITE
             // elements: square_chunk, ID
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1368:2: -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
+            // 1341:2: -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1368:5: ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1341:5: ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_ACCESSOR_ELEMENT, "VT_ACCESSOR_ELEMENT"), root_1);
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_ACCESSOR_ELEMENT, "VT_ACCESSOR_ELEMENT"), root_1);
 
-                adaptor.addChild(root_1, stream_ID.next());
-                // src/main/resources/org/drools/lang/DRL.g:1368:30: ( square_chunk )*
+                adaptor.addChild(root_1, stream_ID.nextNode());
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1341:30: ( square_chunk )*
                 while ( stream_square_chunk.hasNext() ) {
-                    adaptor.addChild(root_1, stream_square_chunk.next());
+                    adaptor.addChild(root_1, stream_square_chunk.nextTree());
 
                 }
                 stream_square_chunk.reset();
@@ -13273,140 +12607,145 @@
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end accessor_element
+    // $ANTLR end "accessor_element"
 
     public static class rhs_chunk_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start rhs_chunk
-    // src/main/resources/org/drools/lang/DRL.g:1371:1: rhs_chunk : rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] ;
-    public final rhs_chunk_return rhs_chunk() throws RecognitionException {
-        rhs_chunk_return retval = new rhs_chunk_return();
+    // $ANTLR start "rhs_chunk"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1344:1: rhs_chunk : rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] ;
+    public final DRLParser.rhs_chunk_return rhs_chunk() throws RecognitionException {
+        DRLParser.rhs_chunk_return retval = new DRLParser.rhs_chunk_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        rhs_chunk_data_return rc = null;
+        DRLParser.rhs_chunk_data_return rc = null;
 
 
         RewriteRuleSubtreeStream stream_rhs_chunk_data=new RewriteRuleSubtreeStream(adaptor,"rule rhs_chunk_data");
-        
+
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1374:3: (rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] )
-            // src/main/resources/org/drools/lang/DRL.g:1374:5: rc= rhs_chunk_data
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1347:3: (rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1347:5: rc= rhs_chunk_data
             {
-            pushFollow(FOLLOW_rhs_chunk_data_in_rhs_chunk4770);
+            pushFollow(FOLLOW_rhs_chunk_data_in_rhs_chunk4690);
             rc=rhs_chunk_data();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_rhs_chunk_data.add(rc.getTree());
-            if ( backtracking==0 ) {
-              text = input.toString(rc.start,rc.stop);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_rhs_chunk_data.add(rc.getTree());
+            if ( state.backtracking==0 ) {
+              text = (rc!=null?input.toString(rc.start,rc.stop):null);
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1375:2: -> VT_RHS_CHUNK[$rc.start,text]
+            // 1348:2: -> VT_RHS_CHUNK[$rc.start,text]
             {
-                adaptor.addChild(root_0, adaptor.create(VT_RHS_CHUNK, ((Token)rc.start), text));
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_RHS_CHUNK, (rc!=null?((Token)rc.start):null), text));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end rhs_chunk
+    // $ANTLR end "rhs_chunk"
 
     public static class rhs_chunk_data_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start rhs_chunk_data
-    // src/main/resources/org/drools/lang/DRL.g:1378:1: rhs_chunk_data : THEN (any=~ END )* end1= END ( SEMICOLON )? ;
-    public final rhs_chunk_data_return rhs_chunk_data() throws RecognitionException {
-        rhs_chunk_data_return retval = new rhs_chunk_data_return();
+    // $ANTLR start "rhs_chunk_data"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1351:1: rhs_chunk_data : THEN (any=~ END )* end1= END ( SEMICOLON )? ;
+    public final DRLParser.rhs_chunk_data_return rhs_chunk_data() throws RecognitionException {
+        DRLParser.rhs_chunk_data_return retval = new DRLParser.rhs_chunk_data_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token any=null;
         Token end1=null;
-        Token THEN293=null;
-        Token SEMICOLON294=null;
+        Token THEN286=null;
+        Token SEMICOLON287=null;
 
         Object any_tree=null;
         Object end1_tree=null;
-        Object THEN293_tree=null;
-        Object SEMICOLON294_tree=null;
+        Object THEN286_tree=null;
+        Object SEMICOLON287_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1379:2: ( THEN (any=~ END )* end1= END ( SEMICOLON )? )
-            // src/main/resources/org/drools/lang/DRL.g:1379:4: THEN (any=~ END )* end1= END ( SEMICOLON )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1352:2: ( THEN (any=~ END )* end1= END ( SEMICOLON )? )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1352:4: THEN (any=~ END )* end1= END ( SEMICOLON )?
             {
             root_0 = (Object)adaptor.nil();
 
-            THEN293=(Token)input.LT(1);
-            match(input,THEN,FOLLOW_THEN_in_rhs_chunk_data4789); if (failed) return retval;
-            if ( backtracking==0 ) {
-            THEN293_tree = (Object)adaptor.create(THEN293);
-            adaptor.addChild(root_0, THEN293_tree);
+            THEN286=(Token)match(input,THEN,FOLLOW_THEN_in_rhs_chunk_data4709); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            THEN286_tree = (Object)adaptor.create(THEN286);
+            adaptor.addChild(root_0, THEN286_tree);
             }
-            if ( backtracking==0 ) {
-              	if (THEN293.getText().equalsIgnoreCase("then")){
-              			emit(THEN293, DroolsEditorType.KEYWORD);
+            if ( state.backtracking==0 ) {
+              	if ((THEN286!=null?THEN286.getText():null).equalsIgnoreCase("then")){
+              			emit(THEN286, DroolsEditorType.KEYWORD);
               			emit(Location.LOCATION_RHS);
               		}	
             }
-            // src/main/resources/org/drools/lang/DRL.g:1384:4: (any=~ END )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1357:4: (any=~ END )*
             loop101:
             do {
                 int alt101=2;
@@ -13419,22 +12758,21 @@
 
                 switch (alt101) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1384:6: any=~ END
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1357:6: any=~ END
             	    {
             	    any=(Token)input.LT(1);
             	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=DOT_STAR)||(input.LA(1)>=STRING && input.LA(1)<=MULTI_LINE_COMMENT) ) {
             	        input.consume();
-            	        if ( backtracking==0 ) adaptor.addChild(root_0, adaptor.create(any));
-            	        errorRecovery=false;failed=false;
+            	        if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(any));
+            	        state.errorRecovery=false;state.failed=false;
             	    }
             	    else {
-            	        if (backtracking>0) {failed=true; return retval;}
-            	        MismatchedSetException mse =
-            	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_rhs_chunk_data4802);    throw mse;
+            	        if (state.backtracking>0) {state.failed=true; return retval;}
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        throw mse;
             	    }
 
-            	    if ( backtracking==0 ) {
+            	    if ( state.backtracking==0 ) {
             	       emit(any, DroolsEditorType.CODE_CHUNK); 
             	    }
 
@@ -13446,16 +12784,15 @@
                 }
             } while (true);
 
-            end1=(Token)input.LT(1);
-            match(input,END,FOLLOW_END_in_rhs_chunk_data4815); if (failed) return retval;
-            if ( backtracking==0 ) {
+            end1=(Token)match(input,END,FOLLOW_END_in_rhs_chunk_data4735); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             end1_tree = (Object)adaptor.create(end1);
             adaptor.addChild(root_0, end1_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(end1, DroolsEditorType.KEYWORD);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:1386:3: ( SEMICOLON )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1359:3: ( SEMICOLON )?
             int alt102=2;
             int LA102_0 = input.LA(1);
 
@@ -13464,13 +12801,12 @@
             }
             switch (alt102) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1386:3: SEMICOLON
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1359:3: SEMICOLON
                     {
-                    SEMICOLON294=(Token)input.LT(1);
-                    match(input,SEMICOLON,FOLLOW_SEMICOLON_in_rhs_chunk_data4821); if (failed) return retval;
-                    if ( backtracking==0 ) {
-                    SEMICOLON294_tree = (Object)adaptor.create(SEMICOLON294);
-                    adaptor.addChild(root_0, SEMICOLON294_tree);
+                    SEMICOLON287=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_rhs_chunk_data4741); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    SEMICOLON287_tree = (Object)adaptor.create(SEMICOLON287);
+                    adaptor.addChild(root_0, SEMICOLON287_tree);
                     }
 
                     }
@@ -13478,109 +12814,116 @@
 
             }
 
-            if ( backtracking==0 ) {
-              	emit(SEMICOLON294, DroolsEditorType.KEYWORD);	
+            if ( state.backtracking==0 ) {
+              	emit(SEMICOLON287, DroolsEditorType.KEYWORD);	
             }
 
             }
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end rhs_chunk_data
+    // $ANTLR end "rhs_chunk_data"
 
     public static class curly_chunk_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start curly_chunk
-    // src/main/resources/org/drools/lang/DRL.g:1389:1: curly_chunk : cc= curly_chunk_data[false] -> VT_CURLY_CHUNK[$cc.start,text] ;
-    public final curly_chunk_return curly_chunk() throws RecognitionException {
-        curly_chunk_return retval = new curly_chunk_return();
+    // $ANTLR start "curly_chunk"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1362:1: curly_chunk : cc= curly_chunk_data[false] -> VT_CURLY_CHUNK[$cc.start,text] ;
+    public final DRLParser.curly_chunk_return curly_chunk() throws RecognitionException {
+        DRLParser.curly_chunk_return retval = new DRLParser.curly_chunk_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        curly_chunk_data_return cc = null;
+        DRLParser.curly_chunk_data_return cc = null;
 
 
         RewriteRuleSubtreeStream stream_curly_chunk_data=new RewriteRuleSubtreeStream(adaptor,"rule curly_chunk_data");
-        
+
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1392:3: (cc= curly_chunk_data[false] -> VT_CURLY_CHUNK[$cc.start,text] )
-            // src/main/resources/org/drools/lang/DRL.g:1392:5: cc= curly_chunk_data[false]
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1365:3: (cc= curly_chunk_data[false] -> VT_CURLY_CHUNK[$cc.start,text] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1365:5: cc= curly_chunk_data[false]
             {
-            pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk4840);
+            pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk4760);
             cc=curly_chunk_data(false);
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_curly_chunk_data.add(cc.getTree());
-            if ( backtracking==0 ) {
-              text = input.toString(cc.start,cc.stop);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_curly_chunk_data.add(cc.getTree());
+            if ( state.backtracking==0 ) {
+              text = (cc!=null?input.toString(cc.start,cc.stop):null);
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1393:2: -> VT_CURLY_CHUNK[$cc.start,text]
+            // 1366:2: -> VT_CURLY_CHUNK[$cc.start,text]
             {
-                adaptor.addChild(root_0, adaptor.create(VT_CURLY_CHUNK, ((Token)cc.start), text));
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_CURLY_CHUNK, (cc!=null?((Token)cc.start):null), text));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end curly_chunk
+    // $ANTLR end "curly_chunk"
 
     public static class curly_chunk_data_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start curly_chunk_data
-    // src/main/resources/org/drools/lang/DRL.g:1396:1: curly_chunk_data[boolean isRecursive] : lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY ;
-    public final curly_chunk_data_return curly_chunk_data(boolean isRecursive) throws RecognitionException {
-        curly_chunk_data_return retval = new curly_chunk_data_return();
+    // $ANTLR start "curly_chunk_data"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1369:1: curly_chunk_data[boolean isRecursive] : lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY ;
+    public final DRLParser.curly_chunk_data_return curly_chunk_data(boolean isRecursive) throws RecognitionException {
+        DRLParser.curly_chunk_data_return retval = new DRLParser.curly_chunk_data_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -13588,7 +12931,7 @@
         Token lc1=null;
         Token any=null;
         Token rc1=null;
-        curly_chunk_data_return curly_chunk_data295 = null;
+        DRLParser.curly_chunk_data_return curly_chunk_data288 = null;
 
 
         Object lc1_tree=null;
@@ -13596,18 +12939,17 @@
         Object rc1_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1397:2: (lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY )
-            // src/main/resources/org/drools/lang/DRL.g:1397:4: lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1370:2: (lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1370:4: lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY
             {
             root_0 = (Object)adaptor.nil();
 
-            lc1=(Token)input.LT(1);
-            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_curly_chunk_data4863); if (failed) return retval;
-            if ( backtracking==0 ) {
+            lc1=(Token)match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_curly_chunk_data4783); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             lc1_tree = (Object)adaptor.create(lc1);
             adaptor.addChild(root_0, lc1_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	if (!isRecursive) {
               				emit(lc1, DroolsEditorType.SYMBOL);
               			} else {
@@ -13615,7 +12957,7 @@
               			}	
               		
             }
-            // src/main/resources/org/drools/lang/DRL.g:1404:4: (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1377:4: (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )*
             loop103:
             do {
                 int alt103=3;
@@ -13631,36 +12973,36 @@
 
                 switch (alt103) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1404:5: any=~ ( LEFT_CURLY | RIGHT_CURLY )
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1377:5: any=~ ( LEFT_CURLY | RIGHT_CURLY )
             	    {
             	    any=(Token)input.LT(1);
             	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=THEN)||(input.LA(1)>=MISC && input.LA(1)<=MULTI_LINE_COMMENT) ) {
             	        input.consume();
-            	        if ( backtracking==0 ) adaptor.addChild(root_0, adaptor.create(any));
-            	        errorRecovery=false;failed=false;
+            	        if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(any));
+            	        state.errorRecovery=false;state.failed=false;
             	    }
             	    else {
-            	        if (backtracking>0) {failed=true; return retval;}
-            	        MismatchedSetException mse =
-            	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_curly_chunk_data4875);    throw mse;
+            	        if (state.backtracking>0) {state.failed=true; return retval;}
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        throw mse;
             	    }
 
-            	    if ( backtracking==0 ) {
+            	    if ( state.backtracking==0 ) {
             	       emit(any, DroolsEditorType.CODE_CHUNK); 
             	    }
 
             	    }
             	    break;
             	case 2 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1404:87: curly_chunk_data[true]
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1377:87: curly_chunk_data[true]
             	    {
-            	    pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk_data4891);
-            	    curly_chunk_data295=curly_chunk_data(true);
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, curly_chunk_data295.getTree());
+            	    pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk_data4811);
+            	    curly_chunk_data288=curly_chunk_data(true);
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, curly_chunk_data288.getTree());
+
             	    }
             	    break;
 
@@ -13669,13 +13011,12 @@
                 }
             } while (true);
 
-            rc1=(Token)input.LT(1);
-            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_curly_chunk_data4902); if (failed) return retval;
-            if ( backtracking==0 ) {
+            rc1=(Token)match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_curly_chunk_data4822); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             rc1_tree = (Object)adaptor.create(rc1);
             adaptor.addChild(root_0, rc1_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	if (!isRecursive) {
               				emit(rc1, DroolsEditorType.SYMBOL);
               			} else {
@@ -13688,101 +13029,108 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end curly_chunk_data
+    // $ANTLR end "curly_chunk_data"
 
     public static class paren_chunk_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start paren_chunk
-    // src/main/resources/org/drools/lang/DRL.g:1414:1: paren_chunk : pc= paren_chunk_data[false] -> VT_PAREN_CHUNK[$pc.start,text] ;
-    public final paren_chunk_return paren_chunk() throws RecognitionException {
-        paren_chunk_return retval = new paren_chunk_return();
+    // $ANTLR start "paren_chunk"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1387:1: paren_chunk : pc= paren_chunk_data[false] -> VT_PAREN_CHUNK[$pc.start,text] ;
+    public final DRLParser.paren_chunk_return paren_chunk() throws RecognitionException {
+        DRLParser.paren_chunk_return retval = new DRLParser.paren_chunk_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        paren_chunk_data_return pc = null;
+        DRLParser.paren_chunk_data_return pc = null;
 
 
         RewriteRuleSubtreeStream stream_paren_chunk_data=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk_data");
-        
+
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1417:3: (pc= paren_chunk_data[false] -> VT_PAREN_CHUNK[$pc.start,text] )
-            // src/main/resources/org/drools/lang/DRL.g:1417:5: pc= paren_chunk_data[false]
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1390:3: (pc= paren_chunk_data[false] -> VT_PAREN_CHUNK[$pc.start,text] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1390:5: pc= paren_chunk_data[false]
             {
-            pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk4923);
+            pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk4843);
             pc=paren_chunk_data(false);
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_paren_chunk_data.add(pc.getTree());
-            if ( backtracking==0 ) {
-              text = input.toString(pc.start,pc.stop);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_paren_chunk_data.add(pc.getTree());
+            if ( state.backtracking==0 ) {
+              text = (pc!=null?input.toString(pc.start,pc.stop):null);
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1418:2: -> VT_PAREN_CHUNK[$pc.start,text]
+            // 1391:2: -> VT_PAREN_CHUNK[$pc.start,text]
             {
-                adaptor.addChild(root_0, adaptor.create(VT_PAREN_CHUNK, ((Token)pc.start), text));
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_PAREN_CHUNK, (pc!=null?((Token)pc.start):null), text));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end paren_chunk
+    // $ANTLR end "paren_chunk"
 
     public static class paren_chunk_data_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start paren_chunk_data
-    // src/main/resources/org/drools/lang/DRL.g:1421:1: paren_chunk_data[boolean isRecursive] : lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN ;
-    public final paren_chunk_data_return paren_chunk_data(boolean isRecursive) throws RecognitionException {
-        paren_chunk_data_return retval = new paren_chunk_data_return();
+    // $ANTLR start "paren_chunk_data"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1394:1: paren_chunk_data[boolean isRecursive] : lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN ;
+    public final DRLParser.paren_chunk_data_return paren_chunk_data(boolean isRecursive) throws RecognitionException {
+        DRLParser.paren_chunk_data_return retval = new DRLParser.paren_chunk_data_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -13790,7 +13138,7 @@
         Token lp1=null;
         Token any=null;
         Token rp1=null;
-        paren_chunk_data_return paren_chunk_data296 = null;
+        DRLParser.paren_chunk_data_return paren_chunk_data289 = null;
 
 
         Object lp1_tree=null;
@@ -13798,18 +13146,17 @@
         Object rp1_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1422:2: (lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN )
-            // src/main/resources/org/drools/lang/DRL.g:1422:4: lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1395:2: (lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1395:4: lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN
             {
             root_0 = (Object)adaptor.nil();
 
-            lp1=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_paren_chunk_data4947); if (failed) return retval;
-            if ( backtracking==0 ) {
+            lp1=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_paren_chunk_data4867); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             lp1_tree = (Object)adaptor.create(lp1);
             adaptor.addChild(root_0, lp1_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	if (!isRecursive) {
               				emit(lp1, DroolsEditorType.SYMBOL);
               			} else {
@@ -13817,7 +13164,7 @@
               			}	
               		
             }
-            // src/main/resources/org/drools/lang/DRL.g:1429:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1402:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )*
             loop104:
             do {
                 int alt104=3;
@@ -13833,36 +13180,36 @@
 
                 switch (alt104) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1429:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1402:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
             	    {
             	    any=(Token)input.LT(1);
             	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=STRING)||input.LA(1)==COMMA||(input.LA(1)>=AT && input.LA(1)<=MULTI_LINE_COMMENT) ) {
             	        input.consume();
-            	        if ( backtracking==0 ) adaptor.addChild(root_0, adaptor.create(any));
-            	        errorRecovery=false;failed=false;
+            	        if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(any));
+            	        state.errorRecovery=false;state.failed=false;
             	    }
             	    else {
-            	        if (backtracking>0) {failed=true; return retval;}
-            	        MismatchedSetException mse =
-            	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_paren_chunk_data4959);    throw mse;
+            	        if (state.backtracking>0) {state.failed=true; return retval;}
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        throw mse;
             	    }
 
-            	    if ( backtracking==0 ) {
+            	    if ( state.backtracking==0 ) {
             	       emit(any, DroolsEditorType.CODE_CHUNK); 
             	    }
 
             	    }
             	    break;
             	case 2 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1429:87: paren_chunk_data[true]
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1402:87: paren_chunk_data[true]
             	    {
-            	    pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk_data4975);
-            	    paren_chunk_data296=paren_chunk_data(true);
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, paren_chunk_data296.getTree());
+            	    pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk_data4895);
+            	    paren_chunk_data289=paren_chunk_data(true);
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk_data289.getTree());
+
             	    }
             	    break;
 
@@ -13871,13 +13218,12 @@
                 }
             } while (true);
 
-            rp1=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk_data4986); if (failed) return retval;
-            if ( backtracking==0 ) {
+            rp1=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk_data4906); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             rp1_tree = (Object)adaptor.create(rp1);
             adaptor.addChild(root_0, rp1_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	if (!isRecursive) {
               				emit(rp1, DroolsEditorType.SYMBOL);
               			} else {
@@ -13890,101 +13236,108 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end paren_chunk_data
+    // $ANTLR end "paren_chunk_data"
 
     public static class square_chunk_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start square_chunk
-    // src/main/resources/org/drools/lang/DRL.g:1439:1: square_chunk : sc= square_chunk_data[false] -> VT_SQUARE_CHUNK[$sc.start,text] ;
-    public final square_chunk_return square_chunk() throws RecognitionException {
-        square_chunk_return retval = new square_chunk_return();
+    // $ANTLR start "square_chunk"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1412:1: square_chunk : sc= square_chunk_data[false] -> VT_SQUARE_CHUNK[$sc.start,text] ;
+    public final DRLParser.square_chunk_return square_chunk() throws RecognitionException {
+        DRLParser.square_chunk_return retval = new DRLParser.square_chunk_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        square_chunk_data_return sc = null;
+        DRLParser.square_chunk_data_return sc = null;
 
 
         RewriteRuleSubtreeStream stream_square_chunk_data=new RewriteRuleSubtreeStream(adaptor,"rule square_chunk_data");
-        
+
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1442:3: (sc= square_chunk_data[false] -> VT_SQUARE_CHUNK[$sc.start,text] )
-            // src/main/resources/org/drools/lang/DRL.g:1442:5: sc= square_chunk_data[false]
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1415:3: (sc= square_chunk_data[false] -> VT_SQUARE_CHUNK[$sc.start,text] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1415:5: sc= square_chunk_data[false]
             {
-            pushFollow(FOLLOW_square_chunk_data_in_square_chunk5007);
+            pushFollow(FOLLOW_square_chunk_data_in_square_chunk4927);
             sc=square_chunk_data(false);
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_square_chunk_data.add(sc.getTree());
-            if ( backtracking==0 ) {
-              text = input.toString(sc.start,sc.stop);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_square_chunk_data.add(sc.getTree());
+            if ( state.backtracking==0 ) {
+              text = (sc!=null?input.toString(sc.start,sc.stop):null);
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1443:2: -> VT_SQUARE_CHUNK[$sc.start,text]
+            // 1416:2: -> VT_SQUARE_CHUNK[$sc.start,text]
             {
-                adaptor.addChild(root_0, adaptor.create(VT_SQUARE_CHUNK, ((Token)sc.start), text));
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_SQUARE_CHUNK, (sc!=null?((Token)sc.start):null), text));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end square_chunk
+    // $ANTLR end "square_chunk"
 
     public static class square_chunk_data_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start square_chunk_data
-    // src/main/resources/org/drools/lang/DRL.g:1446:1: square_chunk_data[boolean isRecursive] : ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE ;
-    public final square_chunk_data_return square_chunk_data(boolean isRecursive) throws RecognitionException {
-        square_chunk_data_return retval = new square_chunk_data_return();
+    // $ANTLR start "square_chunk_data"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1419:1: square_chunk_data[boolean isRecursive] : ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE ;
+    public final DRLParser.square_chunk_data_return square_chunk_data(boolean isRecursive) throws RecognitionException {
+        DRLParser.square_chunk_data_return retval = new DRLParser.square_chunk_data_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -13992,7 +13345,7 @@
         Token ls1=null;
         Token any=null;
         Token rs1=null;
-        square_chunk_data_return square_chunk_data297 = null;
+        DRLParser.square_chunk_data_return square_chunk_data290 = null;
 
 
         Object ls1_tree=null;
@@ -14000,18 +13353,17 @@
         Object rs1_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1447:2: (ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE )
-            // src/main/resources/org/drools/lang/DRL.g:1447:4: ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1420:2: (ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1420:4: ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE
             {
             root_0 = (Object)adaptor.nil();
 
-            ls1=(Token)input.LT(1);
-            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_square_chunk_data5030); if (failed) return retval;
-            if ( backtracking==0 ) {
+            ls1=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_square_chunk_data4950); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             ls1_tree = (Object)adaptor.create(ls1);
             adaptor.addChild(root_0, ls1_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	if (!isRecursive) {
               				emit(ls1, DroolsEditorType.SYMBOL);
               			} else {
@@ -14019,7 +13371,7 @@
               			}	
               		
             }
-            // src/main/resources/org/drools/lang/DRL.g:1454:4: (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1427:4: (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )*
             loop105:
             do {
                 int alt105=3;
@@ -14035,36 +13387,36 @@
 
                 switch (alt105) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1454:5: any=~ ( LEFT_SQUARE | RIGHT_SQUARE )
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1427:5: any=~ ( LEFT_SQUARE | RIGHT_SQUARE )
             	    {
             	    any=(Token)input.LT(1);
             	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=NULL)||(input.LA(1)>=THEN && input.LA(1)<=MULTI_LINE_COMMENT) ) {
             	        input.consume();
-            	        if ( backtracking==0 ) adaptor.addChild(root_0, adaptor.create(any));
-            	        errorRecovery=false;failed=false;
+            	        if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(any));
+            	        state.errorRecovery=false;state.failed=false;
             	    }
             	    else {
-            	        if (backtracking>0) {failed=true; return retval;}
-            	        MismatchedSetException mse =
-            	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_square_chunk_data5042);    throw mse;
+            	        if (state.backtracking>0) {state.failed=true; return retval;}
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        throw mse;
             	    }
 
-            	    if ( backtracking==0 ) {
+            	    if ( state.backtracking==0 ) {
             	       emit(any, DroolsEditorType.CODE_CHUNK); 
             	    }
 
             	    }
             	    break;
             	case 2 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1454:88: square_chunk_data[true]
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1427:88: square_chunk_data[true]
             	    {
-            	    pushFollow(FOLLOW_square_chunk_data_in_square_chunk_data5057);
-            	    square_chunk_data297=square_chunk_data(true);
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, square_chunk_data297.getTree());
+            	    pushFollow(FOLLOW_square_chunk_data_in_square_chunk_data4977);
+            	    square_chunk_data290=square_chunk_data(true);
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, square_chunk_data290.getTree());
+
             	    }
             	    break;
 
@@ -14073,13 +13425,12 @@
                 }
             } while (true);
 
-            rs1=(Token)input.LT(1);
-            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk_data5068); if (failed) return retval;
-            if ( backtracking==0 ) {
+            rs1=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk_data4988); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             rs1_tree = (Object)adaptor.create(rs1);
             adaptor.addChild(root_0, rs1_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	if (!isRecursive) {
               				emit(rs1, DroolsEditorType.SYMBOL);
               			} else {
@@ -14092,30 +13443,33 @@
 
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end square_chunk_data
+    // $ANTLR end "square_chunk_data"
 
     public static class lock_on_active_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start lock_on_active_key
-    // src/main/resources/org/drools/lang/DRL.g:1464:1: lock_on_active_key : {...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID -> VK_LOCK_ON_ACTIVE[$start, text] ;
-    public final lock_on_active_key_return lock_on_active_key() throws RecognitionException {
-        lock_on_active_key_return retval = new lock_on_active_key_return();
+    // $ANTLR start "lock_on_active_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1437:1: lock_on_active_key : {...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID -> VK_LOCK_ON_ACTIVE[$start, text] ;
+    public final DRLParser.lock_on_active_key_return lock_on_active_key() throws RecognitionException {
+        DRLParser.lock_on_active_key_return retval = new DRLParser.lock_on_active_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -14134,41 +13488,36 @@
         RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
-        
+
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1467:3: ({...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID -> VK_LOCK_ON_ACTIVE[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1467:5: {...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1440:3: ({...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID -> VK_LOCK_ON_ACTIVE[$start, text] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1440:5: {...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "lock_on_active_key", "(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, \"-\") && validateLT(5, DroolsSoftKeywords.ACTIVE))");
             }
-            id1=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_lock_on_active_key5092); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id1);
+            id1=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key5012); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_lock_on_active_key5096); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(mis1);
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_lock_on_active_key5016); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_lock_on_active_key5100); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id2);
+            id2=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key5020); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
 
-            mis2=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_lock_on_active_key5104); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(mis2);
+            mis2=(Token)match(input,MISC,FOLLOW_MISC_in_lock_on_active_key5024); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis2);
 
-            id3=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_lock_on_active_key5108); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id3);
+            id3=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key5028); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id3);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               text = input.toString(retval.start,input.LT(-1));
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id1, DroolsEditorType.KEYWORD);
               		emit(mis1, DroolsEditorType.KEYWORD);
               		emit(id2, DroolsEditorType.KEYWORD);
@@ -14176,53 +13525,56 @@
               		emit(id3, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1473:3: -> VK_LOCK_ON_ACTIVE[$start, text]
+            // 1446:3: -> VK_LOCK_ON_ACTIVE[$start, text]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_LOCK_ON_ACTIVE, ((Token)retval.start),  text));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_LOCK_ON_ACTIVE, ((Token)retval.start), text));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end lock_on_active_key
+    // $ANTLR end "lock_on_active_key"
 
     public static class date_effective_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start date_effective_key
-    // src/main/resources/org/drools/lang/DRL.g:1476:1: date_effective_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EFFECTIVE[$start, text] ;
-    public final date_effective_key_return date_effective_key() throws RecognitionException {
-        date_effective_key_return retval = new date_effective_key_return();
+    // $ANTLR start "date_effective_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1449:1: date_effective_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EFFECTIVE[$start, text] ;
+    public final DRLParser.date_effective_key_return date_effective_key() throws RecognitionException {
+        DRLParser.date_effective_key_return retval = new DRLParser.date_effective_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -14237,85 +13589,85 @@
         RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
-        
+
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1479:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EFFECTIVE[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1479:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1452:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EFFECTIVE[$start, text] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1452:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "date_effective_key", "(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))");
             }
-            id1=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_date_effective_key5140); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id1);
+            id1=(Token)match(input,ID,FOLLOW_ID_in_date_effective_key5060); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_date_effective_key5144); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(mis1);
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_date_effective_key5064); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_date_effective_key5148); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id2);
+            id2=(Token)match(input,ID,FOLLOW_ID_in_date_effective_key5068); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               text = input.toString(retval.start,input.LT(-1));
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id1, DroolsEditorType.KEYWORD);
               		emit(mis1, DroolsEditorType.KEYWORD);
               		emit(id2, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1483:3: -> VK_DATE_EFFECTIVE[$start, text]
+            // 1456:3: -> VK_DATE_EFFECTIVE[$start, text]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_DATE_EFFECTIVE, ((Token)retval.start),  text));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_DATE_EFFECTIVE, ((Token)retval.start), text));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end date_effective_key
+    // $ANTLR end "date_effective_key"
 
     public static class date_expires_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start date_expires_key
-    // src/main/resources/org/drools/lang/DRL.g:1486:1: date_expires_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EXPIRES[$start, text] ;
-    public final date_expires_key_return date_expires_key() throws RecognitionException {
-        date_expires_key_return retval = new date_expires_key_return();
+    // $ANTLR start "date_expires_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1459:1: date_expires_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EXPIRES[$start, text] ;
+    public final DRLParser.date_expires_key_return date_expires_key() throws RecognitionException {
+        DRLParser.date_expires_key_return retval = new DRLParser.date_expires_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -14330,85 +13682,85 @@
         RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
-        
+
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1489:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EXPIRES[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1489:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1462:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EXPIRES[$start, text] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1462:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "date_expires_key", "(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.EXPIRES))");
             }
-            id1=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_date_expires_key5180); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id1);
+            id1=(Token)match(input,ID,FOLLOW_ID_in_date_expires_key5100); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_date_expires_key5184); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(mis1);
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_date_expires_key5104); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_date_expires_key5188); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id2);
+            id2=(Token)match(input,ID,FOLLOW_ID_in_date_expires_key5108); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               text = input.toString(retval.start,input.LT(-1));
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id1, DroolsEditorType.KEYWORD);
               		emit(mis1, DroolsEditorType.KEYWORD);
               		emit(id2, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1493:3: -> VK_DATE_EXPIRES[$start, text]
+            // 1466:3: -> VK_DATE_EXPIRES[$start, text]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_DATE_EXPIRES, ((Token)retval.start),  text));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_DATE_EXPIRES, ((Token)retval.start), text));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end date_expires_key
+    // $ANTLR end "date_expires_key"
 
     public static class no_loop_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start no_loop_key
-    // src/main/resources/org/drools/lang/DRL.g:1496:1: no_loop_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_NO_LOOP[$start, text] ;
-    public final no_loop_key_return no_loop_key() throws RecognitionException {
-        no_loop_key_return retval = new no_loop_key_return();
+    // $ANTLR start "no_loop_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1469:1: no_loop_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_NO_LOOP[$start, text] ;
+    public final DRLParser.no_loop_key_return no_loop_key() throws RecognitionException {
+        DRLParser.no_loop_key_return retval = new DRLParser.no_loop_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -14423,85 +13775,85 @@
         RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
-        
+
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1499:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_NO_LOOP[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1499:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1472:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_NO_LOOP[$start, text] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1472:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "no_loop_key", "(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.LOOP))");
             }
-            id1=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_no_loop_key5220); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id1);
+            id1=(Token)match(input,ID,FOLLOW_ID_in_no_loop_key5140); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_no_loop_key5224); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(mis1);
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_no_loop_key5144); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_no_loop_key5228); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id2);
+            id2=(Token)match(input,ID,FOLLOW_ID_in_no_loop_key5148); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               text = input.toString(retval.start,input.LT(-1));
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id1, DroolsEditorType.KEYWORD);
               		emit(mis1, DroolsEditorType.KEYWORD);
               		emit(id2, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1503:3: -> VK_NO_LOOP[$start, text]
+            // 1476:3: -> VK_NO_LOOP[$start, text]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_NO_LOOP, ((Token)retval.start),  text));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_NO_LOOP, ((Token)retval.start), text));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end no_loop_key
+    // $ANTLR end "no_loop_key"
 
     public static class auto_focus_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start auto_focus_key
-    // src/main/resources/org/drools/lang/DRL.g:1506:1: auto_focus_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_AUTO_FOCUS[$start, text] ;
-    public final auto_focus_key_return auto_focus_key() throws RecognitionException {
-        auto_focus_key_return retval = new auto_focus_key_return();
+    // $ANTLR start "auto_focus_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1479:1: auto_focus_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_AUTO_FOCUS[$start, text] ;
+    public final DRLParser.auto_focus_key_return auto_focus_key() throws RecognitionException {
+        DRLParser.auto_focus_key_return retval = new DRLParser.auto_focus_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -14516,85 +13868,85 @@
         RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
-        
+
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1509:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AUTO_FOCUS[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1509:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1482:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AUTO_FOCUS[$start, text] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1482:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "auto_focus_key", "(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.FOCUS))");
             }
-            id1=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_auto_focus_key5260); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id1);
+            id1=(Token)match(input,ID,FOLLOW_ID_in_auto_focus_key5180); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_auto_focus_key5264); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(mis1);
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_auto_focus_key5184); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_auto_focus_key5268); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id2);
+            id2=(Token)match(input,ID,FOLLOW_ID_in_auto_focus_key5188); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               text = input.toString(retval.start,input.LT(-1));
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id1, DroolsEditorType.KEYWORD);
               		emit(mis1, DroolsEditorType.KEYWORD);
               		emit(id2, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1513:3: -> VK_AUTO_FOCUS[$start, text]
+            // 1486:3: -> VK_AUTO_FOCUS[$start, text]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_AUTO_FOCUS, ((Token)retval.start),  text));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_AUTO_FOCUS, ((Token)retval.start), text));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end auto_focus_key
+    // $ANTLR end "auto_focus_key"
 
     public static class activation_group_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start activation_group_key
-    // src/main/resources/org/drools/lang/DRL.g:1516:1: activation_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_ACTIVATION_GROUP[$start, text] ;
-    public final activation_group_key_return activation_group_key() throws RecognitionException {
-        activation_group_key_return retval = new activation_group_key_return();
+    // $ANTLR start "activation_group_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1489:1: activation_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_ACTIVATION_GROUP[$start, text] ;
+    public final DRLParser.activation_group_key_return activation_group_key() throws RecognitionException {
+        DRLParser.activation_group_key_return retval = new DRLParser.activation_group_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -14609,85 +13961,85 @@
         RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
-        
+
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1519:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ACTIVATION_GROUP[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1519:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1492:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ACTIVATION_GROUP[$start, text] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1492:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "activation_group_key", "(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.GROUP))");
             }
-            id1=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_activation_group_key5300); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id1);
+            id1=(Token)match(input,ID,FOLLOW_ID_in_activation_group_key5220); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_activation_group_key5304); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(mis1);
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_activation_group_key5224); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_activation_group_key5308); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id2);
+            id2=(Token)match(input,ID,FOLLOW_ID_in_activation_group_key5228); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               text = input.toString(retval.start,input.LT(-1));
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id1, DroolsEditorType.KEYWORD);
               		emit(mis1, DroolsEditorType.KEYWORD);
               		emit(id2, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1523:3: -> VK_ACTIVATION_GROUP[$start, text]
+            // 1496:3: -> VK_ACTIVATION_GROUP[$start, text]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_ACTIVATION_GROUP, ((Token)retval.start),  text));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_ACTIVATION_GROUP, ((Token)retval.start), text));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end activation_group_key
+    // $ANTLR end "activation_group_key"
 
     public static class agenda_group_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start agenda_group_key
-    // src/main/resources/org/drools/lang/DRL.g:1526:1: agenda_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_AGENDA_GROUP[$start, text] ;
-    public final agenda_group_key_return agenda_group_key() throws RecognitionException {
-        agenda_group_key_return retval = new agenda_group_key_return();
+    // $ANTLR start "agenda_group_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1499:1: agenda_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_AGENDA_GROUP[$start, text] ;
+    public final DRLParser.agenda_group_key_return agenda_group_key() throws RecognitionException {
+        DRLParser.agenda_group_key_return retval = new DRLParser.agenda_group_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -14702,85 +14054,85 @@
         RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
-        
+
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1529:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AGENDA_GROUP[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1529:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1502:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AGENDA_GROUP[$start, text] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1502:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "agenda_group_key", "(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.GROUP))");
             }
-            id1=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_agenda_group_key5340); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id1);
+            id1=(Token)match(input,ID,FOLLOW_ID_in_agenda_group_key5260); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_agenda_group_key5344); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(mis1);
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_agenda_group_key5264); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_agenda_group_key5348); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id2);
+            id2=(Token)match(input,ID,FOLLOW_ID_in_agenda_group_key5268); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               text = input.toString(retval.start,input.LT(-1));
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id1, DroolsEditorType.KEYWORD);
               		emit(mis1, DroolsEditorType.KEYWORD);
               		emit(id2, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1533:3: -> VK_AGENDA_GROUP[$start, text]
+            // 1506:3: -> VK_AGENDA_GROUP[$start, text]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_AGENDA_GROUP, ((Token)retval.start),  text));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_AGENDA_GROUP, ((Token)retval.start), text));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end agenda_group_key
+    // $ANTLR end "agenda_group_key"
 
     public static class ruleflow_group_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start ruleflow_group_key
-    // src/main/resources/org/drools/lang/DRL.g:1536:1: ruleflow_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_RULEFLOW_GROUP[$start, text] ;
-    public final ruleflow_group_key_return ruleflow_group_key() throws RecognitionException {
-        ruleflow_group_key_return retval = new ruleflow_group_key_return();
+    // $ANTLR start "ruleflow_group_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1509:1: ruleflow_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_RULEFLOW_GROUP[$start, text] ;
+    public final DRLParser.ruleflow_group_key_return ruleflow_group_key() throws RecognitionException {
+        DRLParser.ruleflow_group_key_return retval = new DRLParser.ruleflow_group_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -14795,85 +14147,85 @@
         RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
-        
+
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1539:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_RULEFLOW_GROUP[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1539:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1512:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_RULEFLOW_GROUP[$start, text] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1512:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "ruleflow_group_key", "(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.GROUP))");
             }
-            id1=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_ruleflow_group_key5380); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id1);
+            id1=(Token)match(input,ID,FOLLOW_ID_in_ruleflow_group_key5300); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_ruleflow_group_key5384); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(mis1);
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_ruleflow_group_key5304); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_ruleflow_group_key5388); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id2);
+            id2=(Token)match(input,ID,FOLLOW_ID_in_ruleflow_group_key5308); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               text = input.toString(retval.start,input.LT(-1));
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id1, DroolsEditorType.KEYWORD);
               		emit(mis1, DroolsEditorType.KEYWORD);
               		emit(id2, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1543:3: -> VK_RULEFLOW_GROUP[$start, text]
+            // 1516:3: -> VK_RULEFLOW_GROUP[$start, text]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_RULEFLOW_GROUP, ((Token)retval.start),  text));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_RULEFLOW_GROUP, ((Token)retval.start), text));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end ruleflow_group_key
+    // $ANTLR end "ruleflow_group_key"
 
     public static class entry_point_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start entry_point_key
-    // src/main/resources/org/drools/lang/DRL.g:1546:1: entry_point_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_ENTRY_POINT[$start, text] ;
-    public final entry_point_key_return entry_point_key() throws RecognitionException {
-        entry_point_key_return retval = new entry_point_key_return();
+    // $ANTLR start "entry_point_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1519:1: entry_point_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_ENTRY_POINT[$start, text] ;
+    public final DRLParser.entry_point_key_return entry_point_key() throws RecognitionException {
+        DRLParser.entry_point_key_return retval = new DRLParser.entry_point_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -14888,85 +14240,85 @@
         RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
-        
+
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1549:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ENTRY_POINT[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1549:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1522:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ENTRY_POINT[$start, text] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1522:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.POINT))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.POINT)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "entry_point_key", "(validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.POINT))");
             }
-            id1=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_entry_point_key5420); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id1);
+            id1=(Token)match(input,ID,FOLLOW_ID_in_entry_point_key5340); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_entry_point_key5424); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(mis1);
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_entry_point_key5344); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_entry_point_key5428); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id2);
+            id2=(Token)match(input,ID,FOLLOW_ID_in_entry_point_key5348); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               text = input.toString(retval.start,input.LT(-1));
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id1, DroolsEditorType.KEYWORD);
               		emit(mis1, DroolsEditorType.KEYWORD);
               		emit(id2, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1553:3: -> VK_ENTRY_POINT[$start, text]
+            // 1526:3: -> VK_ENTRY_POINT[$start, text]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_ENTRY_POINT, ((Token)retval.start),  text));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_ENTRY_POINT, ((Token)retval.start), text));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end entry_point_key
+    // $ANTLR end "entry_point_key"
 
     public static class duration_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start duration_key
-    // src/main/resources/org/drools/lang/DRL.g:1556:1: duration_key : {...}? =>id= ID -> VK_DURATION[$id] ;
-    public final duration_key_return duration_key() throws RecognitionException {
-        duration_key_return retval = new duration_key_return();
+    // $ANTLR start "duration_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1529:1: duration_key : {...}? =>id= ID -> VK_DURATION[$id] ;
+    public final DRLParser.duration_key_return duration_key() throws RecognitionException {
+        DRLParser.duration_key_return retval = new DRLParser.duration_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -14977,68 +14329,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1557:2: ({...}? =>id= ID -> VK_DURATION[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1557:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1530:2: ({...}? =>id= ID -> VK_DURATION[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1530:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.DURATION))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.DURATION)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "duration_key", "(validateIdentifierKey(DroolsSoftKeywords.DURATION))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_duration_key5457); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_duration_key5377); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1559:3: -> VK_DURATION[$id]
+            // 1532:3: -> VK_DURATION[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_DURATION, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_DURATION, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end duration_key
+    // $ANTLR end "duration_key"
 
     public static class package_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start package_key
-    // src/main/resources/org/drools/lang/DRL.g:1562:1: package_key : {...}?id= ID -> VK_PACKAGE[$id] ;
-    public final package_key_return package_key() throws RecognitionException {
-        package_key_return retval = new package_key_return();
+    // $ANTLR start "package_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1535:1: package_key : {...}? =>id= ID -> VK_PACKAGE[$id] ;
+    public final DRLParser.package_key_return package_key() throws RecognitionException {
+        DRLParser.package_key_return retval = new DRLParser.package_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -15049,68 +14403,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1563:2: ({...}?id= ID -> VK_PACKAGE[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1563:4: {...}?id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1536:2: ({...}? =>id= ID -> VK_PACKAGE[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1536:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.PACKAGE))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.PACKAGE)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "package_key", "(validateIdentifierKey(DroolsSoftKeywords.PACKAGE))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_package_key5482); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_package_key5403); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1565:3: -> VK_PACKAGE[$id]
+            // 1538:3: -> VK_PACKAGE[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_PACKAGE, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_PACKAGE, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end package_key
+    // $ANTLR end "package_key"
 
     public static class import_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start import_key
-    // src/main/resources/org/drools/lang/DRL.g:1568:1: import_key : {...}?id= ID -> VK_IMPORT[$id] ;
-    public final import_key_return import_key() throws RecognitionException {
-        import_key_return retval = new import_key_return();
+    // $ANTLR start "import_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1541:1: import_key : {...}? =>id= ID -> VK_IMPORT[$id] ;
+    public final DRLParser.import_key_return import_key() throws RecognitionException {
+        DRLParser.import_key_return retval = new DRLParser.import_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -15121,68 +14477,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1569:2: ({...}?id= ID -> VK_IMPORT[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1569:4: {...}?id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1542:2: ({...}? =>id= ID -> VK_IMPORT[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1542:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.IMPORT))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "import_key", "(validateIdentifierKey(DroolsSoftKeywords.IMPORT))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_import_key5508); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_import_key5430); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1571:3: -> VK_IMPORT[$id]
+            // 1544:3: -> VK_IMPORT[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_IMPORT, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_IMPORT, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end import_key
+    // $ANTLR end "import_key"
 
     public static class dialect_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start dialect_key
-    // src/main/resources/org/drools/lang/DRL.g:1574:1: dialect_key : {...}? =>id= ID -> VK_DIALECT[$id] ;
-    public final dialect_key_return dialect_key() throws RecognitionException {
-        dialect_key_return retval = new dialect_key_return();
+    // $ANTLR start "dialect_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1547:1: dialect_key : {...}? =>id= ID -> VK_DIALECT[$id] ;
+    public final DRLParser.dialect_key_return dialect_key() throws RecognitionException {
+        DRLParser.dialect_key_return retval = new DRLParser.dialect_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -15193,68 +14551,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1575:2: ({...}? =>id= ID -> VK_DIALECT[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1575:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1548:2: ({...}? =>id= ID -> VK_DIALECT[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1548:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.DIALECT))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "dialect_key", "(validateIdentifierKey(DroolsSoftKeywords.DIALECT))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_dialect_key5535); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_dialect_key5457); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1577:3: -> VK_DIALECT[$id]
+            // 1550:3: -> VK_DIALECT[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_DIALECT, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_DIALECT, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end dialect_key
+    // $ANTLR end "dialect_key"
 
     public static class salience_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start salience_key
-    // src/main/resources/org/drools/lang/DRL.g:1580:1: salience_key : {...}? =>id= ID -> VK_SALIENCE[$id] ;
-    public final salience_key_return salience_key() throws RecognitionException {
-        salience_key_return retval = new salience_key_return();
+    // $ANTLR start "salience_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1553:1: salience_key : {...}? =>id= ID -> VK_SALIENCE[$id] ;
+    public final DRLParser.salience_key_return salience_key() throws RecognitionException {
+        DRLParser.salience_key_return retval = new DRLParser.salience_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -15265,68 +14625,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1581:2: ({...}? =>id= ID -> VK_SALIENCE[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1581:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1554:2: ({...}? =>id= ID -> VK_SALIENCE[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1554:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "salience_key", "(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_salience_key5562); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_salience_key5484); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1583:3: -> VK_SALIENCE[$id]
+            // 1556:3: -> VK_SALIENCE[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_SALIENCE, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_SALIENCE, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end salience_key
+    // $ANTLR end "salience_key"
 
     public static class enabled_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start enabled_key
-    // src/main/resources/org/drools/lang/DRL.g:1586:1: enabled_key : {...}? =>id= ID -> VK_ENABLED[$id] ;
-    public final enabled_key_return enabled_key() throws RecognitionException {
-        enabled_key_return retval = new enabled_key_return();
+    // $ANTLR start "enabled_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1559:1: enabled_key : {...}? =>id= ID -> VK_ENABLED[$id] ;
+    public final DRLParser.enabled_key_return enabled_key() throws RecognitionException {
+        DRLParser.enabled_key_return retval = new DRLParser.enabled_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -15337,68 +14699,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1587:2: ({...}? =>id= ID -> VK_ENABLED[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1587:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1560:2: ({...}? =>id= ID -> VK_ENABLED[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1560:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.ENABLED))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "enabled_key", "(validateIdentifierKey(DroolsSoftKeywords.ENABLED))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_enabled_key5589); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_enabled_key5511); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1589:3: -> VK_ENABLED[$id]
+            // 1562:3: -> VK_ENABLED[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_ENABLED, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_ENABLED, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end enabled_key
+    // $ANTLR end "enabled_key"
 
     public static class attributes_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start attributes_key
-    // src/main/resources/org/drools/lang/DRL.g:1592:1: attributes_key : {...}? =>id= ID -> VK_ATTRIBUTES[$id] ;
-    public final attributes_key_return attributes_key() throws RecognitionException {
-        attributes_key_return retval = new attributes_key_return();
+    // $ANTLR start "attributes_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1565:1: attributes_key : {...}? =>id= ID -> VK_ATTRIBUTES[$id] ;
+    public final DRLParser.attributes_key_return attributes_key() throws RecognitionException {
+        DRLParser.attributes_key_return retval = new DRLParser.attributes_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -15409,68 +14773,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1593:2: ({...}? =>id= ID -> VK_ATTRIBUTES[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1593:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1566:2: ({...}? =>id= ID -> VK_ATTRIBUTES[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1566:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "attributes_key", "(validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_attributes_key5616); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_attributes_key5538); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1595:3: -> VK_ATTRIBUTES[$id]
+            // 1568:3: -> VK_ATTRIBUTES[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_ATTRIBUTES, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_ATTRIBUTES, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end attributes_key
+    // $ANTLR end "attributes_key"
 
     public static class rule_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start rule_key
-    // src/main/resources/org/drools/lang/DRL.g:1598:1: rule_key : {...}? =>id= ID -> VK_RULE[$id] ;
-    public final rule_key_return rule_key() throws RecognitionException {
-        rule_key_return retval = new rule_key_return();
+    // $ANTLR start "rule_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1571:1: rule_key : {...}? =>id= ID -> VK_RULE[$id] ;
+    public final DRLParser.rule_key_return rule_key() throws RecognitionException {
+        DRLParser.rule_key_return retval = new DRLParser.rule_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -15481,68 +14847,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1599:2: ({...}? =>id= ID -> VK_RULE[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1599:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1572:2: ({...}? =>id= ID -> VK_RULE[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1572:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.RULE)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "rule_key", "(validateIdentifierKey(DroolsSoftKeywords.RULE))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_rule_key5643); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_rule_key5565); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1601:3: -> VK_RULE[$id]
+            // 1574:3: -> VK_RULE[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_RULE, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_RULE, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end rule_key
+    // $ANTLR end "rule_key"
 
     public static class extend_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start extend_key
-    // src/main/resources/org/drools/lang/DRL.g:1604:1: extend_key : {...}? =>id= ID -> VK_EXTEND[$id] ;
-    public final extend_key_return extend_key() throws RecognitionException {
-        extend_key_return retval = new extend_key_return();
+    // $ANTLR start "extend_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1577:1: extend_key : {...}? =>id= ID -> VK_EXTEND[$id] ;
+    public final DRLParser.extend_key_return extend_key() throws RecognitionException {
+        DRLParser.extend_key_return retval = new DRLParser.extend_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -15553,68 +14921,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1605:2: ({...}? =>id= ID -> VK_EXTEND[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1605:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1578:2: ({...}? =>id= ID -> VK_EXTEND[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1578:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.EXTEND))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "extend_key", "(validateIdentifierKey(DroolsSoftKeywords.EXTEND))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_extend_key5670); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_extend_key5592); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1607:3: -> VK_EXTEND[$id]
+            // 1580:3: -> VK_EXTEND[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_EXTEND, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_EXTEND, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end extend_key
+    // $ANTLR end "extend_key"
 
     public static class template_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start template_key
-    // src/main/resources/org/drools/lang/DRL.g:1610:1: template_key : {...}? =>id= ID -> VK_TEMPLATE[$id] ;
-    public final template_key_return template_key() throws RecognitionException {
-        template_key_return retval = new template_key_return();
+    // $ANTLR start "template_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1583:1: template_key : {...}? =>id= ID -> VK_TEMPLATE[$id] ;
+    public final DRLParser.template_key_return template_key() throws RecognitionException {
+        DRLParser.template_key_return retval = new DRLParser.template_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -15625,68 +14995,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1611:2: ({...}? =>id= ID -> VK_TEMPLATE[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1611:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1584:2: ({...}? =>id= ID -> VK_TEMPLATE[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1584:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "template_key", "(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_template_key5697); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_template_key5619); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1613:3: -> VK_TEMPLATE[$id]
+            // 1586:3: -> VK_TEMPLATE[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_TEMPLATE, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_TEMPLATE, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end template_key
+    // $ANTLR end "template_key"
 
     public static class query_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start query_key
-    // src/main/resources/org/drools/lang/DRL.g:1616:1: query_key : {...}? =>id= ID -> VK_QUERY[$id] ;
-    public final query_key_return query_key() throws RecognitionException {
-        query_key_return retval = new query_key_return();
+    // $ANTLR start "query_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1589:1: query_key : {...}? =>id= ID -> VK_QUERY[$id] ;
+    public final DRLParser.query_key_return query_key() throws RecognitionException {
+        DRLParser.query_key_return retval = new DRLParser.query_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -15697,68 +15069,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1617:2: ({...}? =>id= ID -> VK_QUERY[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1617:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1590:2: ({...}? =>id= ID -> VK_QUERY[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1590:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.QUERY))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "query_key", "(validateIdentifierKey(DroolsSoftKeywords.QUERY))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_query_key5724); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_query_key5646); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1619:3: -> VK_QUERY[$id]
+            // 1592:3: -> VK_QUERY[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_QUERY, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_QUERY, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end query_key
+    // $ANTLR end "query_key"
 
     public static class declare_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start declare_key
-    // src/main/resources/org/drools/lang/DRL.g:1622:1: declare_key : {...}? =>id= ID -> VK_DECLARE[$id] ;
-    public final declare_key_return declare_key() throws RecognitionException {
-        declare_key_return retval = new declare_key_return();
+    // $ANTLR start "declare_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1595:1: declare_key : {...}? =>id= ID -> VK_DECLARE[$id] ;
+    public final DRLParser.declare_key_return declare_key() throws RecognitionException {
+        DRLParser.declare_key_return retval = new DRLParser.declare_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -15769,68 +15143,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1623:2: ({...}? =>id= ID -> VK_DECLARE[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1623:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1596:2: ({...}? =>id= ID -> VK_DECLARE[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1596:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.DECLARE))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "declare_key", "(validateIdentifierKey(DroolsSoftKeywords.DECLARE))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_declare_key5751); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_declare_key5673); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1625:3: -> VK_DECLARE[$id]
+            // 1598:3: -> VK_DECLARE[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_DECLARE, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_DECLARE, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end declare_key
+    // $ANTLR end "declare_key"
 
     public static class function_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start function_key
-    // src/main/resources/org/drools/lang/DRL.g:1628:1: function_key : {...}? =>id= ID -> VK_FUNCTION[$id] ;
-    public final function_key_return function_key() throws RecognitionException {
-        function_key_return retval = new function_key_return();
+    // $ANTLR start "function_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1601:1: function_key : {...}? =>id= ID -> VK_FUNCTION[$id] ;
+    public final DRLParser.function_key_return function_key() throws RecognitionException {
+        DRLParser.function_key_return retval = new DRLParser.function_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -15841,68 +15217,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1629:2: ({...}? =>id= ID -> VK_FUNCTION[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1629:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1602:2: ({...}? =>id= ID -> VK_FUNCTION[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1602:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "function_key", "(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_function_key5778); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_function_key5700); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1631:3: -> VK_FUNCTION[$id]
+            // 1604:3: -> VK_FUNCTION[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_FUNCTION, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_FUNCTION, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end function_key
+    // $ANTLR end "function_key"
 
     public static class global_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start global_key
-    // src/main/resources/org/drools/lang/DRL.g:1634:1: global_key : {...}? =>id= ID -> VK_GLOBAL[$id] ;
-    public final global_key_return global_key() throws RecognitionException {
-        global_key_return retval = new global_key_return();
+    // $ANTLR start "global_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1607:1: global_key : {...}? =>id= ID -> VK_GLOBAL[$id] ;
+    public final DRLParser.global_key_return global_key() throws RecognitionException {
+        DRLParser.global_key_return retval = new DRLParser.global_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -15913,68 +15291,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1635:2: ({...}? =>id= ID -> VK_GLOBAL[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1635:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1608:2: ({...}? =>id= ID -> VK_GLOBAL[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1608:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "global_key", "(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_global_key5805); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_global_key5727); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1637:3: -> VK_GLOBAL[$id]
+            // 1610:3: -> VK_GLOBAL[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_GLOBAL, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_GLOBAL, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end global_key
+    // $ANTLR end "global_key"
 
     public static class eval_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start eval_key
-    // src/main/resources/org/drools/lang/DRL.g:1640:1: eval_key : {...}? =>id= ID -> VK_EVAL[$id] ;
-    public final eval_key_return eval_key() throws RecognitionException {
-        eval_key_return retval = new eval_key_return();
+    // $ANTLR start "eval_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1613:1: eval_key : {...}? =>id= ID -> VK_EVAL[$id] ;
+    public final DRLParser.eval_key_return eval_key() throws RecognitionException {
+        DRLParser.eval_key_return retval = new DRLParser.eval_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -15985,68 +15365,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1641:2: ({...}? =>id= ID -> VK_EVAL[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1641:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1614:2: ({...}? =>id= ID -> VK_EVAL[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1614:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.EVAL))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.EVAL)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "eval_key", "(validateIdentifierKey(DroolsSoftKeywords.EVAL))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_eval_key5832); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_eval_key5754); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1643:3: -> VK_EVAL[$id]
+            // 1616:3: -> VK_EVAL[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_EVAL, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_EVAL, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end eval_key
+    // $ANTLR end "eval_key"
 
     public static class contains_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start contains_key
-    // src/main/resources/org/drools/lang/DRL.g:1646:1: contains_key : {...}? =>id= ID -> VK_CONTAINS[$id] ;
-    public final contains_key_return contains_key() throws RecognitionException {
-        contains_key_return retval = new contains_key_return();
+    // $ANTLR start "contains_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1619:1: contains_key : {...}? =>id= ID -> VK_CONTAINS[$id] ;
+    public final DRLParser.contains_key_return contains_key() throws RecognitionException {
+        DRLParser.contains_key_return retval = new DRLParser.contains_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -16057,68 +15439,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1647:2: ({...}? =>id= ID -> VK_CONTAINS[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1647:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1620:2: ({...}? =>id= ID -> VK_CONTAINS[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1620:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.CONTAINS))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "contains_key", "(validateIdentifierKey(DroolsSoftKeywords.CONTAINS))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_contains_key5859); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_contains_key5781); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1649:3: -> VK_CONTAINS[$id]
+            // 1622:3: -> VK_CONTAINS[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_CONTAINS, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_CONTAINS, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end contains_key
+    // $ANTLR end "contains_key"
 
     public static class matches_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start matches_key
-    // src/main/resources/org/drools/lang/DRL.g:1652:1: matches_key : {...}? =>id= ID -> VK_MATCHES[$id] ;
-    public final matches_key_return matches_key() throws RecognitionException {
-        matches_key_return retval = new matches_key_return();
+    // $ANTLR start "matches_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1625:1: matches_key : {...}? =>id= ID -> VK_MATCHES[$id] ;
+    public final DRLParser.matches_key_return matches_key() throws RecognitionException {
+        DRLParser.matches_key_return retval = new DRLParser.matches_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -16129,68 +15513,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1653:2: ({...}? =>id= ID -> VK_MATCHES[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1653:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1626:2: ({...}? =>id= ID -> VK_MATCHES[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1626:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.MATCHES))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "matches_key", "(validateIdentifierKey(DroolsSoftKeywords.MATCHES))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_matches_key5886); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_matches_key5808); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1655:3: -> VK_MATCHES[$id]
+            // 1628:3: -> VK_MATCHES[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_MATCHES, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_MATCHES, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end matches_key
+    // $ANTLR end "matches_key"
 
     public static class excludes_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start excludes_key
-    // src/main/resources/org/drools/lang/DRL.g:1658:1: excludes_key : {...}? =>id= ID -> VK_EXCLUDES[$id] ;
-    public final excludes_key_return excludes_key() throws RecognitionException {
-        excludes_key_return retval = new excludes_key_return();
+    // $ANTLR start "excludes_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1631:1: excludes_key : {...}? =>id= ID -> VK_EXCLUDES[$id] ;
+    public final DRLParser.excludes_key_return excludes_key() throws RecognitionException {
+        DRLParser.excludes_key_return retval = new DRLParser.excludes_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -16201,68 +15587,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1659:2: ({...}? =>id= ID -> VK_EXCLUDES[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1659:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1632:2: ({...}? =>id= ID -> VK_EXCLUDES[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1632:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.EXCLUDES))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.EXCLUDES)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "excludes_key", "(validateIdentifierKey(DroolsSoftKeywords.EXCLUDES))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_excludes_key5913); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_excludes_key5835); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1661:3: -> VK_EXCLUDES[$id]
+            // 1634:3: -> VK_EXCLUDES[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_EXCLUDES, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_EXCLUDES, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end excludes_key
+    // $ANTLR end "excludes_key"
 
     public static class soundslike_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start soundslike_key
-    // src/main/resources/org/drools/lang/DRL.g:1664:1: soundslike_key : {...}? =>id= ID -> VK_SOUNDSLIKE[$id] ;
-    public final soundslike_key_return soundslike_key() throws RecognitionException {
-        soundslike_key_return retval = new soundslike_key_return();
+    // $ANTLR start "soundslike_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1637:1: soundslike_key : {...}? =>id= ID -> VK_SOUNDSLIKE[$id] ;
+    public final DRLParser.soundslike_key_return soundslike_key() throws RecognitionException {
+        DRLParser.soundslike_key_return retval = new DRLParser.soundslike_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -16273,68 +15661,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1665:2: ({...}? =>id= ID -> VK_SOUNDSLIKE[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1665:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1638:2: ({...}? =>id= ID -> VK_SOUNDSLIKE[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1638:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "soundslike_key", "(validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_soundslike_key5940); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_soundslike_key5862); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1667:3: -> VK_SOUNDSLIKE[$id]
+            // 1640:3: -> VK_SOUNDSLIKE[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_SOUNDSLIKE, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_SOUNDSLIKE, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end soundslike_key
+    // $ANTLR end "soundslike_key"
 
     public static class memberof_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start memberof_key
-    // src/main/resources/org/drools/lang/DRL.g:1670:1: memberof_key : {...}? =>id= ID -> VK_MEMBEROF[$id] ;
-    public final memberof_key_return memberof_key() throws RecognitionException {
-        memberof_key_return retval = new memberof_key_return();
+    // $ANTLR start "memberof_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1643:1: memberof_key : {...}? =>id= ID -> VK_MEMBEROF[$id] ;
+    public final DRLParser.memberof_key_return memberof_key() throws RecognitionException {
+        DRLParser.memberof_key_return retval = new DRLParser.memberof_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -16345,68 +15735,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1671:2: ({...}? =>id= ID -> VK_MEMBEROF[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1671:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1644:2: ({...}? =>id= ID -> VK_MEMBEROF[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1644:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "memberof_key", "(validateIdentifierKey(DroolsSoftKeywords.MEMBEROF))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_memberof_key5967); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_memberof_key5889); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1673:3: -> VK_MEMBEROF[$id]
+            // 1646:3: -> VK_MEMBEROF[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_MEMBEROF, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_MEMBEROF, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end memberof_key
+    // $ANTLR end "memberof_key"
 
     public static class not_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start not_key
-    // src/main/resources/org/drools/lang/DRL.g:1676:1: not_key : {...}? =>id= ID -> VK_NOT[$id] ;
-    public final not_key_return not_key() throws RecognitionException {
-        not_key_return retval = new not_key_return();
+    // $ANTLR start "not_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1649:1: not_key : {...}? =>id= ID -> VK_NOT[$id] ;
+    public final DRLParser.not_key_return not_key() throws RecognitionException {
+        DRLParser.not_key_return retval = new DRLParser.not_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -16417,68 +15809,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1677:2: ({...}? =>id= ID -> VK_NOT[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1677:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1650:2: ({...}? =>id= ID -> VK_NOT[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1650:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.NOT))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "not_key", "(validateIdentifierKey(DroolsSoftKeywords.NOT))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_not_key5994); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_not_key5916); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1679:3: -> VK_NOT[$id]
+            // 1652:3: -> VK_NOT[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_NOT, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_NOT, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end not_key
+    // $ANTLR end "not_key"
 
     public static class in_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start in_key
-    // src/main/resources/org/drools/lang/DRL.g:1682:1: in_key : {...}? =>id= ID -> VK_IN[$id] ;
-    public final in_key_return in_key() throws RecognitionException {
-        in_key_return retval = new in_key_return();
+    // $ANTLR start "in_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1655:1: in_key : {...}? =>id= ID -> VK_IN[$id] ;
+    public final DRLParser.in_key_return in_key() throws RecognitionException {
+        DRLParser.in_key_return retval = new DRLParser.in_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -16489,68 +15883,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1683:2: ({...}? =>id= ID -> VK_IN[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1683:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1656:2: ({...}? =>id= ID -> VK_IN[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1656:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "in_key", "(validateIdentifierKey(DroolsSoftKeywords.IN))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_in_key6021); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_in_key5943); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1685:3: -> VK_IN[$id]
+            // 1658:3: -> VK_IN[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_IN, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_IN, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end in_key
+    // $ANTLR end "in_key"
 
     public static class or_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start or_key
-    // src/main/resources/org/drools/lang/DRL.g:1688:1: or_key : {...}? =>id= ID -> VK_OR[$id] ;
-    public final or_key_return or_key() throws RecognitionException {
-        or_key_return retval = new or_key_return();
+    // $ANTLR start "or_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1661:1: or_key : {...}? =>id= ID -> VK_OR[$id] ;
+    public final DRLParser.or_key_return or_key() throws RecognitionException {
+        DRLParser.or_key_return retval = new DRLParser.or_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -16561,68 +15957,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1689:2: ({...}? =>id= ID -> VK_OR[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1689:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1662:2: ({...}? =>id= ID -> VK_OR[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1662:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.OR))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.OR)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "or_key", "(validateIdentifierKey(DroolsSoftKeywords.OR))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_or_key6048); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_or_key5970); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1691:3: -> VK_OR[$id]
+            // 1664:3: -> VK_OR[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_OR, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_OR, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end or_key
+    // $ANTLR end "or_key"
 
     public static class and_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start and_key
-    // src/main/resources/org/drools/lang/DRL.g:1694:1: and_key : {...}? =>id= ID -> VK_AND[$id] ;
-    public final and_key_return and_key() throws RecognitionException {
-        and_key_return retval = new and_key_return();
+    // $ANTLR start "and_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1667:1: and_key : {...}? =>id= ID -> VK_AND[$id] ;
+    public final DRLParser.and_key_return and_key() throws RecognitionException {
+        DRLParser.and_key_return retval = new DRLParser.and_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -16633,68 +16031,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1695:2: ({...}? =>id= ID -> VK_AND[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1695:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1668:2: ({...}? =>id= ID -> VK_AND[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1668:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.AND))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.AND)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "and_key", "(validateIdentifierKey(DroolsSoftKeywords.AND))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_and_key6075); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_and_key5997); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1697:3: -> VK_AND[$id]
+            // 1670:3: -> VK_AND[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_AND, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_AND, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end and_key
+    // $ANTLR end "and_key"
 
     public static class exists_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start exists_key
-    // src/main/resources/org/drools/lang/DRL.g:1700:1: exists_key : {...}? =>id= ID -> VK_EXISTS[$id] ;
-    public final exists_key_return exists_key() throws RecognitionException {
-        exists_key_return retval = new exists_key_return();
+    // $ANTLR start "exists_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1673:1: exists_key : {...}? =>id= ID -> VK_EXISTS[$id] ;
+    public final DRLParser.exists_key_return exists_key() throws RecognitionException {
+        DRLParser.exists_key_return retval = new DRLParser.exists_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -16705,68 +16105,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1701:2: ({...}? =>id= ID -> VK_EXISTS[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1701:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1674:2: ({...}? =>id= ID -> VK_EXISTS[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1674:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.EXISTS))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.EXISTS)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "exists_key", "(validateIdentifierKey(DroolsSoftKeywords.EXISTS))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_exists_key6102); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_exists_key6024); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1703:3: -> VK_EXISTS[$id]
+            // 1676:3: -> VK_EXISTS[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_EXISTS, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_EXISTS, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end exists_key
+    // $ANTLR end "exists_key"
 
     public static class forall_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start forall_key
-    // src/main/resources/org/drools/lang/DRL.g:1706:1: forall_key : {...}? =>id= ID -> VK_FORALL[$id] ;
-    public final forall_key_return forall_key() throws RecognitionException {
-        forall_key_return retval = new forall_key_return();
+    // $ANTLR start "forall_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1679:1: forall_key : {...}? =>id= ID -> VK_FORALL[$id] ;
+    public final DRLParser.forall_key_return forall_key() throws RecognitionException {
+        DRLParser.forall_key_return retval = new DRLParser.forall_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -16777,68 +16179,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1707:2: ({...}? =>id= ID -> VK_FORALL[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1707:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1680:2: ({...}? =>id= ID -> VK_FORALL[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1680:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.FORALL))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.FORALL)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "forall_key", "(validateIdentifierKey(DroolsSoftKeywords.FORALL))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_forall_key6129); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_forall_key6051); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1709:3: -> VK_FORALL[$id]
+            // 1682:3: -> VK_FORALL[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_FORALL, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_FORALL, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end forall_key
+    // $ANTLR end "forall_key"
 
     public static class action_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start action_key
-    // src/main/resources/org/drools/lang/DRL.g:1712:1: action_key : {...}? =>id= ID -> VK_ACTION[$id] ;
-    public final action_key_return action_key() throws RecognitionException {
-        action_key_return retval = new action_key_return();
+    // $ANTLR start "action_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1685:1: action_key : {...}? =>id= ID -> VK_ACTION[$id] ;
+    public final DRLParser.action_key_return action_key() throws RecognitionException {
+        DRLParser.action_key_return retval = new DRLParser.action_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -16849,68 +16253,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1713:2: ({...}? =>id= ID -> VK_ACTION[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1713:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1686:2: ({...}? =>id= ID -> VK_ACTION[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1686:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.ACTION))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.ACTION)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "action_key", "(validateIdentifierKey(DroolsSoftKeywords.ACTION))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_action_key6156); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_action_key6078); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1715:3: -> VK_ACTION[$id]
+            // 1688:3: -> VK_ACTION[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_ACTION, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_ACTION, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end action_key
+    // $ANTLR end "action_key"
 
     public static class reverse_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start reverse_key
-    // src/main/resources/org/drools/lang/DRL.g:1718:1: reverse_key : {...}? =>id= ID -> VK_REVERSE[$id] ;
-    public final reverse_key_return reverse_key() throws RecognitionException {
-        reverse_key_return retval = new reverse_key_return();
+    // $ANTLR start "reverse_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1691:1: reverse_key : {...}? =>id= ID -> VK_REVERSE[$id] ;
+    public final DRLParser.reverse_key_return reverse_key() throws RecognitionException {
+        DRLParser.reverse_key_return retval = new DRLParser.reverse_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -16921,68 +16327,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1719:2: ({...}? =>id= ID -> VK_REVERSE[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1719:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1692:2: ({...}? =>id= ID -> VK_REVERSE[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1692:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.REVERSE))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.REVERSE)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "reverse_key", "(validateIdentifierKey(DroolsSoftKeywords.REVERSE))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_reverse_key6183); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_reverse_key6105); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1721:3: -> VK_REVERSE[$id]
+            // 1694:3: -> VK_REVERSE[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_REVERSE, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_REVERSE, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end reverse_key
+    // $ANTLR end "reverse_key"
 
     public static class result_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start result_key
-    // src/main/resources/org/drools/lang/DRL.g:1724:1: result_key : {...}? =>id= ID -> VK_RESULT[$id] ;
-    public final result_key_return result_key() throws RecognitionException {
-        result_key_return retval = new result_key_return();
+    // $ANTLR start "result_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1697:1: result_key : {...}? =>id= ID -> VK_RESULT[$id] ;
+    public final DRLParser.result_key_return result_key() throws RecognitionException {
+        DRLParser.result_key_return retval = new DRLParser.result_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -16993,235 +16401,243 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1725:2: ({...}? =>id= ID -> VK_RESULT[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1725:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1698:2: ({...}? =>id= ID -> VK_RESULT[$id] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1698:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.RESULT))) ) {
-                if (backtracking>0) {failed=true; return retval;}
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.RESULT)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "result_key", "(validateIdentifierKey(DroolsSoftKeywords.RESULT))");
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_result_key6210); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_result_key6132); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(id, DroolsEditorType.KEYWORD);	
             }
 
+
             // AST REWRITE
             // elements: 
             // token labels: 
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
             retval.tree = root_0;
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1727:3: -> VK_RESULT[$id]
+            // 1700:3: -> VK_RESULT[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_RESULT, id));
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_RESULT, id));
 
             }
 
+            retval.tree = root_0;}
             }
 
-            }
-
             retval.stop = input.LT(-1);
 
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
         }
         catch (RecognitionException re) {
             reportError(re);
             recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
         }
         finally {
         }
         return retval;
     }
-    // $ANTLR end result_key
+    // $ANTLR end "result_key"
 
-    // $ANTLR start synpred1
-    public final void synpred1_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/DRL.g:833:5: ( LEFT_PAREN or_key )
-        // src/main/resources/org/drools/lang/DRL.g:833:6: LEFT_PAREN or_key
+    // $ANTLR start synpred1_DRL
+    public final void synpred1_DRL_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:813:5: ( LEFT_PAREN or_key )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:813:6: LEFT_PAREN or_key
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred12092); if (failed) return ;
-        pushFollow(FOLLOW_or_key_in_synpred12094);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred1_DRL2046); if (state.failed) return ;
+        pushFollow(FOLLOW_or_key_in_synpred1_DRL2048);
         or_key();
-        _fsp--;
-        if (failed) return ;
 
+        state._fsp--;
+        if (state.failed) return ;
+
         }
     }
-    // $ANTLR end synpred1
+    // $ANTLR end synpred1_DRL
 
-    // $ANTLR start synpred2
-    public final void synpred2_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/DRL.g:841:5: ( or_key | DOUBLE_PIPE )
+    // $ANTLR start synpred2_DRL
+    public final void synpred2_DRL_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:821:5: ( or_key | DOUBLE_PIPE )
         int alt106=2;
         int LA106_0 = input.LA(1);
 
-        if ( (LA106_0==ID) && ((validateIdentifierKey(DroolsSoftKeywords.OR)))) {
+        if ( (LA106_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.OR))))) {
             alt106=1;
         }
         else if ( (LA106_0==DOUBLE_PIPE) ) {
             alt106=2;
         }
         else {
-            if (backtracking>0) {failed=true; return ;}
+            if (state.backtracking>0) {state.failed=true; return ;}
             NoViableAltException nvae =
-                new NoViableAltException("841:5: synpred2 : ( or_key | DOUBLE_PIPE );", 106, 0, input);
+                new NoViableAltException("", 106, 0, input);
 
             throw nvae;
         }
         switch (alt106) {
             case 1 :
-                // src/main/resources/org/drools/lang/DRL.g:841:6: or_key
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:821:6: or_key
                 {
-                pushFollow(FOLLOW_or_key_in_synpred22161);
+                pushFollow(FOLLOW_or_key_in_synpred2_DRL2115);
                 or_key();
-                _fsp--;
-                if (failed) return ;
 
+                state._fsp--;
+                if (state.failed) return ;
+
                 }
                 break;
             case 2 :
-                // src/main/resources/org/drools/lang/DRL.g:841:13: DOUBLE_PIPE
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:821:13: DOUBLE_PIPE
                 {
-                match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_synpred22163); if (failed) return ;
+                match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_synpred2_DRL2117); if (state.failed) return ;
 
                 }
                 break;
 
         }}
-    // $ANTLR end synpred2
+    // $ANTLR end synpred2_DRL
 
-    // $ANTLR start synpred3
-    public final void synpred3_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/DRL.g:850:5: ( LEFT_PAREN and_key )
-        // src/main/resources/org/drools/lang/DRL.g:850:6: LEFT_PAREN and_key
+    // $ANTLR start synpred3_DRL
+    public final void synpred3_DRL_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:830:5: ( LEFT_PAREN and_key )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:830:6: LEFT_PAREN and_key
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred32220); if (failed) return ;
-        pushFollow(FOLLOW_and_key_in_synpred32222);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred3_DRL2174); if (state.failed) return ;
+        pushFollow(FOLLOW_and_key_in_synpred3_DRL2176);
         and_key();
-        _fsp--;
-        if (failed) return ;
 
+        state._fsp--;
+        if (state.failed) return ;
+
         }
     }
-    // $ANTLR end synpred3
+    // $ANTLR end synpred3_DRL
 
-    // $ANTLR start synpred4
-    public final void synpred4_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/DRL.g:858:5: ( and_key | DOUBLE_AMPER )
+    // $ANTLR start synpred4_DRL
+    public final void synpred4_DRL_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:838:5: ( and_key | DOUBLE_AMPER )
         int alt107=2;
         int LA107_0 = input.LA(1);
 
-        if ( (LA107_0==ID) && ((validateIdentifierKey(DroolsSoftKeywords.AND)))) {
+        if ( (LA107_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AND))))) {
             alt107=1;
         }
         else if ( (LA107_0==DOUBLE_AMPER) ) {
             alt107=2;
         }
         else {
-            if (backtracking>0) {failed=true; return ;}
+            if (state.backtracking>0) {state.failed=true; return ;}
             NoViableAltException nvae =
-                new NoViableAltException("858:5: synpred4 : ( and_key | DOUBLE_AMPER );", 107, 0, input);
+                new NoViableAltException("", 107, 0, input);
 
             throw nvae;
         }
         switch (alt107) {
             case 1 :
-                // src/main/resources/org/drools/lang/DRL.g:858:6: and_key
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:838:6: and_key
                 {
-                pushFollow(FOLLOW_and_key_in_synpred42290);
+                pushFollow(FOLLOW_and_key_in_synpred4_DRL2244);
                 and_key();
-                _fsp--;
-                if (failed) return ;
 
+                state._fsp--;
+                if (state.failed) return ;
+
                 }
                 break;
             case 2 :
-                // src/main/resources/org/drools/lang/DRL.g:858:14: DOUBLE_AMPER
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:838:14: DOUBLE_AMPER
                 {
-                match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_synpred42292); if (failed) return ;
+                match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_synpred4_DRL2246); if (state.failed) return ;
 
                 }
                 break;
 
         }}
-    // $ANTLR end synpred4
+    // $ANTLR end synpred4_DRL
 
-    // $ANTLR start synpred5
-    public final void synpred5_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/DRL.g:875:4: ( SEMICOLON )
-        // src/main/resources/org/drools/lang/DRL.g:875:5: SEMICOLON
+    // $ANTLR start synpred5_DRL
+    public final void synpred5_DRL_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:855:4: ( SEMICOLON )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:855:5: SEMICOLON
         {
-        match(input,SEMICOLON,FOLLOW_SEMICOLON_in_synpred52415); if (failed) return ;
+        match(input,SEMICOLON,FOLLOW_SEMICOLON_in_synpred5_DRL2369); if (state.failed) return ;
 
         }
     }
-    // $ANTLR end synpred5
+    // $ANTLR end synpred5_DRL
 
-    // $ANTLR start synpred6
-    public final void synpred6_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/DRL.g:881:12: ( LEFT_PAREN ( or_key | and_key ) )
-        // src/main/resources/org/drools/lang/DRL.g:881:13: LEFT_PAREN ( or_key | and_key )
+    // $ANTLR start synpred6_DRL
+    public final void synpred6_DRL_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:861:12: ( LEFT_PAREN ( or_key | and_key ) )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:861:13: LEFT_PAREN ( or_key | and_key )
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred62452); if (failed) return ;
-        // src/main/resources/org/drools/lang/DRL.g:881:24: ( or_key | and_key )
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred6_DRL2406); if (state.failed) return ;
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:861:24: ( or_key | and_key )
         int alt108=2;
         int LA108_0 = input.LA(1);
 
-        if ( (LA108_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AND))||(validateIdentifierKey(DroolsSoftKeywords.OR))))) {
+        if ( (LA108_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.AND)))||((validateIdentifierKey(DroolsSoftKeywords.OR)))))) {
             int LA108_1 = input.LA(2);
 
-            if ( ((validateIdentifierKey(DroolsSoftKeywords.OR))) ) {
+            if ( (((validateIdentifierKey(DroolsSoftKeywords.OR)))) ) {
                 alt108=1;
             }
-            else if ( ((validateIdentifierKey(DroolsSoftKeywords.AND))) ) {
+            else if ( (((validateIdentifierKey(DroolsSoftKeywords.AND)))) ) {
                 alt108=2;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("881:24: ( or_key | and_key )", 108, 1, input);
+                    new NoViableAltException("", 108, 1, input);
 
                 throw nvae;
             }
         }
         else {
-            if (backtracking>0) {failed=true; return ;}
+            if (state.backtracking>0) {state.failed=true; return ;}
             NoViableAltException nvae =
-                new NoViableAltException("881:24: ( or_key | and_key )", 108, 0, input);
+                new NoViableAltException("", 108, 0, input);
 
             throw nvae;
         }
         switch (alt108) {
             case 1 :
-                // src/main/resources/org/drools/lang/DRL.g:881:25: or_key
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:861:25: or_key
                 {
-                pushFollow(FOLLOW_or_key_in_synpred62455);
+                pushFollow(FOLLOW_or_key_in_synpred6_DRL2409);
                 or_key();
-                _fsp--;
-                if (failed) return ;
 
+                state._fsp--;
+                if (state.failed) return ;
+
                 }
                 break;
             case 2 :
-                // src/main/resources/org/drools/lang/DRL.g:881:32: and_key
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:861:32: and_key
                 {
-                pushFollow(FOLLOW_and_key_in_synpred62457);
+                pushFollow(FOLLOW_and_key_in_synpred6_DRL2411);
                 and_key();
-                _fsp--;
-                if (failed) return ;
 
+                state._fsp--;
+                if (state.failed) return ;
+
                 }
                 break;
 
@@ -17230,61 +16646,63 @@
 
         }
     }
-    // $ANTLR end synpred6
+    // $ANTLR end synpred6_DRL
 
-    // $ANTLR start synpred7
-    public final void synpred7_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/DRL.g:897:5: ( LEFT_PAREN ( or_key | and_key ) )
-        // src/main/resources/org/drools/lang/DRL.g:897:6: LEFT_PAREN ( or_key | and_key )
+    // $ANTLR start synpred7_DRL
+    public final void synpred7_DRL_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:877:5: ( LEFT_PAREN ( or_key | and_key ) )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:877:6: LEFT_PAREN ( or_key | and_key )
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred72580); if (failed) return ;
-        // src/main/resources/org/drools/lang/DRL.g:897:17: ( or_key | and_key )
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred7_DRL2534); if (state.failed) return ;
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:877:17: ( or_key | and_key )
         int alt109=2;
         int LA109_0 = input.LA(1);
 
-        if ( (LA109_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AND))||(validateIdentifierKey(DroolsSoftKeywords.OR))))) {
+        if ( (LA109_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.AND)))||((validateIdentifierKey(DroolsSoftKeywords.OR)))))) {
             int LA109_1 = input.LA(2);
 
-            if ( ((validateIdentifierKey(DroolsSoftKeywords.OR))) ) {
+            if ( (((validateIdentifierKey(DroolsSoftKeywords.OR)))) ) {
                 alt109=1;
             }
-            else if ( ((validateIdentifierKey(DroolsSoftKeywords.AND))) ) {
+            else if ( (((validateIdentifierKey(DroolsSoftKeywords.AND)))) ) {
                 alt109=2;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("897:17: ( or_key | and_key )", 109, 1, input);
+                    new NoViableAltException("", 109, 1, input);
 
                 throw nvae;
             }
         }
         else {
-            if (backtracking>0) {failed=true; return ;}
+            if (state.backtracking>0) {state.failed=true; return ;}
             NoViableAltException nvae =
-                new NoViableAltException("897:17: ( or_key | and_key )", 109, 0, input);
+                new NoViableAltException("", 109, 0, input);
 
             throw nvae;
         }
         switch (alt109) {
             case 1 :
-                // src/main/resources/org/drools/lang/DRL.g:897:18: or_key
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:877:18: or_key
                 {
-                pushFollow(FOLLOW_or_key_in_synpred72583);
+                pushFollow(FOLLOW_or_key_in_synpred7_DRL2537);
                 or_key();
-                _fsp--;
-                if (failed) return ;
 
+                state._fsp--;
+                if (state.failed) return ;
+
                 }
                 break;
             case 2 :
-                // src/main/resources/org/drools/lang/DRL.g:897:25: and_key
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:877:25: and_key
                 {
-                pushFollow(FOLLOW_and_key_in_synpred72585);
+                pushFollow(FOLLOW_and_key_in_synpred7_DRL2539);
                 and_key();
-                _fsp--;
-                if (failed) return ;
 
+                state._fsp--;
+                if (state.failed) return ;
+
                 }
                 break;
 
@@ -17293,150 +16711,432 @@
 
         }
     }
-    // $ANTLR end synpred7
+    // $ANTLR end synpred7_DRL
 
-    // $ANTLR start synpred8
-    public final void synpred8_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/DRL.g:1066:5: ( LEFT_PAREN )
-        // src/main/resources/org/drools/lang/DRL.g:1066:6: LEFT_PAREN
+    // $ANTLR start synpred8_DRL
+    public final void synpred8_DRL_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1046:5: ( LEFT_PAREN )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1046:6: LEFT_PAREN
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred83414); if (failed) return ;
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred8_DRL3368); if (state.failed) return ;
 
         }
     }
-    // $ANTLR end synpred8
+    // $ANTLR end synpred8_DRL
 
-    public final boolean synpred4() {
-        backtracking++;
+    // Delegated rules
+
+    public final boolean synpred3_DRL() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred4_fragment(); // can never throw exception
+            synpred3_DRL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred7() {
-        backtracking++;
+    public final boolean synpred2_DRL() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred7_fragment(); // can never throw exception
+            synpred2_DRL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred2() {
-        backtracking++;
+    public final boolean synpred5_DRL() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred2_fragment(); // can never throw exception
+            synpred5_DRL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred3() {
-        backtracking++;
+    public final boolean synpred7_DRL() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred3_fragment(); // can never throw exception
+            synpred7_DRL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred1() {
-        backtracking++;
+    public final boolean synpred6_DRL() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred1_fragment(); // can never throw exception
+            synpred6_DRL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred5() {
-        backtracking++;
+    public final boolean synpred1_DRL() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred5_fragment(); // can never throw exception
+            synpred1_DRL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred6() {
-        backtracking++;
+    public final boolean synpred4_DRL() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred6_fragment(); // can never throw exception
+            synpred4_DRL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred8() {
-        backtracking++;
+    public final boolean synpred8_DRL() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred8_fragment(); // can never throw exception
+            synpred8_DRL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
 
 
+    protected DFA1 dfa1 = new DFA1(this);
+    protected DFA5 dfa5 = new DFA5(this);
     protected DFA12 dfa12 = new DFA12(this);
     protected DFA17 dfa17 = new DFA17(this);
+    protected DFA28 dfa28 = new DFA28(this);
     protected DFA37 dfa37 = new DFA37(this);
-    protected DFA54 dfa54 = new DFA54(this);
-    protected DFA55 dfa55 = new DFA55(this);
-    protected DFA66 dfa66 = new DFA66(this);
-    protected DFA84 dfa84 = new DFA84(this);
-    protected DFA85 dfa85 = new DFA85(this);
+    protected DFA69 dfa69 = new DFA69(this);
+    protected DFA71 dfa71 = new DFA71(this);
+    protected DFA81 dfa81 = new DFA81(this);
+    protected DFA86 dfa86 = new DFA86(this);
+    static final String DFA1_eotS =
+        "\12\uffff";
+    static final String DFA1_eofS =
+        "\1\2\11\uffff";
+    static final String DFA1_minS =
+        "\2\125\2\uffff\1\0\5\uffff";
+    static final String DFA1_maxS =
+        "\1\125\1\170\2\uffff\1\0\5\uffff";
+    static final String DFA1_acceptS =
+        "\2\uffff\2\2\1\uffff\4\2\1\1";
+    static final String DFA1_specialS =
+        "\1\0\1\1\2\uffff\1\2\5\uffff}>";
+    static final String[] DFA1_transitionS = {
+            "\1\1",
+            "\1\4\3\uffff\1\5\1\10\6\uffff\1\7\1\6\25\uffff\1\3",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA1_eot = DFA.unpackEncodedString(DFA1_eotS);
+    static final short[] DFA1_eof = DFA.unpackEncodedString(DFA1_eofS);
+    static final char[] DFA1_min = DFA.unpackEncodedStringToUnsignedChars(DFA1_minS);
+    static final char[] DFA1_max = DFA.unpackEncodedStringToUnsignedChars(DFA1_maxS);
+    static final short[] DFA1_accept = DFA.unpackEncodedString(DFA1_acceptS);
+    static final short[] DFA1_special = DFA.unpackEncodedString(DFA1_specialS);
+    static final short[][] DFA1_transition;
+
+    static {
+        int numStates = DFA1_transitionS.length;
+        DFA1_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA1_transition[i] = DFA.unpackEncodedString(DFA1_transitionS[i]);
+        }
+    }
+
+    class DFA1 extends DFA {
+
+        public DFA1(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 1;
+            this.eot = DFA1_eot;
+            this.eof = DFA1_eof;
+            this.min = DFA1_min;
+            this.max = DFA1_max;
+            this.accept = DFA1_accept;
+            this.special = DFA1_special;
+            this.transition = DFA1_transition;
+        }
+        public String getDescription() {
+            return "409:4: ( package_statement )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA1_0 = input.LA(1);
+
+                         
+                        int index1_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA1_0==ID) && (((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoft!
 Keywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.RULE)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords!
 .TEMPLATE))))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) &&
 validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.PACKAGE)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)!
 )))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoft!
 Keywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPL
ATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))))) {s = 1;}
+
+                        else if ( (LA1_0==EOF) ) {s = 2;}
+
+                         
+                        input.seek(index1_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA1_1 = input.LA(1);
+
+                         
+                        int index1_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA1_1==MISC) && ((((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||((validateIdentifierKey(DroolsSoftKeywords.DATE!
 ) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))))) {s = 3;}
+
+                        else if ( (LA1_1==ID) && (((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(Droo!
 lsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||((validateIdentifierKey(DroolsSoftKeywords.PACKAGE)))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((v!
 alidateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, 
DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((!
 validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.RULE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKe!
 ywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)
)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") &&!
  validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))))) {s = 4;}
+
+                        else if ( (LA1_1==STRING) && ((((validateIdentifierKey(DroolsSoftKeywords.RULE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))))) {s = 5;}
+
+                        else if ( (LA1_1==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 6;}
+
+                        else if ( (LA1_1==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 7;}
+
+                        else if ( (LA1_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))))) {s = 8;}
+
+                         
+                        input.seek(index1_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA1_4 = input.LA(1);
+
+                         
+                        int index1_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.PACKAGE)))) ) {s = 9;}
+
+                        else if ( (((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.RULE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) ) {s = 8;}
+
+                         
+                        input.seek(index1_4);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 1, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA5_eotS =
+        "\20\uffff";
+    static final String DFA5_eofS =
+        "\20\uffff";
+    static final String DFA5_minS =
+        "\2\125\3\uffff\2\0\11\uffff";
+    static final String DFA5_maxS =
+        "\1\125\1\170\3\uffff\2\0\11\uffff";
+    static final String DFA5_acceptS =
+        "\2\uffff\3\1\2\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11";
+    static final String DFA5_specialS =
+        "\1\0\1\1\3\uffff\1\2\1\3\11\uffff}>";
+    static final String[] DFA5_transitionS = {
+            "\1\1",
+            "\1\5\3\uffff\1\6\1\4\6\uffff\1\3\1\7\25\uffff\1\2",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA5_eot = DFA.unpackEncodedString(DFA5_eotS);
+    static final short[] DFA5_eof = DFA.unpackEncodedString(DFA5_eofS);
+    static final char[] DFA5_min = DFA.unpackEncodedStringToUnsignedChars(DFA5_minS);
+    static final char[] DFA5_max = DFA.unpackEncodedStringToUnsignedChars(DFA5_maxS);
+    static final short[] DFA5_accept = DFA.unpackEncodedString(DFA5_acceptS);
+    static final short[] DFA5_special = DFA.unpackEncodedString(DFA5_specialS);
+    static final short[][] DFA5_transition;
+
+    static {
+        int numStates = DFA5_transitionS.length;
+        DFA5_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA5_transition[i] = DFA.unpackEncodedString(DFA5_transitionS[i]);
+        }
+    }
+
+    class DFA5 extends DFA {
+
+        public DFA5(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 5;
+            this.eot = DFA5_eot;
+            this.eof = DFA5_eof;
+            this.min = DFA5_min;
+            this.max = DFA5_max;
+            this.accept = DFA5_accept;
+            this.special = DFA5_special;
+            this.transition = DFA5_transition;
+        }
+        public String getDescription() {
+            return "465:1: statement options {k=2; } : ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA5_0 = input.LA(1);
+
+                         
+                        int index5_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA5_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsS!
 oftKeywords.TEMPLATE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.RULE)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.EN!
 ABLED)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateId
entifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.I!
 MPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(Drool!
 sSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)
))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))))) {s = 1;}
+
+                         
+                        input.seek(index5_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA5_1 = input.LA(1);
+
+                         
+                        int index5_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA5_1==MISC) && ((((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||((validateIdentifierKey(DroolsSoftKeywords.DATE!
 ) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))))) {s = 2;}
+
+                        else if ( (LA5_1==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 3;}
+
+                        else if ( (LA5_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))))) {s = 4;}
+
+                        else if ( (LA5_1==ID) && (((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((vali!
 dateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPL!
 ATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateId
entifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeyword!
 s.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.RULE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIde!
 ntifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftK
eywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(D!
 roolsSoftKeywords.DECLARE))))))) {s = 5;}
+
+                        else if ( (LA5_1==STRING) && (((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoft!
 Keywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||((validateIdentifierKey(DroolsSoftKeywords.RULE)))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdenti!
 fierKey(DroolsSoftKeywords.TEMPLATE))))||(((validateLT(1, DroolsSoftKe
ywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))))) {s = 6;}
+
+                        else if ( (LA5_1==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 7;}
+
+                         
+                        input.seek(index5_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA5_5 = input.LA(1);
+
+                         
+                        int index5_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( ((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) ) {s = 8;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) ) {s = 9;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))) ) {s = 10;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))) ) {s = 11;}
+
+                        else if ( ((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) ) {s = 12;}
+
+                        else if ( ((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))) ) {s = 13;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.RULE)))) ) {s = 14;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) ) {s = 15;}
+
+                         
+                        input.seek(index5_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA5_6 = input.LA(1);
+
+                         
+                        int index5_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) ) {s = 7;}
+
+                        else if ( ((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))&&((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) ) {s = 12;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.RULE)))) ) {s = 14;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) ) {s = 15;}
+
+                         
+                        input.seek(index5_6);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 5, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
     static final String DFA12_eotS =
         "\16\uffff";
     static final String DFA12_eofS =
         "\16\uffff";
     static final String DFA12_minS =
-        "\2\125\1\uffff\1\125\1\uffff\2\125\2\164\2\125\1\132\1\164\1\125";
+        "\2\125\1\uffff\1\125\1\uffff\1\125\1\164\3\125\2\164\1\132\1\125";
     static final String DFA12_maxS =
-        "\1\132\1\134\1\uffff\1\163\1\uffff\1\163\1\125\2\164\3\163\1\164"+
-        "\1\163";
+        "\1\132\1\134\1\uffff\1\163\1\uffff\1\125\1\164\3\163\2\164\2\163";
     static final String DFA12_acceptS =
         "\2\uffff\1\2\1\uffff\1\1\11\uffff";
     static final String DFA12_specialS =
@@ -17445,17 +17145,17 @@
             "\1\2\2\uffff\1\2\1\uffff\1\1",
             "\1\3\4\uffff\1\2\1\uffff\1\4",
             "",
-            "\1\5\1\6\3\uffff\1\2\2\4\1\uffff\1\2\24\uffff\1\7",
+            "\1\7\1\5\3\uffff\1\2\2\4\1\uffff\1\2\24\uffff\1\6",
             "",
-            "\2\2\3\uffff\1\2\2\4\1\uffff\1\2\24\uffff\1\10",
+            "\1\10",
             "\1\11",
-            "\1\12",
-            "\1\13",
-            "\1\4\1\6\3\uffff\1\2\30\uffff\1\14",
-            "\1\4\4\uffff\1\2\2\4\26\uffff\1\7",
-            "\1\2\2\4\26\uffff\1\10",
+            "\2\2\3\uffff\1\2\2\4\1\uffff\1\2\24\uffff\1\12",
+            "\1\4\1\5\3\uffff\1\2\30\uffff\1\13",
+            "\1\4\4\uffff\1\2\2\4\26\uffff\1\6",
+            "\1\14",
             "\1\15",
-            "\1\4\4\uffff\1\2\30\uffff\1\14"
+            "\1\2\2\4\26\uffff\1\12",
+            "\1\4\4\uffff\1\2\30\uffff\1\13"
     };
 
     static final short[] DFA12_eot = DFA.unpackEncodedString(DFA12_eotS);
@@ -17488,7 +17188,7 @@
             this.transition = DFA12_transition;
         }
         public String getDescription() {
-            return "552:3: ( parameters )?";
+            return "538:3: ( parameters )?";
         }
     }
     static final String DFA17_eotS =
@@ -17496,20 +17196,20 @@
     static final String DFA17_eofS =
         "\6\uffff";
     static final String DFA17_minS =
-        "\2\125\1\uffff\1\164\1\uffff\1\125";
+        "\2\125\1\164\2\uffff\1\125";
     static final String DFA17_maxS =
-        "\1\125\1\163\1\uffff\1\164\1\uffff\1\163";
+        "\1\125\1\163\1\164\2\uffff\1\163";
     static final String DFA17_acceptS =
-        "\2\uffff\1\1\1\uffff\1\2\1\uffff";
+        "\3\uffff\1\2\1\1\1\uffff";
     static final String DFA17_specialS =
         "\6\uffff}>";
     static final String[] DFA17_transitionS = {
             "\1\1",
-            "\2\2\4\uffff\2\4\26\uffff\1\3",
-            "",
+            "\2\4\4\uffff\2\3\26\uffff\1\2",
             "\1\5",
             "",
-            "\1\2\5\uffff\2\4\26\uffff\1\3"
+            "",
+            "\1\4\5\uffff\2\3\26\uffff\1\2"
     };
 
     static final short[] DFA17_eot = DFA.unpackEncodedString(DFA17_eotS);
@@ -17542,1831 +17242,846 @@
             this.transition = DFA17_transition;
         }
         public String getDescription() {
-            return "578:4: ( data_type )?";
+            return "564:4: ( data_type )?";
         }
     }
-    static final String DFA37_eotS =
-        "\31\uffff";
-    static final String DFA37_eofS =
-        "\31\uffff";
-    static final String DFA37_minS =
-        "\1\125\1\131\1\125\1\uffff\1\0\1\4\1\uffff\1\131\2\uffff\1\4\2\0"+
-        "\1\uffff\1\0\2\uffff\1\0\7\uffff";
-    static final String DFA37_maxS =
-        "\1\125\1\170\1\125\1\uffff\1\0\1\u0083\1\uffff\1\170\2\uffff\1\u0083"+
-        "\2\0\1\uffff\1\0\2\uffff\1\0\7\uffff";
-    static final String DFA37_acceptS =
-        "\3\uffff\1\14\2\uffff\1\11\1\uffff\1\1\1\4\3\uffff\1\13\1\uffff"+
-        "\1\2\1\6\1\uffff\1\1\1\3\1\5\1\7\1\10\1\12\1\1";
-    static final String DFA37_specialS =
-        "\1\10\1\11\1\4\1\uffff\1\7\1\1\1\uffff\1\5\2\uffff\1\6\1\3\1\0\1"+
-        "\uffff\1\12\2\uffff\1\2\7\uffff}>";
-    static final String[] DFA37_transitionS = {
-            "\1\1",
-            "\1\3\1\5\6\uffff\1\6\1\4\25\uffff\1\2",
-            "\1\7",
+    static final String DFA28_eotS =
+        "\12\uffff";
+    static final String DFA28_eofS =
+        "\12\uffff";
+    static final String DFA28_minS =
+        "\2\125\4\uffff\1\0\3\uffff";
+    static final String DFA28_maxS =
+        "\1\165\1\170\4\uffff\1\0\3\uffff";
+    static final String DFA28_acceptS =
+        "\2\uffff\4\2\1\uffff\1\1\2\2";
+    static final String DFA28_specialS =
+        "\1\2\1\0\4\uffff\1\1\3\uffff}>";
+    static final String[] DFA28_transitionS = {
+            "\1\1\7\uffff\1\2\2\uffff\1\2\24\uffff\1\2",
+            "\1\7\3\uffff\1\6\1\5\3\uffff\1\11\2\uffff\1\4\1\10\25\uffff"+
+            "\1\3",
             "",
-            "\1\uffff",
-            "\126\12\1\13\1\12\1\14\47\12",
             "",
-            "\1\16\36\uffff\1\15",
             "",
             "",
-            "\126\12\1\21\1\12\1\14\47\12",
             "\1\uffff",
-            "\1\uffff",
             "",
-            "\1\uffff",
             "",
-            "",
-            "\1\uffff",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
             ""
     };
 
-    static final short[] DFA37_eot = DFA.unpackEncodedString(DFA37_eotS);
-    static final short[] DFA37_eof = DFA.unpackEncodedString(DFA37_eofS);
-    static final char[] DFA37_min = DFA.unpackEncodedStringToUnsignedChars(DFA37_minS);
-    static final char[] DFA37_max = DFA.unpackEncodedStringToUnsignedChars(DFA37_maxS);
-    static final short[] DFA37_accept = DFA.unpackEncodedString(DFA37_acceptS);
-    static final short[] DFA37_special = DFA.unpackEncodedString(DFA37_specialS);
-    static final short[][] DFA37_transition;
+    static final short[] DFA28_eot = DFA.unpackEncodedString(DFA28_eotS);
+    static final short[] DFA28_eof = DFA.unpackEncodedString(DFA28_eofS);
+    static final char[] DFA28_min = DFA.unpackEncodedStringToUnsignedChars(DFA28_minS);
+    static final char[] DFA28_max = DFA.unpackEncodedStringToUnsignedChars(DFA28_maxS);
+    static final short[] DFA28_accept = DFA.unpackEncodedString(DFA28_acceptS);
+    static final short[] DFA28_special = DFA.unpackEncodedString(DFA28_specialS);
+    static final short[][] DFA28_transition;
 
     static {
-        int numStates = DFA37_transitionS.length;
-        DFA37_transition = new short[numStates][];
+        int numStates = DFA28_transitionS.length;
+        DFA28_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA37_transition[i] = DFA.unpackEncodedString(DFA37_transitionS[i]);
+            DFA28_transition[i] = DFA.unpackEncodedString(DFA28_transitionS[i]);
         }
     }
 
-    class DFA37 extends DFA {
+    class DFA28 extends DFA {
 
-        public DFA37(BaseRecognizer recognizer) {
+        public DFA28(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 37;
-            this.eot = DFA37_eot;
-            this.eof = DFA37_eof;
-            this.min = DFA37_min;
-            this.max = DFA37_max;
-            this.accept = DFA37_accept;
-            this.special = DFA37_special;
-            this.transition = DFA37_transition;
+            this.decisionNumber = 28;
+            this.eot = DFA28_eot;
+            this.eof = DFA28_eof;
+            this.min = DFA28_min;
+            this.max = DFA28_max;
+            this.accept = DFA28_accept;
+            this.special = DFA28_special;
+            this.transition = DFA28_transition;
         }
         public String getDescription() {
-            return "699:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect );";
+            return "652:3: ( extend_key rule_id )?";
         }
-        public int specialStateTransition(int s, IntStream input) throws NoViableAltException {
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA37_12 = input.LA(1);
+                        int LA28_1 = input.LA(1);
 
                          
-                        int index37_12 = input.index();
+                        int index28_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {s = 8;}
+                        if ( (LA28_1==MISC) && ((((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||((validateIdentifierKey(DroolsSoftKeywords.DAT!
 E) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))))) {s = 3;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.ENABLED))) ) {s = 6;}
+                        else if ( (LA28_1==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 4;}
 
-                         
-                        input.seek(index37_12);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 1 : 
-                        int LA37_5 = input.LA(1);
+                        else if ( (LA28_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))))) {s = 5;}
 
-                         
-                        int index37_5 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( ((LA37_5>=VT_COMPILATION_UNIT && LA37_5<=STRING)||LA37_5==COMMA||(LA37_5>=AT && LA37_5<=MULTI_LINE_COMMENT)) && (((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 10;}
+                        else if ( (LA28_1==STRING) && ((((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))))) {s = 6;}
 
-                        else if ( (LA37_5==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 11;}
+                        else if ( (LA28_1==ID) && (((validateIdentifierKey(DroolsSoftKeywords.EXTEND))))) {s = 7;}
 
-                        else if ( (LA37_5==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 12;}
+                        else if ( (LA28_1==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 8;}
 
-                         
-                        input.seek(index37_5);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 2 : 
-                        int LA37_17 = input.LA(1);
+                        else if ( (LA28_1==COLON) && (((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))))) {s = 9;}
 
                          
-                        int index37_17 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {s = 24;}
-
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.ENABLED))) ) {s = 6;}
-
-                         
-                        input.seek(index37_17);
+                        input.seek(index28_1);
                         if ( s>=0 ) return s;
                         break;
-                    case 3 : 
-                        int LA37_11 = input.LA(1);
+                    case 1 : 
+                        int LA28_6 = input.LA(1);
 
                          
-                        int index37_11 = input.index();
+                        int index28_6 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {s = 18;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))) ) {s = 7;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.ENABLED))) ) {s = 6;}
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) ) {s = 9;}
 
                          
-                        input.seek(index37_11);
+                        input.seek(index28_6);
                         if ( s>=0 ) return s;
                         break;
-                    case 4 : 
-                        int LA37_2 = input.LA(1);
+                    case 2 : 
+                        int LA28_0 = input.LA(1);
 
                          
-                        int index37_2 = input.index();
+                        int index28_0 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA37_2==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))||(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(!
 2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))))) {s = 7;}
+                        if ( (LA28_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))||((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||!
 ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))))) {s = 1;}
 
-                         
-                        input.seek(index37_2);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 5 : 
-                        int LA37_7 = input.LA(1);
+                        else if ( (LA28_0==AT||LA28_0==WHEN||LA28_0==THEN) ) {s = 2;}
 
                          
-                        int index37_7 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (LA37_7==MISC) && ((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))) {s = 13;}
-
-                        else if ( (LA37_7==STRING) && (((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))))) {s = 14;}
-
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))) ) {s = 15;}
-
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))) ) {s = 16;}
-
-                         
-                        input.seek(index37_7);
+                        input.seek(index28_0);
                         if ( s>=0 ) return s;
                         break;
-                    case 6 : 
-                        int LA37_10 = input.LA(1);
-
-                         
-                        int index37_10 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (LA37_10==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 12;}
-
-                        else if ( ((LA37_10>=VT_COMPILATION_UNIT && LA37_10<=STRING)||LA37_10==COMMA||(LA37_10>=AT && LA37_10<=MULTI_LINE_COMMENT)) && (((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 10;}
-
-                        else if ( (LA37_10==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 17;}
-
-                         
-                        input.seek(index37_10);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 7 : 
-                        int LA37_4 = input.LA(1);
-
-                         
-                        int index37_4 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {s = 8;}
-
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.DURATION))) ) {s = 9;}
-
-                         
-                        input.seek(index37_4);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 8 : 
-                        int LA37_0 = input.LA(1);
-
-                         
-                        int index37_0 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (LA37_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifi!
 erKey(DroolsSoftKeywords.DURATION))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))))) {s = 1;}
-
-                         
-                        input.seek(index37_0);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 9 : 
-                        int LA37_1 = input.LA(1);
-
-                         
-                        int index37_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (LA37_1==MISC) && (((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))||(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateL!
 T(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))))) {s = 2;}
-
-                        else if ( (LA37_1==STRING) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 3;}
-
-                        else if ( (LA37_1==INT) && (((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))))) {s = 4;}
-
-                        else if ( (LA37_1==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 5;}
-
-                        else if ( (LA37_1==BOOL) && ((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))) {s = 6;}
-
-                         
-                        input.seek(index37_1);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 10 : 
-                        int LA37_14 = input.LA(1);
-
-                         
-                        int index37_14 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))) ) {s = 19;}
-
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))) ) {s = 20;}
-
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))) ) {s = 21;}
-
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))) ) {s = 22;}
-
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))) ) {s = 23;}
-
-                         
-                        input.seek(index37_14);
-                        if ( s>=0 ) return s;
-                        break;
             }
-            if (backtracking>0) {failed=true; return -1;}
+            if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 37, _s, input);
+                new NoViableAltException(getDescription(), 28, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA54_eotS =
-        "\174\uffff";
-    static final String DFA54_eofS =
-        "\174\uffff";
-    static final String DFA54_minS =
-        "\3\125\2\0\2\125\1\164\1\0\3\uffff\1\126\1\125\1\126\1\132\1\uffff"+
-        "\1\125\1\164\1\125\1\126\1\125\1\126\1\132\1\125\2\0\1\125\1\164"+
-        "\2\125\2\0\1\125\1\0\1\4\10\125\2\uffff\1\126\1\132\1\125\1\0\2"+
-        "\125\1\0\1\4\10\125\1\uffff\1\125\1\uffff\1\4\30\0\1\uffff\4\0\1"+
-        "\uffff\34\0";
-    static final String DFA54_maxS =
-        "\2\132\1\163\2\0\1\132\1\125\1\164\1\0\3\uffff\1\163\1\125\2\163"+
-        "\1\uffff\1\125\1\164\1\134\1\163\1\134\3\163\2\0\1\125\1\164\1\134"+
-        "\1\163\2\0\1\125\1\0\1\u0083\1\125\1\163\6\162\2\uffff\3\163\1\0"+
-        "\1\143\1\125\1\0\1\u0083\1\125\1\163\6\162\1\uffff\1\163\1\uffff"+
-        "\1\u0083\30\0\1\uffff\4\0\1\uffff\34\0";
-    static final String DFA54_acceptS =
-        "\11\uffff\1\1\2\2\4\uffff\1\3\33\uffff\2\3\20\uffff\1\3\1\uffff"+
-        "\1\3\31\uffff\1\3\4\uffff\1\3\34\uffff";
-    static final String DFA54_specialS =
-        "\2\uffff\1\12\1\6\1\5\3\uffff\1\4\20\uffff\1\7\1\0\4\uffff\1\3\1"+
-        "\11\1\uffff\1\1\16\uffff\1\10\2\uffff\1\2\107\uffff}>";
-    static final String[] DFA54_transitionS = {
-            "\1\2\4\uffff\1\1",
-            "\1\3\4\uffff\1\4",
-            "\1\11\1\6\3\uffff\1\10\3\uffff\1\5\24\uffff\1\7",
+    static final String DFA37_eotS =
+        "\16\uffff";
+    static final String DFA37_eofS =
+        "\16\uffff";
+    static final String DFA37_minS =
+        "\1\125\1\0\14\uffff";
+    static final String DFA37_maxS =
+        "\1\125\1\0\14\uffff";
+    static final String DFA37_acceptS =
+        "\2\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14";
+    static final String DFA37_specialS =
+        "\1\0\1\1\14\uffff}>";
+    static final String[] DFA37_transitionS = {
+            "\1\1",
             "\1\uffff",
-            "\1\uffff",
-            "\1\14\4\uffff\1\15",
-            "\1\16",
-            "\1\17",
-            "\1\uffff",
             "",
             "",
             "",
-            "\1\21\3\uffff\1\23\30\uffff\1\22",
-            "\1\24",
-            "\1\6\3\uffff\1\25\30\uffff\1\7",
-            "\1\25\30\uffff\1\7",
             "",
-            "\1\26",
-            "\1\27",
-            "\1\30\4\uffff\1\31\1\uffff\1\32",
-            "\1\33\3\uffff\1\35\30\uffff\1\34",
-            "\1\36\4\uffff\1\37\1\uffff\1\40",
-            "\1\21\3\uffff\1\23\30\uffff\1\22",
-            "\1\23\30\uffff\1\22",
-            "\1\45\1\44\3\uffff\1\42\3\uffff\1\41\14\uffff\1\46\1\47\1\50"+
-            "\1\51\1\52\1\53\2\uffff\1\43",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\56",
-            "\1\57",
-            "\1\60\4\uffff\1\61\1\uffff\1\62",
-            "\1\67\1\66\3\uffff\1\64\3\uffff\1\63\14\uffff\1\70\1\71\1\72"+
-            "\1\73\1\74\1\75\2\uffff\1\65",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\77",
-            "\1\uffff",
-            "\157\101\1\102\1\103\17\101",
-            "\1\104",
-            "\1\106\3\uffff\1\107\1\114\6\uffff\1\112\1\110\16\uffff\1\111"+
-            "\1\113\1\105",
-            "\1\115\3\uffff\1\107\1\116\6\uffff\1\112\1\110\16\uffff\1\111"+
-            "\1\113",
-            "\1\115\3\uffff\1\107\1\116\6\uffff\1\112\1\110\16\uffff\1\111"+
-            "\1\113",
-            "\1\115\3\uffff\1\107\1\116\6\uffff\1\112\1\110\16\uffff\1\111"+
-            "\1\113",
-            "\1\115\3\uffff\1\107\1\116\6\uffff\1\112\1\110\16\uffff\1\111"+
-            "\1\113",
-            "\1\115\3\uffff\1\107\1\116\6\uffff\1\112\1\110\16\uffff\1\111"+
-            "\1\113",
-            "\1\115\3\uffff\1\107\1\116\6\uffff\1\112\1\110\16\uffff\1\111"+
-            "\1\113",
             "",
             "",
-            "\1\33\3\uffff\1\35\30\uffff\1\34",
-            "\1\35\30\uffff\1\34",
-            "\1\122\1\121\3\uffff\1\131\3\uffff\1\117\14\uffff\1\123\1\124"+
-            "\1\125\1\126\1\127\1\130\2\uffff\1\120",
-            "\1\uffff",
-            "\1\133\6\uffff\1\135\6\uffff\1\134",
-            "\1\136",
-            "\1\uffff",
-            "\157\140\1\141\1\142\17\140",
-            "\1\143",
-            "\1\145\3\uffff\1\146\1\144\6\uffff\1\151\1\147\16\uffff\1\150"+
-            "\1\152\1\153",
-            "\1\154\3\uffff\1\146\1\155\6\uffff\1\151\1\147\16\uffff\1\150"+
-            "\1\152",
-            "\1\154\3\uffff\1\146\1\155\6\uffff\1\151\1\147\16\uffff\1\150"+
-            "\1\152",
-            "\1\154\3\uffff\1\146\1\155\6\uffff\1\151\1\147\16\uffff\1\150"+
-            "\1\152",
-            "\1\154\3\uffff\1\146\1\155\6\uffff\1\151\1\147\16\uffff\1\150"+
-            "\1\152",
-            "\1\154\3\uffff\1\146\1\155\6\uffff\1\151\1\147\16\uffff\1\150"+
-            "\1\152",
-            "\1\154\3\uffff\1\146\1\155\6\uffff\1\151\1\147\16\uffff\1\150"+
-            "\1\152",
             "",
-            "\1\160\1\157\3\uffff\1\167\1\173\1\32\6\uffff\1\172\1\171\5"+
-            "\uffff\1\170\1\161\1\162\1\163\1\164\1\165\1\166\2\uffff\1\156",
             "",
-            "\157\101\1\102\1\103\17\101",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
             "",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
             "",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff"
+            "",
+            ""
     };
 
-    static final short[] DFA54_eot = DFA.unpackEncodedString(DFA54_eotS);
-    static final short[] DFA54_eof = DFA.unpackEncodedString(DFA54_eofS);
-    static final char[] DFA54_min = DFA.unpackEncodedStringToUnsignedChars(DFA54_minS);
-    static final char[] DFA54_max = DFA.unpackEncodedStringToUnsignedChars(DFA54_maxS);
-    static final short[] DFA54_accept = DFA.unpackEncodedString(DFA54_acceptS);
-    static final short[] DFA54_special = DFA.unpackEncodedString(DFA54_specialS);
-    static final short[][] DFA54_transition;
+    static final short[] DFA37_eot = DFA.unpackEncodedString(DFA37_eotS);
+    static final short[] DFA37_eof = DFA.unpackEncodedString(DFA37_eofS);
+    static final char[] DFA37_min = DFA.unpackEncodedStringToUnsignedChars(DFA37_minS);
+    static final char[] DFA37_max = DFA.unpackEncodedStringToUnsignedChars(DFA37_maxS);
+    static final short[] DFA37_accept = DFA.unpackEncodedString(DFA37_acceptS);
+    static final short[] DFA37_special = DFA.unpackEncodedString(DFA37_specialS);
+    static final short[][] DFA37_transition;
 
     static {
-        int numStates = DFA54_transitionS.length;
-        DFA54_transition = new short[numStates][];
+        int numStates = DFA37_transitionS.length;
+        DFA37_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA54_transition[i] = DFA.unpackEncodedString(DFA54_transitionS[i]);
+            DFA37_transition[i] = DFA.unpackEncodedString(DFA37_transitionS[i]);
         }
     }
 
-    class DFA54 extends DFA {
+    class DFA37 extends DFA {
 
-        public DFA54(BaseRecognizer recognizer) {
+        public DFA37(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 54;
-            this.eot = DFA54_eot;
-            this.eof = DFA54_eof;
-            this.min = DFA54_min;
-            this.max = DFA54_max;
-            this.accept = DFA54_accept;
-            this.special = DFA54_special;
-            this.transition = DFA54_transition;
+            this.decisionNumber = 37;
+            this.eot = DFA37_eot;
+            this.eof = DFA37_eof;
+            this.min = DFA37_min;
+            this.max = DFA37_max;
+            this.accept = DFA37_accept;
+            this.special = DFA37_special;
+            this.transition = DFA37_transition;
         }
         public String getDescription() {
-            return "881:10: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )";
+            return "679:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect );";
         }
-        public int specialStateTransition(int s, IntStream input) throws NoViableAltException {
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA54_26 = input.LA(1);
+                        int LA37_0 = input.LA(1);
 
                          
-                        int index54_26 = input.index();
+                        int index37_0 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred6()) ) {s = 9;}
+                        if ( (LA37_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))|!
 |((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))))) {s = 1;}
 
-                        else if ( (true) ) {s = 45;}
-
                          
-                        input.seek(index54_26);
+                        input.seek(index37_0);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA54_34 = input.LA(1);
+                        int LA37_1 = input.LA(1);
 
                          
-                        int index54_34 = input.index();
+                        int index37_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred6()) ) {s = 9;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) ) {s = 2;}
 
-                        else if ( (true) ) {s = 64;}
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))) ) {s = 3;}
 
-                         
-                        input.seek(index54_34);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 2 : 
-                        int LA54_52 = input.LA(1);
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))) ) {s = 4;}
 
-                         
-                        int index54_52 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred6()) ) {s = 9;}
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.DURATION)))) ) {s = 5;}
 
-                        else if ( (true) ) {s = 95;}
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))) ) {s = 6;}
 
-                         
-                        input.seek(index54_52);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 3 : 
-                        int LA54_31 = input.LA(1);
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))) ) {s = 7;}
 
-                         
-                        int index54_31 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred6()) ) {s = 9;}
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))) ) {s = 8;}
 
-                        else if ( (true) ) {s = 62;}
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))) ) {s = 9;}
 
-                         
-                        input.seek(index54_31);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 4 : 
-                        int LA54_8 = input.LA(1);
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))) ) {s = 10;}
 
-                         
-                        int index54_8 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (((synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.FORALL)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||synpred6()||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EVAL))))) ) {s = 9;}
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))) ) {s = 11;}
 
-                        else if ( (true) ) {s = 16;}
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))) ) {s = 12;}
 
-                         
-                        input.seek(index54_8);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 5 : 
-                        int LA54_4 = input.LA(1);
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) ) {s = 13;}
 
                          
-                        int index54_4 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred6()) ) {s = 9;}
-
-                        else if ( (true) ) {s = 11;}
-
-                         
-                        input.seek(index54_4);
+                        input.seek(index37_1);
                         if ( s>=0 ) return s;
                         break;
-                    case 6 : 
-                        int LA54_3 = input.LA(1);
-
-                         
-                        int index54_3 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred6()) ) {s = 9;}
-
-                        else if ( (true) ) {s = 10;}
-
-                         
-                        input.seek(index54_3);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 7 : 
-                        int LA54_25 = input.LA(1);
-
-                         
-                        int index54_25 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred6()) ) {s = 9;}
-
-                        else if ( (true) ) {s = 44;}
-
-                         
-                        input.seek(index54_25);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 8 : 
-                        int LA54_49 = input.LA(1);
-
-                         
-                        int index54_49 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred6()) ) {s = 9;}
-
-                        else if ( (true) ) {s = 90;}
-
-                         
-                        input.seek(index54_49);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 9 : 
-                        int LA54_32 = input.LA(1);
-
-                         
-                        int index54_32 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred6()) ) {s = 9;}
-
-                        else if ( (true) ) {s = 45;}
-
-                         
-                        input.seek(index54_32);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 10 : 
-                        int LA54_2 = input.LA(1);
-
-                         
-                        int index54_2 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (LA54_2==COLON) ) {s = 5;}
-
-                        else if ( (LA54_2==DOT) ) {s = 6;}
-
-                        else if ( (LA54_2==LEFT_SQUARE) ) {s = 7;}
-
-                        else if ( (LA54_2==LEFT_PAREN) ) {s = 8;}
-
-                        else if ( (LA54_2==ID) && (((synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdent!
 ifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||((synpred6()&&validateNotWithBinding())&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {s = 9;}
-
-                         
-                        input.seek(index54_2);
-                        if ( s>=0 ) return s;
-                        break;
             }
-            if (backtracking>0) {failed=true; return -1;}
+            if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 54, _s, input);
+                new NoViableAltException(getDescription(), 37, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA55_eotS =
-        "\174\uffff";
-    static final String DFA55_eofS =
-        "\174\uffff";
-    static final String DFA55_minS =
-        "\3\125\2\0\1\125\1\0\1\uffff\1\125\1\164\2\uffff\1\126\1\125\1\uffff"+
-        "\1\126\1\132\1\125\1\164\1\125\1\126\1\125\1\126\1\132\1\125\2\0"+
-        "\1\125\1\164\2\125\2\0\1\125\1\4\10\125\1\0\2\uffff\1\126\1\132"+
-        "\1\125\1\0\2\125\1\0\1\4\10\125\1\uffff\1\125\1\4\15\0\1\uffff\13"+
-        "\0\1\uffff\4\0\1\uffff\34\0";
-    static final String DFA55_maxS =
-        "\2\132\1\163\2\0\1\132\1\0\1\uffff\1\125\1\164\2\uffff\1\163\1\125"+
-        "\1\uffff\2\163\1\125\1\164\1\134\1\163\1\134\3\163\2\0\1\125\1\164"+
-        "\1\134\1\163\2\0\1\125\1\u0083\1\125\1\163\6\162\1\0\2\uffff\3\163"+
-        "\1\0\1\143\1\125\1\0\1\u0083\1\125\1\163\6\162\1\uffff\1\163\1\u0083"+
-        "\15\0\1\uffff\13\0\1\uffff\4\0\1\uffff\34\0";
-    static final String DFA55_acceptS =
-        "\7\uffff\1\1\2\uffff\2\2\2\uffff\1\3\35\uffff\2\3\20\uffff\1\3\17"+
-        "\uffff\1\3\13\uffff\1\3\4\uffff\1\3\34\uffff";
-    static final String DFA55_specialS =
-        "\2\uffff\1\11\1\0\1\12\1\uffff\1\2\22\uffff\1\7\1\5\4\uffff\1\6"+
-        "\1\4\12\uffff\1\10\5\uffff\1\3\2\uffff\1\1\107\uffff}>";
-    static final String[] DFA55_transitionS = {
-            "\1\2\4\uffff\1\1",
-            "\1\3\4\uffff\1\4",
-            "\1\7\1\10\3\uffff\1\6\3\uffff\1\5\24\uffff\1\11",
+    static final String DFA69_eotS =
+        "\15\uffff";
+    static final String DFA69_eofS =
+        "\15\uffff";
+    static final String DFA69_minS =
+        "\1\124\1\0\13\uffff";
+    static final String DFA69_maxS =
+        "\1\165\1\0\13\uffff";
+    static final String DFA69_acceptS =
+        "\2\uffff\1\2\11\uffff\1\1";
+    static final String DFA69_specialS =
+        "\1\uffff\1\0\13\uffff}>";
+    static final String[] DFA69_transitionS = {
+            "\3\2\1\uffff\1\2\1\uffff\1\1\2\2\6\uffff\2\2\3\uffff\1\2\14"+
+            "\uffff\1\2",
             "\1\uffff",
-            "\1\uffff",
-            "\1\14\4\uffff\1\15",
-            "\1\uffff",
             "",
-            "\1\17",
-            "\1\20",
             "",
             "",
-            "\1\21\3\uffff\1\23\30\uffff\1\22",
-            "\1\24",
             "",
-            "\1\10\3\uffff\1\25\30\uffff\1\11",
-            "\1\25\30\uffff\1\11",
-            "\1\26",
-            "\1\27",
-            "\1\30\4\uffff\1\31\1\uffff\1\32",
-            "\1\33\3\uffff\1\35\30\uffff\1\34",
-            "\1\36\4\uffff\1\37\1\uffff\1\40",
-            "\1\21\3\uffff\1\23\30\uffff\1\22",
-            "\1\23\30\uffff\1\22",
-            "\1\44\1\43\3\uffff\1\53\3\uffff\1\41\14\uffff\1\45\1\46\1\47"+
-            "\1\50\1\51\1\52\2\uffff\1\42",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\56",
-            "\1\57",
-            "\1\60\4\uffff\1\61\1\uffff\1\62",
-            "\1\67\1\66\3\uffff\1\64\3\uffff\1\63\14\uffff\1\70\1\71\1\72"+
-            "\1\73\1\74\1\75\2\uffff\1\65",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\77",
-            "\157\100\1\101\1\102\17\100",
-            "\1\103",
-            "\1\104\3\uffff\1\105\1\112\6\uffff\1\110\1\106\16\uffff\1\107"+
-            "\1\111\1\113",
-            "\1\114\3\uffff\1\105\1\115\6\uffff\1\110\1\106\16\uffff\1\107"+
-            "\1\111",
-            "\1\114\3\uffff\1\105\1\115\6\uffff\1\110\1\106\16\uffff\1\107"+
-            "\1\111",
-            "\1\114\3\uffff\1\105\1\115\6\uffff\1\110\1\106\16\uffff\1\107"+
-            "\1\111",
-            "\1\114\3\uffff\1\105\1\115\6\uffff\1\110\1\106\16\uffff\1\107"+
-            "\1\111",
-            "\1\114\3\uffff\1\105\1\115\6\uffff\1\110\1\106\16\uffff\1\107"+
-            "\1\111",
-            "\1\114\3\uffff\1\105\1\115\6\uffff\1\110\1\106\16\uffff\1\107"+
-            "\1\111",
-            "\1\uffff",
             "",
             "",
-            "\1\33\3\uffff\1\35\30\uffff\1\34",
-            "\1\35\30\uffff\1\34",
-            "\1\123\1\122\3\uffff\1\120\3\uffff\1\117\14\uffff\1\124\1\125"+
-            "\1\126\1\127\1\130\1\131\2\uffff\1\121",
-            "\1\uffff",
-            "\1\133\6\uffff\1\135\6\uffff\1\134",
-            "\1\136",
-            "\1\uffff",
-            "\157\140\1\141\1\142\17\140",
-            "\1\143",
-            "\1\144\3\uffff\1\145\1\152\6\uffff\1\150\1\146\16\uffff\1\147"+
-            "\1\151\1\153",
-            "\1\154\3\uffff\1\145\1\155\6\uffff\1\150\1\146\16\uffff\1\147"+
-            "\1\151",
-            "\1\154\3\uffff\1\145\1\155\6\uffff\1\150\1\146\16\uffff\1\147"+
-            "\1\151",
-            "\1\154\3\uffff\1\145\1\155\6\uffff\1\150\1\146\16\uffff\1\147"+
-            "\1\151",
-            "\1\154\3\uffff\1\145\1\155\6\uffff\1\150\1\146\16\uffff\1\147"+
-            "\1\151",
-            "\1\154\3\uffff\1\145\1\155\6\uffff\1\150\1\146\16\uffff\1\147"+
-            "\1\151",
-            "\1\154\3\uffff\1\145\1\155\6\uffff\1\150\1\146\16\uffff\1\147"+
-            "\1\151",
             "",
-            "\1\160\1\157\3\uffff\1\167\1\173\1\32\6\uffff\1\172\1\171\5"+
-            "\uffff\1\170\1\161\1\162\1\163\1\164\1\165\1\166\2\uffff\1\156",
-            "\157\100\1\101\1\102\17\100",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
             "",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
             "",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
             "",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff"
+            ""
     };
 
-    static final short[] DFA55_eot = DFA.unpackEncodedString(DFA55_eotS);
-    static final short[] DFA55_eof = DFA.unpackEncodedString(DFA55_eofS);
-    static final char[] DFA55_min = DFA.unpackEncodedStringToUnsignedChars(DFA55_minS);
-    static final char[] DFA55_max = DFA.unpackEncodedStringToUnsignedChars(DFA55_maxS);
-    static final short[] DFA55_accept = DFA.unpackEncodedString(DFA55_acceptS);
-    static final short[] DFA55_special = DFA.unpackEncodedString(DFA55_specialS);
-    static final short[][] DFA55_transition;
+    static final short[] DFA69_eot = DFA.unpackEncodedString(DFA69_eotS);
+    static final short[] DFA69_eof = DFA.unpackEncodedString(DFA69_eofS);
+    static final char[] DFA69_min = DFA.unpackEncodedStringToUnsignedChars(DFA69_minS);
+    static final char[] DFA69_max = DFA.unpackEncodedStringToUnsignedChars(DFA69_maxS);
+    static final short[] DFA69_accept = DFA.unpackEncodedString(DFA69_acceptS);
+    static final short[] DFA69_special = DFA.unpackEncodedString(DFA69_specialS);
+    static final short[][] DFA69_transition;
 
     static {
-        int numStates = DFA55_transitionS.length;
-        DFA55_transition = new short[numStates][];
+        int numStates = DFA69_transitionS.length;
+        DFA69_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA55_transition[i] = DFA.unpackEncodedString(DFA55_transitionS[i]);
+            DFA69_transition[i] = DFA.unpackEncodedString(DFA69_transitionS[i]);
         }
     }
 
-    class DFA55 extends DFA {
+    class DFA69 extends DFA {
 
-        public DFA55(BaseRecognizer recognizer) {
+        public DFA69(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 55;
-            this.eot = DFA55_eot;
-            this.eof = DFA55_eof;
-            this.min = DFA55_min;
-            this.max = DFA55_max;
-            this.accept = DFA55_accept;
-            this.special = DFA55_special;
-            this.transition = DFA55_transition;
+            this.decisionNumber = 69;
+            this.eot = DFA69_eot;
+            this.eof = DFA69_eof;
+            this.min = DFA69_min;
+            this.max = DFA69_max;
+            this.accept = DFA69_accept;
+            this.special = DFA69_special;
+            this.transition = DFA69_transition;
         }
         public String getDescription() {
-            return "897:3: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )";
+            return "1046:3: ( ( LEFT_PAREN )=>args= paren_chunk )?";
         }
-        public int specialStateTransition(int s, IntStream input) throws NoViableAltException {
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA55_3 = input.LA(1);
+                        int LA69_1 = input.LA(1);
 
                          
-                        int index55_3 = input.index();
+                        int index69_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred7()) ) {s = 7;}
+                        if ( (synpred8_DRL()) ) {s = 12;}
 
-                        else if ( (true) ) {s = 10;}
+                        else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index55_3);
+                        input.seek(index69_1);
                         if ( s>=0 ) return s;
                         break;
-                    case 1 : 
-                        int LA55_52 = input.LA(1);
-
-                         
-                        int index55_52 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred7()) ) {s = 7;}
-
-                        else if ( (true) ) {s = 95;}
-
-                         
-                        input.seek(index55_52);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 2 : 
-                        int LA55_6 = input.LA(1);
-
-                         
-                        int index55_6 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( ((synpred7()||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EVAL)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.FORALL))))) ) {s = 7;}
-
-                        else if ( (true) ) {s = 14;}
-
-                         
-                        input.seek(index55_6);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 3 : 
-                        int LA55_49 = input.LA(1);
-
-                         
-                        int index55_49 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred7()) ) {s = 7;}
-
-                        else if ( (true) ) {s = 90;}
-
-                         
-                        input.seek(index55_49);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 4 : 
-                        int LA55_32 = input.LA(1);
-
-                         
-                        int index55_32 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred7()) ) {s = 7;}
-
-                        else if ( (true) ) {s = 45;}
-
-                         
-                        input.seek(index55_32);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 5 : 
-                        int LA55_26 = input.LA(1);
-
-                         
-                        int index55_26 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred7()) ) {s = 7;}
-
-                        else if ( (true) ) {s = 45;}
-
-                         
-                        input.seek(index55_26);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 6 : 
-                        int LA55_31 = input.LA(1);
-
-                         
-                        int index55_31 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred7()) ) {s = 7;}
-
-                        else if ( (true) ) {s = 62;}
-
-                         
-                        input.seek(index55_31);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 7 : 
-                        int LA55_25 = input.LA(1);
-
-                         
-                        int index55_25 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred7()) ) {s = 7;}
-
-                        else if ( (true) ) {s = 44;}
-
-                         
-                        input.seek(index55_25);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 8 : 
-                        int LA55_43 = input.LA(1);
-
-                         
-                        int index55_43 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred7()) ) {s = 7;}
-
-                        else if ( (true) ) {s = 78;}
-
-                         
-                        input.seek(index55_43);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 9 : 
-                        int LA55_2 = input.LA(1);
-
-                         
-                        int index55_2 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (LA55_2==COLON) ) {s = 5;}
-
-                        else if ( (LA55_2==LEFT_PAREN) ) {s = 6;}
-
-                        else if ( (LA55_2==ID) && (((synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(!
 DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||((synpred7()&&validateNotWithBinding())&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {s = 7;}
-
-                        else if ( (LA55_2==DOT) ) {s = 8;}
-
-                        else if ( (LA55_2==LEFT_SQUARE) ) {s = 9;}
-
-                         
-                        input.seek(index55_2);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 10 : 
-                        int LA55_4 = input.LA(1);
-
-                         
-                        int index55_4 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred7()) ) {s = 7;}
-
-                        else if ( (true) ) {s = 11;}
-
-                         
-                        input.seek(index55_4);
-                        if ( s>=0 ) return s;
-                        break;
             }
-            if (backtracking>0) {failed=true; return -1;}
+            if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 55, _s, input);
+                new NoViableAltException(getDescription(), 69, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA66_eotS =
-        "\13\uffff";
-    static final String DFA66_eofS =
-        "\13\uffff";
-    static final String DFA66_minS =
-        "\1\125\1\132\2\4\1\0\1\125\1\0\4\uffff";
-    static final String DFA66_maxS =
-        "\1\125\1\132\2\u0083\1\0\1\134\1\0\4\uffff";
-    static final String DFA66_acceptS =
-        "\7\uffff\1\1\2\2\1\1";
-    static final String DFA66_specialS =
-        "\1\1\1\3\1\6\1\4\1\5\1\0\1\2\4\uffff}>";
-    static final String[] DFA66_transitionS = {
-            "\1\1",
-            "\1\2",
-            "\126\3\1\4\1\3\1\5\47\3",
-            "\126\3\1\6\1\3\1\5\47\3",
+    static final String DFA71_eotS =
+        "\16\uffff";
+    static final String DFA71_eofS =
+        "\16\uffff";
+    static final String DFA71_minS =
+        "\1\124\1\0\14\uffff";
+    static final String DFA71_maxS =
+        "\1\165\1\0\14\uffff";
+    static final String DFA71_acceptS =
+        "\2\uffff\1\2\1\3\11\uffff\1\1";
+    static final String DFA71_specialS =
+        "\1\uffff\1\0\14\uffff}>";
+    static final String[] DFA71_transitionS = {
+            "\3\3\1\uffff\1\3\1\uffff\1\1\2\3\6\uffff\2\3\3\uffff\1\3\12"+
+            "\uffff\1\2\1\uffff\1\3",
             "\1\uffff",
-            "\1\12\5\uffff\1\12\1\11",
-            "\1\uffff",
             "",
             "",
             "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
             ""
     };
 
-    static final short[] DFA66_eot = DFA.unpackEncodedString(DFA66_eotS);
-    static final short[] DFA66_eof = DFA.unpackEncodedString(DFA66_eofS);
-    static final char[] DFA66_min = DFA.unpackEncodedStringToUnsignedChars(DFA66_minS);
-    static final char[] DFA66_max = DFA.unpackEncodedStringToUnsignedChars(DFA66_maxS);
-    static final short[] DFA66_accept = DFA.unpackEncodedString(DFA66_acceptS);
-    static final short[] DFA66_special = DFA.unpackEncodedString(DFA66_specialS);
-    static final short[][] DFA66_transition;
+    static final short[] DFA71_eot = DFA.unpackEncodedString(DFA71_eotS);
+    static final short[] DFA71_eof = DFA.unpackEncodedString(DFA71_eofS);
+    static final char[] DFA71_min = DFA.unpackEncodedStringToUnsignedChars(DFA71_minS);
+    static final char[] DFA71_max = DFA.unpackEncodedStringToUnsignedChars(DFA71_maxS);
+    static final short[] DFA71_accept = DFA.unpackEncodedString(DFA71_acceptS);
+    static final short[] DFA71_special = DFA.unpackEncodedString(DFA71_specialS);
+    static final short[][] DFA71_transition;
 
     static {
-        int numStates = DFA66_transitionS.length;
-        DFA66_transition = new short[numStates][];
+        int numStates = DFA71_transitionS.length;
+        DFA71_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA66_transition[i] = DFA.unpackEncodedString(DFA66_transitionS[i]);
+            DFA71_transition[i] = DFA.unpackEncodedString(DFA71_transitionS[i]);
         }
     }
 
-    class DFA66 extends DFA {
+    class DFA71 extends DFA {
 
-        public DFA66(BaseRecognizer recognizer) {
+        public DFA71(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 66;
-            this.eot = DFA66_eot;
-            this.eof = DFA66_eof;
-            this.min = DFA66_min;
-            this.max = DFA66_max;
-            this.accept = DFA66_accept;
-            this.special = DFA66_special;
-            this.transition = DFA66_transition;
+            this.decisionNumber = 71;
+            this.eot = DFA71_eot;
+            this.eof = DFA71_eof;
+            this.min = DFA71_min;
+            this.max = DFA71_max;
+            this.accept = DFA71_accept;
+            this.special = DFA71_special;
+            this.transition = DFA71_transition;
         }
         public String getDescription() {
-            return "991:2: ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )?";
+            return "1060:4: ({...}? paren_chunk | square_chunk )?";
         }
-        public int specialStateTransition(int s, IntStream input) throws NoViableAltException {
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA66_5 = input.LA(1);
+                        int LA71_1 = input.LA(1);
 
                          
-                        int index66_5 = input.index();
+                        int index71_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA66_5==RIGHT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.RESULT)))) {s = 9;}
+                        if ( ((input.LA(1) == LEFT_PAREN)) ) {s = 13;}
 
-                        else if ( (LA66_5==ID||LA66_5==COMMA) && ((validateIdentifierKey(DroolsSoftKeywords.REVERSE)))) {s = 10;}
+                        else if ( (true) ) {s = 3;}
 
                          
-                        input.seek(index66_5);
+                        input.seek(index71_1);
                         if ( s>=0 ) return s;
                         break;
-                    case 1 : 
-                        int LA66_0 = input.LA(1);
-
-                         
-                        int index66_0 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (LA66_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 1;}
-
-                         
-                        input.seek(index66_0);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 2 : 
-                        int LA66_6 = input.LA(1);
-
-                         
-                        int index66_6 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.REVERSE))) ) {s = 10;}
-
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RESULT))) ) {s = 9;}
-
-                         
-                        input.seek(index66_6);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 3 : 
-                        int LA66_1 = input.LA(1);
-
-                         
-                        int index66_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (LA66_1==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 2;}
-
-                         
-                        input.seek(index66_1);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 4 : 
-                        int LA66_3 = input.LA(1);
-
-                         
-                        int index66_3 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (LA66_3==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 5;}
-
-                        else if ( ((LA66_3>=VT_COMPILATION_UNIT && LA66_3<=STRING)||LA66_3==COMMA||(LA66_3>=AT && LA66_3<=MULTI_LINE_COMMENT)) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 3;}
-
-                        else if ( (LA66_3==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 6;}
-
-                         
-                        input.seek(index66_3);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 5 : 
-                        int LA66_4 = input.LA(1);
-
-                         
-                        int index66_4 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.REVERSE))) ) {s = 7;}
-
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RESULT))) ) {s = 8;}
-
-                         
-                        input.seek(index66_4);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 6 : 
-                        int LA66_2 = input.LA(1);
-
-                         
-                        int index66_2 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( ((LA66_2>=VT_COMPILATION_UNIT && LA66_2<=STRING)||LA66_2==COMMA||(LA66_2>=AT && LA66_2<=MULTI_LINE_COMMENT)) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 3;}
-
-                        else if ( (LA66_2==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 4;}
-
-                        else if ( (LA66_2==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 5;}
-
-                         
-                        input.seek(index66_2);
-                        if ( s>=0 ) return s;
-                        break;
             }
-            if (backtracking>0) {failed=true; return -1;}
+            if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 66, _s, input);
+                new NoViableAltException(getDescription(), 71, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA84_eotS =
-        "\40\uffff";
-    static final String DFA84_eofS =
-        "\1\1\5\uffff\1\4\31\uffff";
-    static final String DFA84_minS =
-        "\1\133\1\uffff\2\125\1\uffff\1\0\1\125\1\0\3\4\6\0\1\4\16\0";
-    static final String DFA84_maxS =
-        "\1\144\1\uffff\1\160\1\163\1\uffff\1\0\1\163\1\0\3\u0083\6\0\1\u0083"+
-        "\16\0";
-    static final String DFA84_acceptS =
-        "\1\uffff\1\2\2\uffff\1\1\33\uffff";
-    static final String DFA84_specialS =
-        "\2\uffff\1\10\1\3\1\uffff\1\4\1\5\1\1\3\uffff\1\7\1\0\1\6\1\12\1"+
-        "\2\1\11\17\uffff}>";
-    static final String[] DFA84_transitionS = {
-            "\2\1\6\uffff\1\2\1\1",
+    static final String DFA81_eotS =
+        "\17\uffff";
+    static final String DFA81_eofS =
+        "\17\uffff";
+    static final String DFA81_minS =
+        "\2\125\12\uffff\1\0\2\uffff";
+    static final String DFA81_maxS =
+        "\1\132\1\163\12\uffff\1\0\2\uffff";
+    static final String DFA81_acceptS =
+        "\2\uffff\1\3\1\2\12\uffff\1\1";
+    static final String DFA81_specialS =
+        "\14\uffff\1\0\2\uffff}>";
+    static final String[] DFA81_transitionS = {
+            "\1\1\4\uffff\1\2",
+            "\2\3\3\uffff\1\14\3\uffff\1\3\14\uffff\6\3\2\uffff\1\3",
             "",
-            "\1\3\4\uffff\1\5\20\uffff\6\4",
-            "\1\6\1\1\2\uffff\1\4\1\7\3\uffff\1\1\2\uffff\2\4\10\uffff\6"+
-            "\1\2\4\1\10",
             "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
             "\1\uffff",
-            "\1\13\1\4\2\uffff\1\14\1\12\2\4\4\uffff\1\17\1\15\2\4\14\uffff"+
-            "\1\16\1\20\1\11",
-            "\1\uffff",
-            "\157\21\1\22\1\23\17\21",
-            "\157\24\1\25\1\26\17\24",
-            "\121\36\1\27\3\36\1\30\1\35\1\36\1\37\4\36\1\33\1\31\16\36\1"+
-            "\32\1\34\21\36",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\157\21\1\22\1\23\17\21",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff"
+            "",
+            ""
     };
 
-    static final short[] DFA84_eot = DFA.unpackEncodedString(DFA84_eotS);
-    static final short[] DFA84_eof = DFA.unpackEncodedString(DFA84_eofS);
-    static final char[] DFA84_min = DFA.unpackEncodedStringToUnsignedChars(DFA84_minS);
-    static final char[] DFA84_max = DFA.unpackEncodedStringToUnsignedChars(DFA84_maxS);
-    static final short[] DFA84_accept = DFA.unpackEncodedString(DFA84_acceptS);
-    static final short[] DFA84_special = DFA.unpackEncodedString(DFA84_specialS);
-    static final short[][] DFA84_transition;
+    static final short[] DFA81_eot = DFA.unpackEncodedString(DFA81_eotS);
+    static final short[] DFA81_eof = DFA.unpackEncodedString(DFA81_eofS);
+    static final char[] DFA81_min = DFA.unpackEncodedStringToUnsignedChars(DFA81_minS);
+    static final char[] DFA81_max = DFA.unpackEncodedStringToUnsignedChars(DFA81_maxS);
+    static final short[] DFA81_accept = DFA.unpackEncodedString(DFA81_acceptS);
+    static final short[] DFA81_special = DFA.unpackEncodedString(DFA81_specialS);
+    static final short[][] DFA81_transition;
 
     static {
-        int numStates = DFA84_transitionS.length;
-        DFA84_transition = new short[numStates][];
+        int numStates = DFA81_transitionS.length;
+        DFA81_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA84_transition[i] = DFA.unpackEncodedString(DFA84_transitionS[i]);
+            DFA81_transition[i] = DFA.unpackEncodedString(DFA81_transitionS[i]);
         }
     }
 
-    class DFA84 extends DFA {
+    class DFA81 extends DFA {
 
-        public DFA84(BaseRecognizer recognizer) {
+        public DFA81(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 84;
-            this.eot = DFA84_eot;
-            this.eof = DFA84_eof;
-            this.min = DFA84_min;
-            this.max = DFA84_max;
-            this.accept = DFA84_accept;
-            this.special = DFA84_special;
-            this.transition = DFA84_transition;
+            this.decisionNumber = 81;
+            this.eot = DFA81_eot;
+            this.eof = DFA81_eof;
+            this.min = DFA81_min;
+            this.max = DFA81_max;
+            this.accept = DFA81_accept;
+            this.special = DFA81_special;
+            this.transition = DFA81_transition;
         }
         public String getDescription() {
-            return "()* loopback of 1191:25: ({...}? => DOUBLE_PIPE and_restr_connective )*";
+            return "1133:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );";
         }
-        public int specialStateTransition(int s, IntStream input) throws NoViableAltException {
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA84_12 = input.LA(1);
+                        int LA81_12 = input.LA(1);
 
                          
-                        int index84_12 = input.index();
+                        int index81_12 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateRestr())) ) {s = 4;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.EVAL)))) ) {s = 14;}
 
-                        else if ( (true) ) {s = 1;}
+                        else if ( (true) ) {s = 3;}
 
                          
-                        input.seek(index84_12);
+                        input.seek(index81_12);
                         if ( s>=0 ) return s;
                         break;
-                    case 1 : 
-                        int LA84_7 = input.LA(1);
-
-                         
-                        int index84_7 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( ((validateRestr())) ) {s = 4;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index84_7);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 2 : 
-                        int LA84_15 = input.LA(1);
-
-                         
-                        int index84_15 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( ((validateRestr())) ) {s = 4;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index84_15);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 3 : 
-                        int LA84_3 = input.LA(1);
-
-                         
-                        int index84_3 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (LA84_3==DOT||LA84_3==COLON||(LA84_3>=EQUAL && LA84_3<=NOT_EQUAL)) ) {s = 1;}
-
-                        else if ( (LA84_3==ID) ) {s = 6;}
-
-                        else if ( (LA84_3==STRING||(LA84_3>=BOOL && LA84_3<=INT)||(LA84_3>=FLOAT && LA84_3<=NULL)) && ((validateRestr()))) {s = 4;}
-
-                        else if ( (LA84_3==LEFT_PAREN) ) {s = 7;}
-
-                        else if ( (LA84_3==LEFT_SQUARE) ) {s = 8;}
-
-                         
-                        input.seek(index84_3);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 4 : 
-                        int LA84_5 = input.LA(1);
-
-                         
-                        int index84_5 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( ((validateRestr())) ) {s = 4;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index84_5);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 5 : 
-                        int LA84_6 = input.LA(1);
-
-                         
-                        int index84_6 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (LA84_6==LEFT_SQUARE) ) {s = 9;}
-
-                        else if ( (LA84_6==EOF||LA84_6==DOT||(LA84_6>=COMMA && LA84_6<=RIGHT_PAREN)||(LA84_6>=DOUBLE_PIPE && LA84_6<=DOUBLE_AMPER)) && ((validateRestr()))) {s = 4;}
-
-                        else if ( (LA84_6==LEFT_PAREN) ) {s = 10;}
-
-                        else if ( (LA84_6==ID) ) {s = 11;}
-
-                        else if ( (LA84_6==STRING) ) {s = 12;}
-
-                        else if ( (LA84_6==INT) ) {s = 13;}
-
-                        else if ( (LA84_6==FLOAT) ) {s = 14;}
-
-                        else if ( (LA84_6==BOOL) ) {s = 15;}
-
-                        else if ( (LA84_6==NULL) ) {s = 16;}
-
-                         
-                        input.seek(index84_6);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 6 : 
-                        int LA84_13 = input.LA(1);
-
-                         
-                        int index84_13 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( ((validateRestr())) ) {s = 4;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index84_13);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 7 : 
-                        int LA84_11 = input.LA(1);
-
-                         
-                        int index84_11 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( ((validateRestr())) ) {s = 4;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index84_11);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 8 : 
-                        int LA84_2 = input.LA(1);
-
-                         
-                        int index84_2 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (LA84_2==ID) ) {s = 3;}
-
-                        else if ( ((LA84_2>=EQUAL && LA84_2<=NOT_EQUAL)) && ((validateRestr()))) {s = 4;}
-
-                        else if ( (LA84_2==LEFT_PAREN) ) {s = 5;}
-
-                         
-                        input.seek(index84_2);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 9 : 
-                        int LA84_16 = input.LA(1);
-
-                         
-                        int index84_16 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( ((validateRestr())) ) {s = 4;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index84_16);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 10 : 
-                        int LA84_14 = input.LA(1);
-
-                         
-                        int index84_14 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( ((validateRestr())) ) {s = 4;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index84_14);
-                        if ( s>=0 ) return s;
-                        break;
             }
-            if (backtracking>0) {failed=true; return -1;}
+            if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 84, _s, input);
+                new NoViableAltException(getDescription(), 81, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA85_eotS =
-        "\100\uffff";
-    static final String DFA85_eofS =
-        "\1\1\5\uffff\1\4\71\uffff";
-    static final String DFA85_minS =
-        "\1\133\1\uffff\2\125\1\uffff\2\125\2\4\1\125\7\0\5\4\52\0";
-    static final String DFA85_maxS =
-        "\1\144\1\uffff\1\160\1\163\1\uffff\1\160\1\163\2\u0083\1\163\7\0"+
-        "\5\u0083\52\0";
-    static final String DFA85_acceptS =
-        "\1\uffff\1\2\2\uffff\1\1\73\uffff";
-    static final String DFA85_specialS =
-        "\2\uffff\1\12\1\3\1\uffff\1\0\1\6\2\uffff\1\4\1\7\1\13\1\5\1\2\1"+
-        "\1\1\11\1\10\57\uffff}>";
-    static final String[] DFA85_transitionS = {
-            "\2\1\6\uffff\1\1\1\2",
+    static final String DFA86_eotS =
+        "\51\uffff";
+    static final String DFA86_eofS =
+        "\11\uffff\1\36\37\uffff";
+    static final String DFA86_minS =
+        "\2\125\7\uffff\1\125\5\uffff\1\4\1\uffff\1\0\15\uffff\2\0\1\uffff"+
+        "\5\0\2\uffff";
+    static final String DFA86_maxS =
+        "\1\160\1\163\7\uffff\1\163\5\uffff\1\u0083\1\uffff\1\0\15\uffff"+
+        "\2\0\1\uffff\5\0\2\uffff";
+    static final String DFA86_acceptS =
+        "\2\uffff\1\2\5\uffff\1\3\1\uffff\5\2\1\uffff\1\2\1\uffff\1\2\5\uffff"+
+        "\7\2\2\uffff\1\2\5\uffff\1\2\1\1";
+    static final String DFA86_specialS =
+        "\1\0\1\1\7\uffff\1\2\5\uffff\1\3\1\uffff\1\4\15\uffff\1\5\1\6\1"+
+        "\uffff\1\7\1\10\1\11\1\12\1\13\2\uffff}>";
+    static final String[] DFA86_transitionS = {
+            "\1\1\4\uffff\1\10\20\uffff\6\2",
+            "\1\11\3\uffff\1\12\1\17\6\uffff\1\15\1\13\16\uffff\1\14\1\16"+
+            "\1\20",
             "",
-            "\1\3\4\uffff\1\5\20\uffff\6\4",
-            "\1\6\1\1\2\uffff\1\4\1\7\3\uffff\1\1\2\uffff\2\4\10\uffff\6"+
-            "\1\2\4\1\10",
             "",
-            "\1\11\4\uffff\1\12\20\uffff\6\4",
-            "\1\13\1\4\2\uffff\1\14\1\21\2\4\4\uffff\1\17\1\15\2\4\14\uffff"+
-            "\1\16\1\20\1\22",
-            "\121\41\1\23\3\41\1\24\1\31\1\41\1\33\4\41\1\27\1\25\10\41\1"+
-            "\32\1\34\1\35\1\36\1\37\1\40\1\26\1\30\21\41",
-            "\157\42\1\43\1\44\17\42",
-            "\1\46\1\1\2\uffff\1\4\1\45\3\uffff\1\1\2\uffff\2\4\10\uffff"+
-            "\6\1\2\4\1\47",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\22\1\31\2\uffff\1\22\1\21\1\34\1\35\4\uffff\2\22\1\33\1\32"+
+            "\14\uffff\2\22\1\30",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\121\47\1\37\3\47\1\42\1\40\1\47\1\41\4\47\1\45\1\43\16\47\1"+
+            "\44\1\46\21\47",
+            "",
             "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
             "\1\uffff",
             "\1\uffff",
+            "",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
-            "\121\60\1\50\3\60\1\53\1\51\1\60\1\52\4\60\1\56\1\54\16\60\1"+
-            "\55\1\57\21\60",
-            "\157\61\1\62\1\63\17\61",
-            "\121\41\1\64\1\75\2\41\1\65\1\72\1\76\1\74\4\41\1\70\1\66\16"+
-            "\41\1\67\1\71\1\73\20\41",
-            "\126\41\1\77\1\76\1\74\47\41",
-            "\126\41\1\77\1\76\1\74\47\41",
             "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff"
+            "",
+            ""
     };
 
-    static final short[] DFA85_eot = DFA.unpackEncodedString(DFA85_eotS);
-    static final short[] DFA85_eof = DFA.unpackEncodedString(DFA85_eofS);
-    static final char[] DFA85_min = DFA.unpackEncodedStringToUnsignedChars(DFA85_minS);
-    static final char[] DFA85_max = DFA.unpackEncodedStringToUnsignedChars(DFA85_maxS);
-    static final short[] DFA85_accept = DFA.unpackEncodedString(DFA85_acceptS);
-    static final short[] DFA85_special = DFA.unpackEncodedString(DFA85_specialS);
-    static final short[][] DFA85_transition;
+    static final short[] DFA86_eot = DFA.unpackEncodedString(DFA86_eotS);
+    static final short[] DFA86_eof = DFA.unpackEncodedString(DFA86_eofS);
+    static final char[] DFA86_min = DFA.unpackEncodedStringToUnsignedChars(DFA86_minS);
+    static final char[] DFA86_max = DFA.unpackEncodedStringToUnsignedChars(DFA86_maxS);
+    static final short[] DFA86_accept = DFA.unpackEncodedString(DFA86_acceptS);
+    static final short[] DFA86_special = DFA.unpackEncodedString(DFA86_specialS);
+    static final short[][] DFA86_transition;
 
     static {
-        int numStates = DFA85_transitionS.length;
-        DFA85_transition = new short[numStates][];
+        int numStates = DFA86_transitionS.length;
+        DFA86_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA85_transition[i] = DFA.unpackEncodedString(DFA85_transitionS[i]);
+            DFA86_transition[i] = DFA.unpackEncodedString(DFA86_transitionS[i]);
         }
     }
 
-    class DFA85 extends DFA {
+    class DFA86 extends DFA {
 
-        public DFA85(BaseRecognizer recognizer) {
+        public DFA86(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 85;
-            this.eot = DFA85_eot;
-            this.eof = DFA85_eof;
-            this.min = DFA85_min;
-            this.max = DFA85_max;
-            this.accept = DFA85_accept;
-            this.special = DFA85_special;
-            this.transition = DFA85_transition;
+            this.decisionNumber = 86;
+            this.eot = DFA86_eot;
+            this.eof = DFA86_eof;
+            this.min = DFA86_min;
+            this.max = DFA86_max;
+            this.accept = DFA86_accept;
+            this.special = DFA86_special;
+            this.transition = DFA86_transition;
         }
         public String getDescription() {
-            return "()* loopback of 1196:26: ({...}? => DOUBLE_AMPER constraint_expression )*";
+            return "1180:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );";
         }
-        public int specialStateTransition(int s, IntStream input) throws NoViableAltException {
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA85_5 = input.LA(1);
+                        int LA86_0 = input.LA(1);
 
                          
-                        int index85_5 = input.index();
+                        int index86_0 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA85_5==ID) ) {s = 9;}
+                        if ( (LA86_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.IN)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {s = 1;}
 
-                        else if ( (LA85_5==LEFT_PAREN) ) {s = 10;}
+                        else if ( ((LA86_0>=EQUAL && LA86_0<=NOT_EQUAL)) ) {s = 2;}
 
-                        else if ( ((LA85_5>=EQUAL && LA85_5<=NOT_EQUAL)) && ((validateRestr()))) {s = 4;}
+                        else if ( (LA86_0==LEFT_PAREN) ) {s = 8;}
 
                          
-                        input.seek(index85_5);
+                        input.seek(index86_0);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA85_14 = input.LA(1);
+                        int LA86_1 = input.LA(1);
 
                          
-                        int index85_14 = input.index();
+                        int index86_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateRestr())) ) {s = 4;}
+                        if ( (LA86_1==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {s = 9;}
 
-                        else if ( (true) ) {s = 1;}
+                        else if ( (LA86_1==STRING) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {s = 10;}
 
+                        else if ( (LA86_1==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {s = 11;}
+
+                        else if ( (LA86_1==FLOAT) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {s = 12;}
+
+                        else if ( (LA86_1==BOOL) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {s = 13;}
+
+                        else if ( (LA86_1==NULL) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {s = 14;}
+
+                        else if ( (LA86_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.IN)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {s = 15;}
+
+                        else if ( (LA86_1==LEFT_SQUARE) && (((isPluggableEvaluator(false))))) {s = 16;}
+
                          
-                        input.seek(index85_14);
+                        input.seek(index86_1);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA85_13 = input.LA(1);
+                        int LA86_9 = input.LA(1);
 
                          
-                        int index85_13 = input.index();
+                        int index86_9 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateRestr())) ) {s = 4;}
+                        if ( (LA86_9==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {s = 17;}
 
-                        else if ( (true) ) {s = 1;}
+                        else if ( (LA86_9==ID||LA86_9==STRING||(LA86_9>=BOOL && LA86_9<=INT)||(LA86_9>=FLOAT && LA86_9<=NULL)) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {s = 18;}
 
+                        else if ( (LA86_9==LEFT_SQUARE) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {s = 24;}
+
+                        else if ( (LA86_9==DOT) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {s = 25;}
+
+                        else if ( (LA86_9==DOUBLE_AMPER) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {s = 26;}
+
+                        else if ( (LA86_9==DOUBLE_PIPE) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {s = 27;}
+
+                        else if ( (LA86_9==COMMA) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {s = 28;}
+
+                        else if ( (LA86_9==RIGHT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {s = 29;}
+
+                        else if ( (LA86_9==EOF) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {s = 30;}
+
                          
-                        input.seek(index85_13);
+                        input.seek(index86_9);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA85_3 = input.LA(1);
+                        int LA86_15 = input.LA(1);
 
                          
-                        int index85_3 = input.index();
+                        int index86_15 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA85_3==DOT||LA85_3==COLON||(LA85_3>=EQUAL && LA85_3<=NOT_EQUAL)) ) {s = 1;}
+                        if ( (LA86_15==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.IN)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {s = 31;}
 
-                        else if ( (LA85_3==ID) ) {s = 6;}
+                        else if ( (LA86_15==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.IN)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {s = 32;}
 
-                        else if ( (LA85_3==STRING||(LA85_3>=BOOL && LA85_3<=INT)||(LA85_3>=FLOAT && LA85_3<=NULL)) && ((validateRestr()))) {s = 4;}
+                        else if ( (LA86_15==RIGHT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {s = 33;}
 
-                        else if ( (LA85_3==LEFT_PAREN) ) {s = 7;}
+                        else if ( (LA86_15==STRING) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.IN)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {s = 34;}
 
-                        else if ( (LA85_3==LEFT_SQUARE) ) {s = 8;}
+                        else if ( (LA86_15==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.IN)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {s = 35;}
 
+                        else if ( (LA86_15==FLOAT) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.IN)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {s = 36;}
+
+                        else if ( (LA86_15==BOOL) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.IN)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {s = 37;}
+
+                        else if ( (LA86_15==NULL) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.IN)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {s = 38;}
+
+                        else if ( ((LA86_15>=VT_COMPILATION_UNIT && LA86_15<=SEMICOLON)||(LA86_15>=DOT && LA86_15<=END)||LA86_15==COMMA||(LA86_15>=AT && LA86_15<=WHEN)||(LA86_15>=DOUBLE_PIPE && LA86_15<=NOT_EQUAL)||(LA86_15>=LEFT_SQUARE && LA86_15<=MULTI_LINE_COMMENT)) && ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF)))))) {s = 39;}
+
                          
-                        input.seek(index85_3);
+                        input.seek(index86_15);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA85_9 = input.LA(1);
+                        int LA86_17 = input.LA(1);
 
                          
-                        int index85_9 = input.index();
+                        int index86_17 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA85_9==DOT||LA85_9==COLON||(LA85_9>=EQUAL && LA85_9<=NOT_EQUAL)) ) {s = 1;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {s = 40;}
 
-                        else if ( (LA85_9==LEFT_PAREN) ) {s = 37;}
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {s = 39;}
 
-                        else if ( (LA85_9==ID) ) {s = 38;}
-
-                        else if ( (LA85_9==STRING||(LA85_9>=BOOL && LA85_9<=INT)||(LA85_9>=FLOAT && LA85_9<=NULL)) && ((validateRestr()))) {s = 4;}
-
-                        else if ( (LA85_9==LEFT_SQUARE) ) {s = 39;}
-
                          
-                        input.seek(index85_9);
+                        input.seek(index86_17);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA85_12 = input.LA(1);
+                        int LA86_31 = input.LA(1);
 
                          
-                        int index85_12 = input.index();
+                        int index86_31 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateRestr())) ) {s = 4;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 40;}
 
-                        else if ( (true) ) {s = 1;}
+                        else if ( ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF))))) ) {s = 39;}
 
                          
-                        input.seek(index85_12);
+                        input.seek(index86_31);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA85_6 = input.LA(1);
+                        int LA86_32 = input.LA(1);
 
                          
-                        int index85_6 = input.index();
+                        int index86_32 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA85_6==ID) ) {s = 11;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 40;}
 
-                        else if ( (LA85_6==STRING) ) {s = 12;}
+                        else if ( ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF))))) ) {s = 39;}
 
-                        else if ( (LA85_6==INT) ) {s = 13;}
-
-                        else if ( (LA85_6==FLOAT) ) {s = 14;}
-
-                        else if ( (LA85_6==BOOL) ) {s = 15;}
-
-                        else if ( (LA85_6==NULL) ) {s = 16;}
-
-                        else if ( (LA85_6==LEFT_PAREN) ) {s = 17;}
-
-                        else if ( (LA85_6==LEFT_SQUARE) ) {s = 18;}
-
-                        else if ( (LA85_6==EOF||LA85_6==DOT||(LA85_6>=COMMA && LA85_6<=RIGHT_PAREN)||(LA85_6>=DOUBLE_PIPE && LA85_6<=DOUBLE_AMPER)) && ((validateRestr()))) {s = 4;}
-
                          
-                        input.seek(index85_6);
+                        input.seek(index86_32);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
-                        int LA85_10 = input.LA(1);
+                        int LA86_34 = input.LA(1);
 
                          
-                        int index85_10 = input.index();
+                        int index86_34 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateRestr())) ) {s = 4;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 40;}
 
-                        else if ( (true) ) {s = 1;}
+                        else if ( ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF))))) ) {s = 39;}
 
                          
-                        input.seek(index85_10);
+                        input.seek(index86_34);
                         if ( s>=0 ) return s;
                         break;
                     case 8 : 
-                        int LA85_16 = input.LA(1);
+                        int LA86_35 = input.LA(1);
 
                          
-                        int index85_16 = input.index();
+                        int index86_35 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateRestr())) ) {s = 4;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 40;}
 
-                        else if ( (true) ) {s = 1;}
+                        else if ( ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF))))) ) {s = 39;}
 
                          
-                        input.seek(index85_16);
+                        input.seek(index86_35);
                         if ( s>=0 ) return s;
                         break;
                     case 9 : 
-                        int LA85_15 = input.LA(1);
+                        int LA86_36 = input.LA(1);
 
                          
-                        int index85_15 = input.index();
+                        int index86_36 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateRestr())) ) {s = 4;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 40;}
 
-                        else if ( (true) ) {s = 1;}
+                        else if ( ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF))))) ) {s = 39;}
 
                          
-                        input.seek(index85_15);
+                        input.seek(index86_36);
                         if ( s>=0 ) return s;
                         break;
                     case 10 : 
-                        int LA85_2 = input.LA(1);
+                        int LA86_37 = input.LA(1);
 
                          
-                        int index85_2 = input.index();
+                        int index86_37 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA85_2==ID) ) {s = 3;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 40;}
 
-                        else if ( ((LA85_2>=EQUAL && LA85_2<=NOT_EQUAL)) && ((validateRestr()))) {s = 4;}
+                        else if ( ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF))))) ) {s = 39;}
 
-                        else if ( (LA85_2==LEFT_PAREN) ) {s = 5;}
-
                          
-                        input.seek(index85_2);
+                        input.seek(index86_37);
                         if ( s>=0 ) return s;
                         break;
                     case 11 : 
-                        int LA85_11 = input.LA(1);
+                        int LA86_38 = input.LA(1);
 
                          
-                        int index85_11 = input.index();
+                        int index86_38 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateRestr())) ) {s = 4;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 40;}
 
-                        else if ( (true) ) {s = 1;}
+                        else if ( ((((validateIdentifierKey(DroolsSoftKeywords.CONTAINS)))||((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE)))||((validateIdentifierKey(DroolsSoftKeywords.MATCHES)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF))))) ) {s = 39;}
 
                          
-                        input.seek(index85_11);
+                        input.seek(index86_38);
                         if ( s>=0 ) return s;
                         break;
             }
-            if (backtracking>0) {failed=true; return -1;}
+            if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 85, _s, input);
+                new NoViableAltException(getDescription(), 86, _s, input);
             error(nvae);
             throw nvae;
         }
@@ -19376,446 +18091,439 @@
     public static final BitSet FOLLOW_package_statement_in_compilation_unit396 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
     public static final BitSet FOLLOW_statement_in_compilation_unit401 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
     public static final BitSet FOLLOW_EOF_in_compilation_unit407 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_package_key_in_package_statement467 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_package_id_in_package_statement471 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_package_statement473 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_package_id500 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
-    public static final BitSet FOLLOW_DOT_in_package_id506 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_ID_in_package_id510 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
-    public static final BitSet FOLLOW_rule_attribute_in_statement554 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_function_import_statement_in_statement561 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_import_statement_in_statement567 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_global_in_statement573 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_function_in_statement579 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_template_in_statement587 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_type_declaration_in_statement595 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_rule_in_statement600 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_query_in_statement605 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_import_key_in_import_statement632 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_import_name_in_import_statement634 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_import_statement637 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_import_key_in_function_import_statement680 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_function_key_in_function_import_statement682 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_import_name_in_function_import_statement684 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_function_import_statement687 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_import_name721 = new BitSet(new long[]{0x0000000000000002L,0x0000000000C00000L});
-    public static final BitSet FOLLOW_DOT_in_import_name727 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_ID_in_import_name731 = new BitSet(new long[]{0x0000000000000002L,0x0000000000C00000L});
-    public static final BitSet FOLLOW_DOT_STAR_in_import_name738 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_global_key_in_global783 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_data_type_in_global785 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_global_id_in_global787 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_global789 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_global_id818 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_function_key_in_function855 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_data_type_in_function857 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_function_id_in_function860 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_parameters_in_function862 = new BitSet(new long[]{0x0000000000000000L,0x0040000000000000L});
-    public static final BitSet FOLLOW_curly_chunk_in_function864 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_function_id894 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_query_key_in_query931 = new BitSet(new long[]{0x0000000000000000L,0x0000000002200000L});
-    public static final BitSet FOLLOW_query_id_in_query933 = new BitSet(new long[]{0x0000000000000000L,0x0000000005200000L});
-    public static final BitSet FOLLOW_parameters_in_query941 = new BitSet(new long[]{0x0000000000000000L,0x0000000005200000L});
-    public static final BitSet FOLLOW_normal_lhs_block_in_query950 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_END_in_query955 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_query957 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_query_id992 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_query_id1008 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_parameters1027 = new BitSet(new long[]{0x0000000000000000L,0x0000000010200000L});
-    public static final BitSet FOLLOW_param_definition_in_parameters1036 = new BitSet(new long[]{0x0000000000000000L,0x0000000018000000L});
-    public static final BitSet FOLLOW_COMMA_in_parameters1039 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_param_definition_in_parameters1043 = new BitSet(new long[]{0x0000000000000000L,0x0000000018000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_parameters1052 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_data_type_in_param_definition1078 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_argument_in_param_definition1081 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_argument1092 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
-    public static final BitSet FOLLOW_dimension_definition_in_argument1098 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
-    public static final BitSet FOLLOW_declare_key_in_type_declaration1126 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_type_declare_id_in_type_declaration1129 = new BitSet(new long[]{0x0000000000000000L,0x0000000021200000L});
-    public static final BitSet FOLLOW_decl_metadata_in_type_declaration1133 = new BitSet(new long[]{0x0000000000000000L,0x0000000021200000L});
-    public static final BitSet FOLLOW_decl_field_in_type_declaration1138 = new BitSet(new long[]{0x0000000000000000L,0x0000000001200000L});
-    public static final BitSet FOLLOW_END_in_type_declaration1143 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_type_declare_id1178 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_AT_in_decl_metadata1197 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_ID_in_decl_metadata1205 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_decl_metadata1212 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_decl_field1235 = new BitSet(new long[]{0x0000000000000000L,0x00000000C0000000L});
-    public static final BitSet FOLLOW_decl_field_initialization_in_decl_field1241 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
-    public static final BitSet FOLLOW_COLON_in_decl_field1247 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_data_type_in_decl_field1253 = new BitSet(new long[]{0x0000000000000002L,0x0000000020000000L});
-    public static final BitSet FOLLOW_decl_metadata_in_decl_field1257 = new BitSet(new long[]{0x0000000000000002L,0x0000000020000000L});
-    public static final BitSet FOLLOW_EQUALS_in_decl_field_initialization1285 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_decl_field_initialization1291 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_template_key_in_template1328 = new BitSet(new long[]{0x0000000000000000L,0x0000000002200000L});
-    public static final BitSet FOLLOW_template_id_in_template1330 = new BitSet(new long[]{0x0000000000000000L,0x0000000000300000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_template1337 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_template_slot_in_template1345 = new BitSet(new long[]{0x0000000000000000L,0x0000000001200000L});
-    public static final BitSet FOLLOW_END_in_template1350 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_template1354 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_template_id1387 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_template_id1403 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_data_type_in_template_slot1423 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_slot_id_in_template_slot1425 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_template_slot1427 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_slot_id1456 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_rule_key_in_rule1493 = new BitSet(new long[]{0x0000000000000000L,0x0000000002200000L});
-    public static final BitSet FOLLOW_rule_id_in_rule1495 = new BitSet(new long[]{0x0000000000000000L,0x0020000120200000L});
-    public static final BitSet FOLLOW_extend_key_in_rule1504 = new BitSet(new long[]{0x0000000000000000L,0x0000000002200000L});
-    public static final BitSet FOLLOW_rule_id_in_rule1506 = new BitSet(new long[]{0x0000000000000000L,0x0020000120200000L});
-    public static final BitSet FOLLOW_decl_metadata_in_rule1510 = new BitSet(new long[]{0x0000000000000000L,0x0020000120200000L});
-    public static final BitSet FOLLOW_rule_attributes_in_rule1513 = new BitSet(new long[]{0x0000000000000000L,0x0020000100000000L});
-    public static final BitSet FOLLOW_when_part_in_rule1516 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
-    public static final BitSet FOLLOW_rhs_chunk_in_rule1519 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_WHEN_in_when_part1559 = new BitSet(new long[]{0x0000000000000002L,0x0000000044200000L});
-    public static final BitSet FOLLOW_COLON_in_when_part1565 = new BitSet(new long[]{0x0000000000000002L,0x0000000004200000L});
-    public static final BitSet FOLLOW_normal_lhs_block_in_when_part1575 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_rule_id1596 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_rule_id1612 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_attributes_key_in_rule_attributes1633 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
-    public static final BitSet FOLLOW_COLON_in_rule_attributes1635 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1645 = new BitSet(new long[]{0x0000000000000002L,0x0000000008200000L});
-    public static final BitSet FOLLOW_COMMA_in_rule_attributes1649 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1656 = new BitSet(new long[]{0x0000000000000002L,0x0000000008200000L});
-    public static final BitSet FOLLOW_salience_in_rule_attribute1695 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_no_loop_in_rule_attribute1701 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_agenda_group_in_rule_attribute1706 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_duration_in_rule_attribute1713 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_activation_group_in_rule_attribute1720 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_auto_focus_in_rule_attribute1726 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_effective_in_rule_attribute1732 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_expires_in_rule_attribute1738 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_enabled_in_rule_attribute1744 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ruleflow_group_in_rule_attribute1750 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lock_on_active_in_rule_attribute1756 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_dialect_in_rule_attribute1761 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_effective_key_in_date_effective1777 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_STRING_in_date_effective1782 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_expires_key_in_date_expires1796 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_STRING_in_date_expires1801 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_enabled_key_in_enabled1816 = new BitSet(new long[]{0x0000000000000000L,0x0000000204000000L});
-    public static final BitSet FOLLOW_BOOL_in_enabled1829 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_enabled1840 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_salience_key_in_salience1860 = new BitSet(new long[]{0x0000000000000000L,0x0000000404000000L});
-    public static final BitSet FOLLOW_INT_in_salience1869 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_salience1878 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_no_loop_key_in_no_loop1893 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
-    public static final BitSet FOLLOW_BOOL_in_no_loop1898 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_auto_focus_key_in_auto_focus1913 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
-    public static final BitSet FOLLOW_BOOL_in_auto_focus1918 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_activation_group_key_in_activation_group1935 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_STRING_in_activation_group1940 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ruleflow_group_key_in_ruleflow_group1954 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_STRING_in_ruleflow_group1959 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_agenda_group_key_in_agenda_group1973 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_STRING_in_agenda_group1978 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_duration_key_in_duration1992 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
-    public static final BitSet FOLLOW_INT_in_duration1997 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_dialect_key_in_dialect2013 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_STRING_in_dialect2018 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lock_on_active_key_in_lock_on_active2036 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
-    public static final BitSet FOLLOW_BOOL_in_lock_on_active2041 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_in_normal_lhs_block2056 = new BitSet(new long[]{0x0000000000000002L,0x0000000004200000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs2077 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2101 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_or_key_in_lhs_or2111 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2119 = new BitSet(new long[]{0x0000000000000000L,0x0000000014200000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2125 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2148 = new BitSet(new long[]{0x0000000000000002L,0x0000000800200000L});
-    public static final BitSet FOLLOW_or_key_in_lhs_or2170 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_lhs_or2177 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2188 = new BitSet(new long[]{0x0000000000000002L,0x0000000800200000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_and2229 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_and_key_in_lhs_and2239 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2247 = new BitSet(new long[]{0x0000000000000000L,0x0000000014200000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_and2253 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2277 = new BitSet(new long[]{0x0000000000000002L,0x0000001000200000L});
-    public static final BitSet FOLLOW_and_key_in_lhs_and2299 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_lhs_and2306 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2317 = new BitSet(new long[]{0x0000000000000002L,0x0000001000200000L});
-    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary2348 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
-    public static final BitSet FOLLOW_lhs_not_binding_in_lhs_unary2356 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
-    public static final BitSet FOLLOW_lhs_not_in_lhs_unary2362 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
-    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary2368 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
-    public static final BitSet FOLLOW_lhs_forall_in_lhs_unary2374 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_unary2380 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_unary2391 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_unary2397 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
-    public static final BitSet FOLLOW_pattern_source_in_lhs_unary2405 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_lhs_unary2419 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_exists_key_in_lhs_exist2435 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_exist2462 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_exist2469 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_exist2477 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_exist2484 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_exist2499 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_not_key_in_lhs_not_binding2545 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_fact_binding_in_lhs_not_binding2547 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_not_key_in_lhs_not2570 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_not2592 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_not2599 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_not2608 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_not2614 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_not2624 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_eval_key_in_lhs_eval2663 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_lhs_eval2672 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forall_key_in_lhs_forall2699 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forall2704 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_forall2712 = new BitSet(new long[]{0x0000000000000000L,0x0000000010200000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forall2718 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_pattern_source2754 = new BitSet(new long[]{0x0000000000000002L,0x0000006000000000L});
-    public static final BitSet FOLLOW_over_clause_in_pattern_source2758 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
-    public static final BitSet FOLLOW_FROM_in_pattern_source2768 = new BitSet(new long[]{0x0000000000000000L,0x0000028000200000L});
-    public static final BitSet FOLLOW_accumulate_statement_in_pattern_source2788 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_collect_statement_in_pattern_source2804 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_entrypoint_statement_in_pattern_source2821 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_from_source_in_pattern_source2837 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_OVER_in_over_clause2869 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_over_elements_in_over_clause2874 = new BitSet(new long[]{0x0000000000000002L,0x0000000008000000L});
-    public static final BitSet FOLLOW_COMMA_in_over_clause2881 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_over_elements_in_over_clause2886 = new BitSet(new long[]{0x0000000000000002L,0x0000000008000000L});
-    public static final BitSet FOLLOW_ID_in_over_elements2901 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
-    public static final BitSet FOLLOW_COLON_in_over_elements2908 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_ID_in_over_elements2917 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_over_elements2924 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ACCUMULATE_in_accumulate_statement2950 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_statement2959 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
-    public static final BitSet FOLLOW_lhs_or_in_accumulate_statement2967 = new BitSet(new long[]{0x0000000000000000L,0x0000010008200000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_statement2972 = new BitSet(new long[]{0x0000000000000000L,0x0000010000200000L});
-    public static final BitSet FOLLOW_accumulate_init_clause_in_accumulate_statement2982 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
-    public static final BitSet FOLLOW_accumulate_id_clause_in_accumulate_statement2988 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_statement2996 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INIT_in_accumulate_init_clause3042 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3053 = new BitSet(new long[]{0x0000000000000000L,0x0000000008200000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3058 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_action_key_in_accumulate_init_clause3069 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3073 = new BitSet(new long[]{0x0000000000000000L,0x0000000008200000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3078 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_reverse_key_in_accumulate_init_clause3091 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3095 = new BitSet(new long[]{0x0000000000000000L,0x0000000008200000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3100 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_result_key_in_accumulate_init_clause3115 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3121 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3179 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data3203 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
-    public static final BitSet FOLLOW_set_in_accumulate_paren_chunk_data3215 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3231 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3242 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_accumulate_id_clause3258 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_accumulate_id_clause3264 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_COLLECT_in_collect_statement3286 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_collect_statement3295 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_pattern_source_in_collect_statement3302 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_collect_statement3307 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_entry_point_key_in_entrypoint_statement3334 = new BitSet(new long[]{0x0000000000000000L,0x0000000002200000L});
-    public static final BitSet FOLLOW_entrypoint_id_in_entrypoint_statement3342 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_entrypoint_id3368 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_entrypoint_id3385 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_from_source3405 = new BitSet(new long[]{0x0000000000000002L,0x0000000004400000L});
-    public static final BitSet FOLLOW_paren_chunk_in_from_source3420 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
-    public static final BitSet FOLLOW_expression_chain_in_from_source3427 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DOT_in_expression_chain3460 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_ID_in_expression_chain3467 = new BitSet(new long[]{0x0000000000000002L,0x0008000004400000L});
-    public static final BitSet FOLLOW_paren_chunk_in_expression_chain3483 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
-    public static final BitSet FOLLOW_square_chunk_in_expression_chain3497 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
-    public static final BitSet FOLLOW_expression_chain_in_expression_chain3508 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_binding_in_lhs_pattern3541 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_lhs_pattern3554 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_label_in_fact_binding3574 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
-    public static final BitSet FOLLOW_fact_in_fact_binding3580 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_binding3587 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_fact_binding_expression_in_fact_binding3595 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_binding3603 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_fact_binding_expression3644 = new BitSet(new long[]{0x0000000000000002L,0x0000000800200000L});
-    public static final BitSet FOLLOW_or_key_in_fact_binding_expression3656 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_fact_binding_expression3662 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_fact_in_fact_binding_expression3667 = new BitSet(new long[]{0x0000000000000002L,0x0000000800200000L});
-    public static final BitSet FOLLOW_pattern_type_in_fact3707 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_fact3712 = new BitSet(new long[]{0x0000000000000000L,0x0000000014200000L});
-    public static final BitSet FOLLOW_constraints_in_fact3723 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact3729 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_constraint_in_constraints3763 = new BitSet(new long[]{0x0000000000000002L,0x0000000008000000L});
-    public static final BitSet FOLLOW_COMMA_in_constraints3767 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
-    public static final BitSet FOLLOW_constraint_in_constraints3774 = new BitSet(new long[]{0x0000000000000002L,0x0000000008000000L});
-    public static final BitSet FOLLOW_or_constr_in_constraint3788 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_constr_in_or_constr3799 = new BitSet(new long[]{0x0000000000000002L,0x0000000800000000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_constr3803 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
-    public static final BitSet FOLLOW_and_constr_in_or_constr3810 = new BitSet(new long[]{0x0000000000000002L,0x0000000800000000L});
-    public static final BitSet FOLLOW_unary_constr_in_and_constr3825 = new BitSet(new long[]{0x0000000000000002L,0x0000001000000000L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_constr3829 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
-    public static final BitSet FOLLOW_unary_constr_in_and_constr3836 = new BitSet(new long[]{0x0000000000000002L,0x0000001000000000L});
-    public static final BitSet FOLLOW_eval_key_in_unary_constr3869 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_unary_constr3872 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_field_constraint_in_unary_constr3877 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_unary_constr3883 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
-    public static final BitSet FOLLOW_or_constr_in_unary_constr3893 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_unary_constr3898 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_label_in_field_constraint3927 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_accessor_path_in_field_constraint3929 = new BitSet(new long[]{0x0000000000000002L,0x0001FC0004200000L});
-    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint3936 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ARROW_in_field_constraint3942 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_field_constraint3946 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_path_in_field_constraint4000 = new BitSet(new long[]{0x0000000000000000L,0x0001F80004200000L});
-    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint4002 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_label4027 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
-    public static final BitSet FOLLOW_COLON_in_label4034 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective4055 = new BitSet(new long[]{0x0000000000000002L,0x0000000800000000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_restr_connective4061 = new BitSet(new long[]{0x0000000000000000L,0x0001F80004200000L});
-    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective4069 = new BitSet(new long[]{0x0000000000000002L,0x0000000800000000L});
-    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective4084 = new BitSet(new long[]{0x0000000000000002L,0x0000001000000000L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_restr_connective4090 = new BitSet(new long[]{0x0000000000000000L,0x0001F80004200000L});
-    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective4097 = new BitSet(new long[]{0x0000000000000002L,0x0000001000000000L});
-    public static final BitSet FOLLOW_compound_operator_in_constraint_expression4122 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_simple_operator_in_constraint_expression4127 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_constraint_expression4132 = new BitSet(new long[]{0x0000000000000000L,0x0001F80004200000L});
-    public static final BitSet FOLLOW_or_restr_connective_in_constraint_expression4141 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_constraint_expression4146 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EQUAL_in_simple_operator4175 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
-    public static final BitSet FOLLOW_GREATER_in_simple_operator4183 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
-    public static final BitSet FOLLOW_GREATER_EQUAL_in_simple_operator4191 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
-    public static final BitSet FOLLOW_LESS_in_simple_operator4199 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
-    public static final BitSet FOLLOW_LESS_EQUAL_in_simple_operator4207 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
-    public static final BitSet FOLLOW_NOT_EQUAL_in_simple_operator4215 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
-    public static final BitSet FOLLOW_not_key_in_simple_operator4223 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_contains_key_in_simple_operator4230 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
-    public static final BitSet FOLLOW_soundslike_key_in_simple_operator4237 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
-    public static final BitSet FOLLOW_matches_key_in_simple_operator4244 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
-    public static final BitSet FOLLOW_memberof_key_in_simple_operator4251 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
-    public static final BitSet FOLLOW_neg_operator_key_in_simple_operator4258 = new BitSet(new long[]{0x0000000000000000L,0x000E000606200000L});
-    public static final BitSet FOLLOW_square_chunk_in_simple_operator4261 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
-    public static final BitSet FOLLOW_contains_key_in_simple_operator4287 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
-    public static final BitSet FOLLOW_excludes_key_in_simple_operator4293 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
-    public static final BitSet FOLLOW_matches_key_in_simple_operator4299 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
-    public static final BitSet FOLLOW_soundslike_key_in_simple_operator4305 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
-    public static final BitSet FOLLOW_memberof_key_in_simple_operator4311 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
-    public static final BitSet FOLLOW_operator_key_in_simple_operator4318 = new BitSet(new long[]{0x0000000000000000L,0x000E000606200000L});
-    public static final BitSet FOLLOW_square_chunk_in_simple_operator4321 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
-    public static final BitSet FOLLOW_expression_value_in_simple_operator4339 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_in_key_in_compound_operator4357 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_not_key_in_compound_operator4362 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_in_key_in_compound_operator4364 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_compound_operator4375 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
-    public static final BitSet FOLLOW_expression_value_in_compound_operator4383 = new BitSet(new long[]{0x0000000000000000L,0x0000000018000000L});
-    public static final BitSet FOLLOW_COMMA_in_compound_operator4387 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
-    public static final BitSet FOLLOW_expression_value_in_compound_operator4392 = new BitSet(new long[]{0x0000000000000000L,0x0000000018000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_compound_operator4400 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_operator_key4429 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_neg_operator_key4472 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_path_in_expression_value4512 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_constraint_in_expression_value4517 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_expression_value4523 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_literal_constraint4542 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INT_in_literal_constraint4549 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FLOAT_in_literal_constraint4556 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_BOOL_in_literal_constraint4563 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NULL_in_literal_constraint4570 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_pattern_type4585 = new BitSet(new long[]{0x0000000000000002L,0x0008000000400000L});
-    public static final BitSet FOLLOW_DOT_in_pattern_type4591 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_ID_in_pattern_type4595 = new BitSet(new long[]{0x0000000000000002L,0x0008000000400000L});
-    public static final BitSet FOLLOW_dimension_definition_in_pattern_type4610 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
-    public static final BitSet FOLLOW_ID_in_data_type4638 = new BitSet(new long[]{0x0000000000000002L,0x0008000000400000L});
-    public static final BitSet FOLLOW_DOT_in_data_type4644 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_ID_in_data_type4648 = new BitSet(new long[]{0x0000000000000002L,0x0008000000400000L});
-    public static final BitSet FOLLOW_dimension_definition_in_data_type4653 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_dimension_definition4682 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dimension_definition4689 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_element_in_accessor_path4703 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
-    public static final BitSet FOLLOW_DOT_in_accessor_path4707 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_accessor_element_in_accessor_path4711 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
-    public static final BitSet FOLLOW_ID_in_accessor_element4735 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
-    public static final BitSet FOLLOW_square_chunk_in_accessor_element4741 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
-    public static final BitSet FOLLOW_rhs_chunk_data_in_rhs_chunk4770 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_THEN_in_rhs_chunk_data4789 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
-    public static final BitSet FOLLOW_set_in_rhs_chunk_data4802 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
-    public static final BitSet FOLLOW_END_in_rhs_chunk_data4815 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_rhs_chunk_data4821 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk4840 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_curly_chunk_data4863 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
-    public static final BitSet FOLLOW_set_in_curly_chunk_data4875 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
-    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk_data4891 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_curly_chunk_data4902 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk4923 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk_data4947 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
-    public static final BitSet FOLLOW_set_in_paren_chunk_data4959 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
-    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk_data4975 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk_data4986 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk5007 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk_data5030 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
-    public static final BitSet FOLLOW_set_in_square_chunk_data5042 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
-    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk_data5057 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk_data5068 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_lock_on_active_key5092 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
-    public static final BitSet FOLLOW_MISC_in_lock_on_active_key5096 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_ID_in_lock_on_active_key5100 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
-    public static final BitSet FOLLOW_MISC_in_lock_on_active_key5104 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_ID_in_lock_on_active_key5108 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_date_effective_key5140 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
-    public static final BitSet FOLLOW_MISC_in_date_effective_key5144 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_ID_in_date_effective_key5148 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_date_expires_key5180 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
-    public static final BitSet FOLLOW_MISC_in_date_expires_key5184 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_ID_in_date_expires_key5188 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_no_loop_key5220 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
-    public static final BitSet FOLLOW_MISC_in_no_loop_key5224 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_ID_in_no_loop_key5228 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_auto_focus_key5260 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
-    public static final BitSet FOLLOW_MISC_in_auto_focus_key5264 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_ID_in_auto_focus_key5268 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_activation_group_key5300 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
-    public static final BitSet FOLLOW_MISC_in_activation_group_key5304 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_ID_in_activation_group_key5308 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_agenda_group_key5340 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
-    public static final BitSet FOLLOW_MISC_in_agenda_group_key5344 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_ID_in_agenda_group_key5348 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_ruleflow_group_key5380 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
-    public static final BitSet FOLLOW_MISC_in_ruleflow_group_key5384 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_ID_in_ruleflow_group_key5388 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_entry_point_key5420 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
-    public static final BitSet FOLLOW_MISC_in_entry_point_key5424 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_ID_in_entry_point_key5428 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_duration_key5457 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_package_key5482 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_import_key5508 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_dialect_key5535 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_salience_key5562 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_enabled_key5589 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_attributes_key5616 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_rule_key5643 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_extend_key5670 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_template_key5697 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_query_key5724 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_declare_key5751 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_function_key5778 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_global_key5805 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_eval_key5832 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_contains_key5859 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_matches_key5886 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_excludes_key5913 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_soundslike_key5940 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_memberof_key5967 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_not_key5994 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_in_key6021 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_or_key6048 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_and_key6075 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_exists_key6102 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_forall_key6129 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_action_key6156 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_reverse_key6183 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_result_key6210 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred12092 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_or_key_in_synpred12094 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_or_key_in_synpred22161 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_synpred22163 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred32220 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_and_key_in_synpred32222 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_key_in_synpred42290 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_synpred42292 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SEMICOLON_in_synpred52415 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred62452 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_or_key_in_synpred62455 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_key_in_synpred62457 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred72580 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_or_key_in_synpred72583 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_key_in_synpred72585 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred83414 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_package_key_in_package_statement462 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_package_id_in_package_statement466 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_package_statement468 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_package_id495 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
+    public static final BitSet FOLLOW_DOT_in_package_id501 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_ID_in_package_id505 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
+    public static final BitSet FOLLOW_rule_attribute_in_statement549 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_import_statement_in_statement556 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_import_statement_in_statement562 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_global_in_statement568 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_in_statement574 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_template_in_statement582 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_type_declaration_in_statement590 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule_in_statement595 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_query_in_statement600 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_import_key_in_import_statement622 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_import_name_in_import_statement624 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_import_statement627 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_import_key_in_function_import_statement665 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_function_key_in_function_import_statement667 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_import_name_in_function_import_statement669 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_function_import_statement672 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_import_name706 = new BitSet(new long[]{0x0000000000000002L,0x0000000000C00000L});
+    public static final BitSet FOLLOW_DOT_in_import_name712 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_ID_in_import_name716 = new BitSet(new long[]{0x0000000000000002L,0x0000000000C00000L});
+    public static final BitSet FOLLOW_DOT_STAR_in_import_name723 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_global_key_in_global763 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_data_type_in_global765 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_global_id_in_global767 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_global769 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_global_id798 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_key_in_function830 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_data_type_in_function832 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_function_id_in_function835 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_parameters_in_function837 = new BitSet(new long[]{0x0000000000000000L,0x0040000000000000L});
+    public static final BitSet FOLLOW_curly_chunk_in_function839 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_function_id869 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_query_key_in_query901 = new BitSet(new long[]{0x0000000000000000L,0x0000000002200000L});
+    public static final BitSet FOLLOW_query_id_in_query903 = new BitSet(new long[]{0x0000000000000000L,0x0000000005200000L});
+    public static final BitSet FOLLOW_parameters_in_query911 = new BitSet(new long[]{0x0000000000000000L,0x0000000005200000L});
+    public static final BitSet FOLLOW_normal_lhs_block_in_query920 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_END_in_query925 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_query927 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_query_id962 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_query_id978 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_parameters997 = new BitSet(new long[]{0x0000000000000000L,0x0000000010200000L});
+    public static final BitSet FOLLOW_param_definition_in_parameters1006 = new BitSet(new long[]{0x0000000000000000L,0x0000000018000000L});
+    public static final BitSet FOLLOW_COMMA_in_parameters1009 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_param_definition_in_parameters1013 = new BitSet(new long[]{0x0000000000000000L,0x0000000018000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_parameters1022 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_data_type_in_param_definition1048 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_argument_in_param_definition1051 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_argument1062 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
+    public static final BitSet FOLLOW_dimension_definition_in_argument1068 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
+    public static final BitSet FOLLOW_declare_key_in_type_declaration1091 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_type_declare_id_in_type_declaration1094 = new BitSet(new long[]{0x0000000000000000L,0x0000000021200000L});
+    public static final BitSet FOLLOW_decl_metadata_in_type_declaration1098 = new BitSet(new long[]{0x0000000000000000L,0x0000000021200000L});
+    public static final BitSet FOLLOW_decl_field_in_type_declaration1103 = new BitSet(new long[]{0x0000000000000000L,0x0000000001200000L});
+    public static final BitSet FOLLOW_END_in_type_declaration1108 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_type_declare_id1143 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_AT_in_decl_metadata1162 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_ID_in_decl_metadata1170 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_decl_metadata1177 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_decl_field1200 = new BitSet(new long[]{0x0000000000000000L,0x00000000C0000000L});
+    public static final BitSet FOLLOW_decl_field_initialization_in_decl_field1206 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
+    public static final BitSet FOLLOW_COLON_in_decl_field1212 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_data_type_in_decl_field1218 = new BitSet(new long[]{0x0000000000000002L,0x0000000020000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_decl_field1222 = new BitSet(new long[]{0x0000000000000002L,0x0000000020000000L});
+    public static final BitSet FOLLOW_EQUALS_in_decl_field_initialization1250 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_decl_field_initialization1256 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_template_key_in_template1287 = new BitSet(new long[]{0x0000000000000000L,0x0000000002200000L});
+    public static final BitSet FOLLOW_template_id_in_template1289 = new BitSet(new long[]{0x0000000000000000L,0x0000000000300000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_template1296 = new BitSet(new long[]{0x0000000000000000L,0x0000000000300000L});
+    public static final BitSet FOLLOW_template_slot_in_template1304 = new BitSet(new long[]{0x0000000000000000L,0x0000000001300000L});
+    public static final BitSet FOLLOW_END_in_template1309 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_template1313 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_template_id1346 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_template_id1362 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_data_type_in_template_slot1382 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_slot_id_in_template_slot1384 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_template_slot1386 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_slot_id1415 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule_key_in_rule1447 = new BitSet(new long[]{0x0000000000000000L,0x0000000002200000L});
+    public static final BitSet FOLLOW_rule_id_in_rule1449 = new BitSet(new long[]{0x0000000000000000L,0x0020000120200000L});
+    public static final BitSet FOLLOW_extend_key_in_rule1458 = new BitSet(new long[]{0x0000000000000000L,0x0000000002200000L});
+    public static final BitSet FOLLOW_rule_id_in_rule1460 = new BitSet(new long[]{0x0000000000000000L,0x0020000120200000L});
+    public static final BitSet FOLLOW_decl_metadata_in_rule1464 = new BitSet(new long[]{0x0000000000000000L,0x0020000120200000L});
+    public static final BitSet FOLLOW_rule_attributes_in_rule1467 = new BitSet(new long[]{0x0000000000000000L,0x0020000120200000L});
+    public static final BitSet FOLLOW_when_part_in_rule1470 = new BitSet(new long[]{0x0000000000000000L,0x0020000120200000L});
+    public static final BitSet FOLLOW_rhs_chunk_in_rule1473 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_WHEN_in_when_part1513 = new BitSet(new long[]{0x0000000000000000L,0x0000000044200000L});
+    public static final BitSet FOLLOW_COLON_in_when_part1519 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
+    public static final BitSet FOLLOW_normal_lhs_block_in_when_part1529 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_rule_id1550 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_rule_id1566 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_attributes_key_in_rule_attributes1587 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
+    public static final BitSet FOLLOW_COLON_in_rule_attributes1589 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1599 = new BitSet(new long[]{0x0000000000000002L,0x0000000008200000L});
+    public static final BitSet FOLLOW_COMMA_in_rule_attributes1603 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1610 = new BitSet(new long[]{0x0000000000000002L,0x0000000008200000L});
+    public static final BitSet FOLLOW_salience_in_rule_attribute1649 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_no_loop_in_rule_attribute1655 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_agenda_group_in_rule_attribute1660 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_duration_in_rule_attribute1667 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_activation_group_in_rule_attribute1674 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_auto_focus_in_rule_attribute1680 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_effective_in_rule_attribute1686 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_expires_in_rule_attribute1692 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_enabled_in_rule_attribute1698 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleflow_group_in_rule_attribute1704 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lock_on_active_in_rule_attribute1710 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_dialect_in_rule_attribute1715 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_effective_key_in_date_effective1731 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
+    public static final BitSet FOLLOW_STRING_in_date_effective1736 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_expires_key_in_date_expires1750 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
+    public static final BitSet FOLLOW_STRING_in_date_expires1755 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_enabled_key_in_enabled1770 = new BitSet(new long[]{0x0000000000000000L,0x0000000204000000L});
+    public static final BitSet FOLLOW_BOOL_in_enabled1783 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_enabled1794 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_salience_key_in_salience1814 = new BitSet(new long[]{0x0000000000000000L,0x0000000404000000L});
+    public static final BitSet FOLLOW_INT_in_salience1823 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_salience1832 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_no_loop_key_in_no_loop1847 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
+    public static final BitSet FOLLOW_BOOL_in_no_loop1852 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_auto_focus_key_in_auto_focus1867 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
+    public static final BitSet FOLLOW_BOOL_in_auto_focus1872 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_activation_group_key_in_activation_group1889 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
+    public static final BitSet FOLLOW_STRING_in_activation_group1894 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleflow_group_key_in_ruleflow_group1908 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
+    public static final BitSet FOLLOW_STRING_in_ruleflow_group1913 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_agenda_group_key_in_agenda_group1927 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
+    public static final BitSet FOLLOW_STRING_in_agenda_group1932 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_duration_key_in_duration1946 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
+    public static final BitSet FOLLOW_INT_in_duration1951 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_dialect_key_in_dialect1967 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
+    public static final BitSet FOLLOW_STRING_in_dialect1972 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lock_on_active_key_in_lock_on_active1990 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
+    public static final BitSet FOLLOW_BOOL_in_lock_on_active1995 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_in_normal_lhs_block2010 = new BitSet(new long[]{0x0000000000000002L,0x0000000004200000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs2031 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2055 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_or_key_in_lhs_or2065 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2073 = new BitSet(new long[]{0x0000000000000000L,0x0000000014200000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2079 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2102 = new BitSet(new long[]{0x0000000000000002L,0x0000000800200000L});
+    public static final BitSet FOLLOW_or_key_in_lhs_or2124 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_lhs_or2131 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2142 = new BitSet(new long[]{0x0000000000000002L,0x0000000800200000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_and2183 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_and_key_in_lhs_and2193 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2201 = new BitSet(new long[]{0x0000000000000000L,0x0000000014200000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_and2207 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2231 = new BitSet(new long[]{0x0000000000000002L,0x0000001000200000L});
+    public static final BitSet FOLLOW_and_key_in_lhs_and2253 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_lhs_and2260 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2271 = new BitSet(new long[]{0x0000000000000002L,0x0000001000200000L});
+    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary2302 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
+    public static final BitSet FOLLOW_lhs_not_binding_in_lhs_unary2310 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
+    public static final BitSet FOLLOW_lhs_not_in_lhs_unary2316 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
+    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary2322 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
+    public static final BitSet FOLLOW_lhs_forall_in_lhs_unary2328 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_unary2334 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_unary2345 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_unary2351 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
+    public static final BitSet FOLLOW_pattern_source_in_lhs_unary2359 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_lhs_unary2373 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_exists_key_in_lhs_exist2389 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_exist2416 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_exist2423 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_exist2431 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_exist2438 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_exist2453 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_not_key_in_lhs_not_binding2499 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_fact_binding_in_lhs_not_binding2501 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_not_key_in_lhs_not2524 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_not2546 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_not2553 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_not2562 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_not2568 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_not2578 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_eval_key_in_lhs_eval2617 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_lhs_eval2626 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forall_key_in_lhs_forall2653 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forall2658 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_forall2666 = new BitSet(new long[]{0x0000000000000000L,0x0000000014200000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forall2672 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_pattern_source2708 = new BitSet(new long[]{0x0000000000000002L,0x0000006000000000L});
+    public static final BitSet FOLLOW_over_clause_in_pattern_source2712 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
+    public static final BitSet FOLLOW_FROM_in_pattern_source2722 = new BitSet(new long[]{0x0000000000000000L,0x0000028000200000L});
+    public static final BitSet FOLLOW_accumulate_statement_in_pattern_source2742 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_collect_statement_in_pattern_source2758 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_entrypoint_statement_in_pattern_source2775 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_from_source_in_pattern_source2791 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_OVER_in_over_clause2823 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_over_elements_in_over_clause2828 = new BitSet(new long[]{0x0000000000000002L,0x0000000008000000L});
+    public static final BitSet FOLLOW_COMMA_in_over_clause2835 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_over_elements_in_over_clause2840 = new BitSet(new long[]{0x0000000000000002L,0x0000000008000000L});
+    public static final BitSet FOLLOW_ID_in_over_elements2855 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
+    public static final BitSet FOLLOW_COLON_in_over_elements2862 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_ID_in_over_elements2871 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_over_elements2878 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ACCUMULATE_in_accumulate_statement2904 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_statement2913 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
+    public static final BitSet FOLLOW_lhs_or_in_accumulate_statement2921 = new BitSet(new long[]{0x0000000000000000L,0x0000010008200000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_statement2926 = new BitSet(new long[]{0x0000000000000000L,0x0000010008200000L});
+    public static final BitSet FOLLOW_accumulate_init_clause_in_accumulate_statement2936 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
+    public static final BitSet FOLLOW_accumulate_id_clause_in_accumulate_statement2942 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_statement2950 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INIT_in_accumulate_init_clause2996 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3007 = new BitSet(new long[]{0x0000000000000000L,0x0000000008200000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3012 = new BitSet(new long[]{0x0000000000000000L,0x0000000008200000L});
+    public static final BitSet FOLLOW_action_key_in_accumulate_init_clause3023 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3027 = new BitSet(new long[]{0x0000000000000000L,0x0000000008200000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3032 = new BitSet(new long[]{0x0000000000000000L,0x0000000008200000L});
+    public static final BitSet FOLLOW_reverse_key_in_accumulate_init_clause3045 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3049 = new BitSet(new long[]{0x0000000000000000L,0x0000000008200000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3054 = new BitSet(new long[]{0x0000000000000000L,0x0000000008200000L});
+    public static final BitSet FOLLOW_result_key_in_accumulate_init_clause3069 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3075 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3133 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data3157 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
+    public static final BitSet FOLLOW_set_in_accumulate_paren_chunk_data3169 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3185 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3196 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_accumulate_id_clause3212 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_accumulate_id_clause3218 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_COLLECT_in_collect_statement3240 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_collect_statement3249 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
+    public static final BitSet FOLLOW_pattern_source_in_collect_statement3256 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_collect_statement3261 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_entry_point_key_in_entrypoint_statement3288 = new BitSet(new long[]{0x0000000000000000L,0x0000000002200000L});
+    public static final BitSet FOLLOW_entrypoint_id_in_entrypoint_statement3296 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_entrypoint_id3322 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_entrypoint_id3339 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_from_source3359 = new BitSet(new long[]{0x0000000000000002L,0x0000000004400000L});
+    public static final BitSet FOLLOW_paren_chunk_in_from_source3374 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
+    public static final BitSet FOLLOW_expression_chain_in_from_source3381 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOT_in_expression_chain3414 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_ID_in_expression_chain3421 = new BitSet(new long[]{0x0000000000000002L,0x0008000004400000L});
+    public static final BitSet FOLLOW_paren_chunk_in_expression_chain3437 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
+    public static final BitSet FOLLOW_square_chunk_in_expression_chain3451 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
+    public static final BitSet FOLLOW_expression_chain_in_expression_chain3462 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_binding_in_lhs_pattern3495 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_lhs_pattern3508 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_label_in_fact_binding3528 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
+    public static final BitSet FOLLOW_fact_in_fact_binding3534 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_binding3541 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
+    public static final BitSet FOLLOW_fact_binding_expression_in_fact_binding3549 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_binding3557 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_fact_binding_expression3598 = new BitSet(new long[]{0x0000000000000002L,0x0000000800200000L});
+    public static final BitSet FOLLOW_or_key_in_fact_binding_expression3610 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_fact_binding_expression3616 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
+    public static final BitSet FOLLOW_fact_in_fact_binding_expression3621 = new BitSet(new long[]{0x0000000000000002L,0x0000000800200000L});
+    public static final BitSet FOLLOW_pattern_type_in_fact3661 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact3666 = new BitSet(new long[]{0x0000000000000000L,0x0000000014200000L});
+    public static final BitSet FOLLOW_constraints_in_fact3677 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact3683 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_constraint_in_constraints3717 = new BitSet(new long[]{0x0000000000000002L,0x0000000008000000L});
+    public static final BitSet FOLLOW_COMMA_in_constraints3721 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
+    public static final BitSet FOLLOW_constraint_in_constraints3728 = new BitSet(new long[]{0x0000000000000002L,0x0000000008000000L});
+    public static final BitSet FOLLOW_or_constr_in_constraint3742 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr3753 = new BitSet(new long[]{0x0000000000000002L,0x0000000800000000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_constr3757 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr3764 = new BitSet(new long[]{0x0000000000000002L,0x0000000800000000L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr3779 = new BitSet(new long[]{0x0000000000000002L,0x0000001000000000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_constr3783 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr3790 = new BitSet(new long[]{0x0000000000000002L,0x0000001000000000L});
+    public static final BitSet FOLLOW_eval_key_in_unary_constr3823 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_unary_constr3826 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_field_constraint_in_unary_constr3831 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_unary_constr3837 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
+    public static final BitSet FOLLOW_or_constr_in_unary_constr3847 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_unary_constr3852 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_label_in_field_constraint3881 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_accessor_path_in_field_constraint3883 = new BitSet(new long[]{0x0000000000000002L,0x0001FC0004200000L});
+    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint3890 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ARROW_in_field_constraint3896 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_field_constraint3900 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_path_in_field_constraint3954 = new BitSet(new long[]{0x0000000000000000L,0x0001F80004200000L});
+    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint3956 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_label3981 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
+    public static final BitSet FOLLOW_COLON_in_label3988 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective4009 = new BitSet(new long[]{0x0000000000000002L,0x0000000800000000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_restr_connective4015 = new BitSet(new long[]{0x0000000000000000L,0x0001F80004200000L});
+    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective4023 = new BitSet(new long[]{0x0000000000000002L,0x0000000800000000L});
+    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective4038 = new BitSet(new long[]{0x0000000000000002L,0x0000001000000000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_restr_connective4044 = new BitSet(new long[]{0x0000000000000000L,0x0001F80004200000L});
+    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective4051 = new BitSet(new long[]{0x0000000000000002L,0x0000001000000000L});
+    public static final BitSet FOLLOW_compound_operator_in_constraint_expression4076 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_simple_operator_in_constraint_expression4081 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_constraint_expression4086 = new BitSet(new long[]{0x0000000000000000L,0x0001F80004200000L});
+    public static final BitSet FOLLOW_or_restr_connective_in_constraint_expression4095 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_constraint_expression4100 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EQUAL_in_simple_operator4130 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
+    public static final BitSet FOLLOW_GREATER_in_simple_operator4138 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
+    public static final BitSet FOLLOW_GREATER_EQUAL_in_simple_operator4146 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
+    public static final BitSet FOLLOW_LESS_in_simple_operator4154 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
+    public static final BitSet FOLLOW_LESS_EQUAL_in_simple_operator4162 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
+    public static final BitSet FOLLOW_NOT_EQUAL_in_simple_operator4170 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
+    public static final BitSet FOLLOW_not_key_in_simple_operator4178 = new BitSet(new long[]{0x0000000000000000L,0x0001F80000200000L});
+    public static final BitSet FOLLOW_contains_key_in_simple_operator4185 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
+    public static final BitSet FOLLOW_soundslike_key_in_simple_operator4192 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
+    public static final BitSet FOLLOW_matches_key_in_simple_operator4199 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
+    public static final BitSet FOLLOW_memberof_key_in_simple_operator4206 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
+    public static final BitSet FOLLOW_operator_key_in_simple_operator4213 = new BitSet(new long[]{0x0000000000000000L,0x000E000606200000L});
+    public static final BitSet FOLLOW_square_chunk_in_simple_operator4216 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
+    public static final BitSet FOLLOW_expression_value_in_simple_operator4253 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_in_key_in_compound_operator4273 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_not_key_in_compound_operator4278 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_in_key_in_compound_operator4280 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_compound_operator4291 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
+    public static final BitSet FOLLOW_expression_value_in_compound_operator4299 = new BitSet(new long[]{0x0000000000000000L,0x0000000018000000L});
+    public static final BitSet FOLLOW_COMMA_in_compound_operator4303 = new BitSet(new long[]{0x0000000000000000L,0x0006000606200000L});
+    public static final BitSet FOLLOW_expression_value_in_compound_operator4308 = new BitSet(new long[]{0x0000000000000000L,0x0000000018000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_compound_operator4316 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_operator_key4347 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_neg_operator_key4392 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_path_in_expression_value4432 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_constraint_in_expression_value4437 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_expression_value4443 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_literal_constraint4462 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INT_in_literal_constraint4469 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FLOAT_in_literal_constraint4476 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_BOOL_in_literal_constraint4483 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NULL_in_literal_constraint4490 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_pattern_type4505 = new BitSet(new long[]{0x0000000000000002L,0x0008000000400000L});
+    public static final BitSet FOLLOW_DOT_in_pattern_type4511 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_ID_in_pattern_type4515 = new BitSet(new long[]{0x0000000000000002L,0x0008000000400000L});
+    public static final BitSet FOLLOW_dimension_definition_in_pattern_type4530 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
+    public static final BitSet FOLLOW_ID_in_data_type4558 = new BitSet(new long[]{0x0000000000000002L,0x0008000000400000L});
+    public static final BitSet FOLLOW_DOT_in_data_type4564 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_ID_in_data_type4568 = new BitSet(new long[]{0x0000000000000002L,0x0008000000400000L});
+    public static final BitSet FOLLOW_dimension_definition_in_data_type4573 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_dimension_definition4602 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dimension_definition4609 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_element_in_accessor_path4623 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
+    public static final BitSet FOLLOW_DOT_in_accessor_path4627 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_accessor_element_in_accessor_path4631 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
+    public static final BitSet FOLLOW_ID_in_accessor_element4655 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
+    public static final BitSet FOLLOW_square_chunk_in_accessor_element4661 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
+    public static final BitSet FOLLOW_rhs_chunk_data_in_rhs_chunk4690 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_THEN_in_rhs_chunk_data4709 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
+    public static final BitSet FOLLOW_set_in_rhs_chunk_data4722 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
+    public static final BitSet FOLLOW_END_in_rhs_chunk_data4735 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_rhs_chunk_data4741 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk4760 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_curly_chunk_data4783 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
+    public static final BitSet FOLLOW_set_in_curly_chunk_data4795 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
+    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk_data4811 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_curly_chunk_data4822 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk4843 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk_data4867 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
+    public static final BitSet FOLLOW_set_in_paren_chunk_data4879 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
+    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk_data4895 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk_data4906 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk4927 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk_data4950 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
+    public static final BitSet FOLLOW_set_in_square_chunk_data4962 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
+    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk_data4977 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x000000000000000FL});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk_data4988 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key5012 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
+    public static final BitSet FOLLOW_MISC_in_lock_on_active_key5016 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key5020 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
+    public static final BitSet FOLLOW_MISC_in_lock_on_active_key5024 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key5028 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_date_effective_key5060 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
+    public static final BitSet FOLLOW_MISC_in_date_effective_key5064 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_ID_in_date_effective_key5068 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_date_expires_key5100 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
+    public static final BitSet FOLLOW_MISC_in_date_expires_key5104 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_ID_in_date_expires_key5108 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_no_loop_key5140 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
+    public static final BitSet FOLLOW_MISC_in_no_loop_key5144 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_ID_in_no_loop_key5148 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_auto_focus_key5180 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
+    public static final BitSet FOLLOW_MISC_in_auto_focus_key5184 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_ID_in_auto_focus_key5188 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_activation_group_key5220 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
+    public static final BitSet FOLLOW_MISC_in_activation_group_key5224 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_ID_in_activation_group_key5228 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_agenda_group_key5260 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
+    public static final BitSet FOLLOW_MISC_in_agenda_group_key5264 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_ID_in_agenda_group_key5268 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_ruleflow_group_key5300 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
+    public static final BitSet FOLLOW_MISC_in_ruleflow_group_key5304 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_ID_in_ruleflow_group_key5308 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_entry_point_key5340 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
+    public static final BitSet FOLLOW_MISC_in_entry_point_key5344 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_ID_in_entry_point_key5348 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_duration_key5377 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_package_key5403 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_import_key5430 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_dialect_key5457 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_salience_key5484 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_enabled_key5511 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_attributes_key5538 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_rule_key5565 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_extend_key5592 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_template_key5619 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_query_key5646 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_declare_key5673 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_function_key5700 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_global_key5727 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_eval_key5754 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_contains_key5781 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_matches_key5808 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_excludes_key5835 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_soundslike_key5862 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_memberof_key5889 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_not_key5916 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_in_key5943 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_or_key5970 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_and_key5997 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_exists_key6024 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_forall_key6051 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_action_key6078 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_reverse_key6105 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_result_key6132 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred1_DRL2046 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_or_key_in_synpred1_DRL2048 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_or_key_in_synpred2_DRL2115 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_synpred2_DRL2117 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred3_DRL2174 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_and_key_in_synpred3_DRL2176 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_key_in_synpred4_DRL2244 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_synpred4_DRL2246 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SEMICOLON_in_synpred5_DRL2369 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred6_DRL2406 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_or_key_in_synpred6_DRL2409 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_key_in_synpred6_DRL2411 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred7_DRL2534 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_or_key_in_synpred7_DRL2537 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_key_in_synpred7_DRL2539 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred8_DRL3368 = new BitSet(new long[]{0x0000000000000002L});
 
-}
+}
\ No newline at end of file

Modified: labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java
===================================================================
--- labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java	2008-11-13 00:09:49 UTC (rev 23848)
+++ labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java	2008-11-13 03:06:09 UTC (rev 23849)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 src/main/resources/org/drools/lang/DescrBuilderTree.g 2008-11-11 20:36:19
+// $ANTLR 3.1.1 /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g 2008-11-13 00:21:27
 
 	package org.drools.lang;
 
@@ -168,15 +168,23 @@
     public static final int VK_DECLARE=64;
     public static final int C_STYLE_SINGLE_LINE_COMMENT=130;
 
+    // delegates
+    // delegators
+
+
         public DescrBuilderTree(TreeNodeStream input) {
-            super(input);
+            this(input, new RecognizerSharedState());
         }
+        public DescrBuilderTree(TreeNodeStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
         
 
-    public String[] getTokenNames() { return tokenNames; }
-    public String getGrammarFileName() { return "src/main/resources/org/drools/lang/DescrBuilderTree.g"; }
+    public String[] getTokenNames() { return DescrBuilderTree.tokenNames; }
+    public String getGrammarFileName() { return "/Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g"; }
 
-    
+
     	DescrFactory factory = new DescrFactory();
     	PackageDescr packageDescr = null;
     	
@@ -186,12 +194,12 @@
 
 
 
-    // $ANTLR start compilation_unit
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:48:1: compilation_unit : ^( VT_COMPILATION_UNIT package_statement ( statement )* ) ;
+    // $ANTLR start "compilation_unit"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:48:1: compilation_unit : ^( VT_COMPILATION_UNIT package_statement ( statement )* ) ;
     public final void compilation_unit() throws RecognitionException {
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:49:2: ( ^( VT_COMPILATION_UNIT package_statement ( statement )* ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:49:4: ^( VT_COMPILATION_UNIT package_statement ( statement )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:49:2: ( ^( VT_COMPILATION_UNIT package_statement ( statement )* ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:49:4: ^( VT_COMPILATION_UNIT package_statement ( statement )* )
             {
             match(input,VT_COMPILATION_UNIT,FOLLOW_VT_COMPILATION_UNIT_in_compilation_unit49); 
 
@@ -199,9 +207,10 @@
                 match(input, Token.DOWN, null); 
                 pushFollow(FOLLOW_package_statement_in_compilation_unit51);
                 package_statement();
-                _fsp--;
 
-                // src/main/resources/org/drools/lang/DescrBuilderTree.g:49:44: ( statement )*
+                state._fsp--;
+
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:49:44: ( statement )*
                 loop1:
                 do {
                     int alt1=2;
@@ -214,13 +223,14 @@
 
                     switch (alt1) {
                 	case 1 :
-                	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:49:44: statement
+                	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:49:44: statement
                 	    {
                 	    pushFollow(FOLLOW_statement_in_compilation_unit53);
                 	    statement();
-                	    _fsp--;
 
+                	    state._fsp--;
 
+
                 	    }
                 	    break;
 
@@ -244,11 +254,11 @@
         }
         return ;
     }
-    // $ANTLR end compilation_unit
+    // $ANTLR end "compilation_unit"
 
 
-    // $ANTLR start package_statement
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:52:1: package_statement returns [String packageName] : ( ^( VK_PACKAGE packageId= package_id ) | );
+    // $ANTLR start "package_statement"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:52:1: package_statement returns [String packageName] : ( ^( VK_PACKAGE packageId= package_id ) | );
     public final String package_statement() throws RecognitionException {
         String packageName = null;
 
@@ -256,7 +266,7 @@
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:53:2: ( ^( VK_PACKAGE packageId= package_id ) | )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:53:2: ( ^( VK_PACKAGE packageId= package_id ) | )
             int alt2=2;
             int LA2_0 = input.LA(1);
 
@@ -268,22 +278,23 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("52:1: package_statement returns [String packageName] : ( ^( VK_PACKAGE packageId= package_id ) | );", 2, 0, input);
+                    new NoViableAltException("", 2, 0, input);
 
                 throw nvae;
             }
             switch (alt2) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:53:4: ^( VK_PACKAGE packageId= package_id )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:53:4: ^( VK_PACKAGE packageId= package_id )
                     {
                     match(input,VK_PACKAGE,FOLLOW_VK_PACKAGE_in_package_statement71); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_package_id_in_package_statement75);
                     packageId=package_id();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
                     	this.packageDescr = factory.createPackage(packageId);	
                     		packageName = packageDescr.getName();	
@@ -291,7 +302,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:57:2: 
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:57:2: 
                     {
                     	this.packageDescr = factory.createPackage(null);	
                     		packageName = "";	
@@ -309,11 +320,11 @@
         }
         return packageName;
     }
-    // $ANTLR end package_statement
+    // $ANTLR end "package_statement"
 
 
-    // $ANTLR start package_id
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:61:1: package_id returns [List idList] : ^( VT_PACKAGE_ID (tempList+= ID )+ ) ;
+    // $ANTLR start "package_id"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:61:1: package_id returns [List idList] : ^( VT_PACKAGE_ID (tempList+= ID )+ ) ;
     public final List package_id() throws RecognitionException {
         List idList = null;
 
@@ -321,13 +332,13 @@
         List list_tempList=null;
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:62:2: ( ^( VT_PACKAGE_ID (tempList+= ID )+ ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:62:4: ^( VT_PACKAGE_ID (tempList+= ID )+ )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:62:2: ( ^( VT_PACKAGE_ID (tempList+= ID )+ ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:62:4: ^( VT_PACKAGE_ID (tempList+= ID )+ )
             {
             match(input,VT_PACKAGE_ID,FOLLOW_VT_PACKAGE_ID_in_package_id102); 
 
             match(input, Token.DOWN, null); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:62:28: (tempList+= ID )+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:62:28: (tempList+= ID )+
             int cnt3=0;
             loop3:
             do {
@@ -341,10 +352,9 @@
 
                 switch (alt3) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:62:28: tempList+= ID
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:62:28: tempList+= ID
             	    {
-            	    tempList=(DroolsTree)input.LT(1);
-            	    match(input,ID,FOLLOW_ID_in_package_id106); 
+            	    tempList=(DroolsTree)match(input,ID,FOLLOW_ID_in_package_id106); 
             	    if (list_tempList==null) list_tempList=new ArrayList();
             	    list_tempList.add(tempList);
 
@@ -376,11 +386,11 @@
         }
         return idList;
     }
-    // $ANTLR end package_id
+    // $ANTLR end "package_id"
 
 
-    // $ANTLR start statement
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:66:1: statement : (a= rule_attribute | fi= function_import_statement | is= import_statement | gl= global | fn= function | tp= template | rl= rule | qr= query | td= type_declaration );
+    // $ANTLR start "statement"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:66:1: statement : (a= rule_attribute | fi= function_import_statement | is= import_statement | gl= global | fn= function | tp= template | rl= rule | qr= query | td= type_declaration );
     public final void statement() throws RecognitionException {
         AttributeDescr a = null;
 
@@ -388,21 +398,21 @@
 
         ImportDescr is = null;
 
-        global_return gl = null;
+        DescrBuilderTree.global_return gl = null;
 
-        function_return fn = null;
+        DescrBuilderTree.function_return fn = null;
 
-        template_return tp = null;
+        DescrBuilderTree.template_return tp = null;
 
-        rule_return rl = null;
+        DescrBuilderTree.rule_return rl = null;
 
-        query_return qr = null;
+        DescrBuilderTree.query_return qr = null;
 
         TypeDeclarationDescr td = null;
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:67:2: (a= rule_attribute | fi= function_import_statement | is= import_statement | gl= global | fn= function | tp= template | rl= rule | qr= query | td= type_declaration )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:67:2: (a= rule_attribute | fi= function_import_statement | is= import_statement | gl= global | fn= function | tp= template | rl= rule | qr= query | td= type_declaration )
             int alt4=9;
             switch ( input.LA(1) ) {
             case VK_DATE_EFFECTIVE:
@@ -463,107 +473,116 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("66:1: statement : (a= rule_attribute | fi= function_import_statement | is= import_statement | gl= global | fn= function | tp= template | rl= rule | qr= query | td= type_declaration );", 4, 0, input);
+                    new NoViableAltException("", 4, 0, input);
 
                 throw nvae;
             }
 
             switch (alt4) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:67:4: a= rule_attribute
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:67:4: a= rule_attribute
                     {
                     pushFollow(FOLLOW_rule_attribute_in_statement124);
                     a=rule_attribute();
-                    _fsp--;
 
+                    state._fsp--;
+
                     	this.packageDescr.addAttribute(a);	
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:69:4: fi= function_import_statement
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:69:4: fi= function_import_statement
                     {
                     pushFollow(FOLLOW_function_import_statement_in_statement134);
                     fi=function_import_statement();
-                    _fsp--;
 
+                    state._fsp--;
+
                     	this.packageDescr.addFunctionImport(fi);	
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:71:4: is= import_statement
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:71:4: is= import_statement
                     {
                     pushFollow(FOLLOW_import_statement_in_statement144);
                     is=import_statement();
-                    _fsp--;
 
+                    state._fsp--;
+
                     	this.packageDescr.addImport(is);	
 
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:73:4: gl= global
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:73:4: gl= global
                     {
                     pushFollow(FOLLOW_global_in_statement155);
                     gl=global();
-                    _fsp--;
 
-                    	this.packageDescr.addGlobal(gl.globalDescr);	
+                    state._fsp--;
 
+                    	this.packageDescr.addGlobal((gl!=null?gl.globalDescr:null));	
+
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:75:4: fn= function
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:75:4: fn= function
                     {
                     pushFollow(FOLLOW_function_in_statement165);
                     fn=function();
-                    _fsp--;
 
-                    	this.packageDescr.addFunction(fn.functionDescr);	
+                    state._fsp--;
 
+                    	this.packageDescr.addFunction((fn!=null?fn.functionDescr:null));	
+
                     }
                     break;
                 case 6 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:77:4: tp= template
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:77:4: tp= template
                     {
                     pushFollow(FOLLOW_template_in_statement175);
                     tp=template();
-                    _fsp--;
 
-                    	this.packageDescr.addFactTemplate(tp.factTemplateDescr);	
+                    state._fsp--;
 
+                    	this.packageDescr.addFactTemplate((tp!=null?tp.factTemplateDescr:null));	
+
                     }
                     break;
                 case 7 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:79:4: rl= rule
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:79:4: rl= rule
                     {
                     pushFollow(FOLLOW_rule_in_statement185);
                     rl=rule();
-                    _fsp--;
 
-                    	this.packageDescr.addRule(rl.ruleDescr);	
+                    state._fsp--;
 
+                    	this.packageDescr.addRule((rl!=null?rl.ruleDescr:null));	
+
                     }
                     break;
                 case 8 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:81:4: qr= query
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:81:4: qr= query
                     {
                     pushFollow(FOLLOW_query_in_statement195);
                     qr=query();
-                    _fsp--;
 
-                    	this.packageDescr.addRule(qr.queryDescr);	
+                    state._fsp--;
 
+                    	this.packageDescr.addRule((qr!=null?qr.queryDescr:null));	
+
                     }
                     break;
                 case 9 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:83:4: td= type_declaration
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:83:4: td= type_declaration
                     {
                     pushFollow(FOLLOW_type_declaration_in_statement205);
                     td=type_declaration();
-                    _fsp--;
 
+                    state._fsp--;
+
                     	this.packageDescr.addTypeDeclaration(td);	
 
                     }
@@ -579,33 +598,33 @@
         }
         return ;
     }
-    // $ANTLR end statement
+    // $ANTLR end "statement"
 
 
-    // $ANTLR start import_statement
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:87:1: import_statement returns [ImportDescr importDescr] : ^(importStart= VK_IMPORT importId= import_name ) ;
+    // $ANTLR start "import_statement"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:87:1: import_statement returns [ImportDescr importDescr] : ^(importStart= VK_IMPORT importId= import_name ) ;
     public final ImportDescr import_statement() throws RecognitionException {
         ImportDescr importDescr = null;
 
         DroolsTree importStart=null;
-        import_name_return importId = null;
+        DescrBuilderTree.import_name_return importId = null;
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:88:2: ( ^(importStart= VK_IMPORT importId= import_name ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:88:4: ^(importStart= VK_IMPORT importId= import_name )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:88:2: ( ^(importStart= VK_IMPORT importId= import_name ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:88:4: ^(importStart= VK_IMPORT importId= import_name )
             {
-            importStart=(DroolsTree)input.LT(1);
-            match(input,VK_IMPORT,FOLLOW_VK_IMPORT_in_import_statement226); 
+            importStart=(DroolsTree)match(input,VK_IMPORT,FOLLOW_VK_IMPORT_in_import_statement226); 
 
             match(input, Token.DOWN, null); 
             pushFollow(FOLLOW_import_name_in_import_statement230);
             importId=import_name();
-            _fsp--;
 
+            state._fsp--;
 
+
             match(input, Token.UP, null); 
-            	importDescr = factory.createImport(importStart, importId.idList, importId.dotStar);	
+            	importDescr = factory.createImport(importStart, (importId!=null?importId.idList:null), (importId!=null?importId.dotStar:null));	
 
             }
 
@@ -618,34 +637,34 @@
         }
         return importDescr;
     }
-    // $ANTLR end import_statement
+    // $ANTLR end "import_statement"
 
 
-    // $ANTLR start function_import_statement
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:92:1: function_import_statement returns [FunctionImportDescr functionImportDescr] : ^(importStart= VT_FUNCTION_IMPORT VK_FUNCTION importId= import_name ) ;
+    // $ANTLR start "function_import_statement"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:92:1: function_import_statement returns [FunctionImportDescr functionImportDescr] : ^(importStart= VT_FUNCTION_IMPORT VK_FUNCTION importId= import_name ) ;
     public final FunctionImportDescr function_import_statement() throws RecognitionException {
         FunctionImportDescr functionImportDescr = null;
 
         DroolsTree importStart=null;
-        import_name_return importId = null;
+        DescrBuilderTree.import_name_return importId = null;
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:93:2: ( ^(importStart= VT_FUNCTION_IMPORT VK_FUNCTION importId= import_name ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:93:4: ^(importStart= VT_FUNCTION_IMPORT VK_FUNCTION importId= import_name )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:93:2: ( ^(importStart= VT_FUNCTION_IMPORT VK_FUNCTION importId= import_name ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:93:4: ^(importStart= VT_FUNCTION_IMPORT VK_FUNCTION importId= import_name )
             {
-            importStart=(DroolsTree)input.LT(1);
-            match(input,VT_FUNCTION_IMPORT,FOLLOW_VT_FUNCTION_IMPORT_in_function_import_statement252); 
+            importStart=(DroolsTree)match(input,VT_FUNCTION_IMPORT,FOLLOW_VT_FUNCTION_IMPORT_in_function_import_statement252); 
 
             match(input, Token.DOWN, null); 
             match(input,VK_FUNCTION,FOLLOW_VK_FUNCTION_in_function_import_statement254); 
             pushFollow(FOLLOW_import_name_in_function_import_statement258);
             importId=import_name();
-            _fsp--;
 
+            state._fsp--;
 
+
             match(input, Token.UP, null); 
-            	functionImportDescr = factory.createFunctionImport(importStart, importId.idList, importId.dotStar);	
+            	functionImportDescr = factory.createFunctionImport(importStart, (importId!=null?importId.idList:null), (importId!=null?importId.dotStar:null));	
 
             }
 
@@ -658,17 +677,17 @@
         }
         return functionImportDescr;
     }
-    // $ANTLR end function_import_statement
+    // $ANTLR end "function_import_statement"
 
     public static class import_name_return extends TreeRuleReturnScope {
         public List idList;
         public DroolsTree dotStar;
     };
 
-    // $ANTLR start import_name
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:97:1: import_name returns [List idList, DroolsTree dotStar] : ^( VT_IMPORT_ID (tempList+= ID )+ (tempDotStar= DOT_STAR )? ) ;
-    public final import_name_return import_name() throws RecognitionException {
-        import_name_return retval = new import_name_return();
+    // $ANTLR start "import_name"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:97:1: import_name returns [List idList, DroolsTree dotStar] : ^( VT_IMPORT_ID (tempList+= ID )+ (tempDotStar= DOT_STAR )? ) ;
+    public final DescrBuilderTree.import_name_return import_name() throws RecognitionException {
+        DescrBuilderTree.import_name_return retval = new DescrBuilderTree.import_name_return();
         retval.start = input.LT(1);
 
         DroolsTree tempDotStar=null;
@@ -676,13 +695,13 @@
         List list_tempList=null;
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:98:2: ( ^( VT_IMPORT_ID (tempList+= ID )+ (tempDotStar= DOT_STAR )? ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:98:4: ^( VT_IMPORT_ID (tempList+= ID )+ (tempDotStar= DOT_STAR )? )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:98:2: ( ^( VT_IMPORT_ID (tempList+= ID )+ (tempDotStar= DOT_STAR )? ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:98:4: ^( VT_IMPORT_ID (tempList+= ID )+ (tempDotStar= DOT_STAR )? )
             {
             match(input,VT_IMPORT_ID,FOLLOW_VT_IMPORT_ID_in_import_name277); 
 
             match(input, Token.DOWN, null); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:98:27: (tempList+= ID )+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:98:27: (tempList+= ID )+
             int cnt5=0;
             loop5:
             do {
@@ -696,10 +715,9 @@
 
                 switch (alt5) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:98:27: tempList+= ID
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:98:27: tempList+= ID
             	    {
-            	    tempList=(DroolsTree)input.LT(1);
-            	    match(input,ID,FOLLOW_ID_in_import_name281); 
+            	    tempList=(DroolsTree)match(input,ID,FOLLOW_ID_in_import_name281); 
             	    if (list_tempList==null) list_tempList=new ArrayList();
             	    list_tempList.add(tempList);
 
@@ -716,7 +734,7 @@
                 cnt5++;
             } while (true);
 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:98:44: (tempDotStar= DOT_STAR )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:98:44: (tempDotStar= DOT_STAR )?
             int alt6=2;
             int LA6_0 = input.LA(1);
 
@@ -725,10 +743,9 @@
             }
             switch (alt6) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:98:44: tempDotStar= DOT_STAR
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:98:44: tempDotStar= DOT_STAR
                     {
-                    tempDotStar=(DroolsTree)input.LT(1);
-                    match(input,DOT_STAR,FOLLOW_DOT_STAR_in_import_name286); 
+                    tempDotStar=(DroolsTree)match(input,DOT_STAR,FOLLOW_DOT_STAR_in_import_name286); 
 
                     }
                     break;
@@ -751,16 +768,16 @@
         }
         return retval;
     }
-    // $ANTLR end import_name
+    // $ANTLR end "import_name"
 
     public static class global_return extends TreeRuleReturnScope {
         public GlobalDescr globalDescr;
     };
 
-    // $ANTLR start global
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:103:1: global returns [GlobalDescr globalDescr] : ^(start= VK_GLOBAL dt= data_type globalId= VT_GLOBAL_ID ) ;
-    public final global_return global() throws RecognitionException {
-        global_return retval = new global_return();
+    // $ANTLR start "global"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:103:1: global returns [GlobalDescr globalDescr] : ^(start= VK_GLOBAL dt= data_type globalId= VT_GLOBAL_ID ) ;
+    public final DescrBuilderTree.global_return global() throws RecognitionException {
+        DescrBuilderTree.global_return retval = new DescrBuilderTree.global_return();
         retval.start = input.LT(1);
 
         DroolsTree start=null;
@@ -769,20 +786,19 @@
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:104:2: ( ^(start= VK_GLOBAL dt= data_type globalId= VT_GLOBAL_ID ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:104:4: ^(start= VK_GLOBAL dt= data_type globalId= VT_GLOBAL_ID )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:104:2: ( ^(start= VK_GLOBAL dt= data_type globalId= VT_GLOBAL_ID ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:104:4: ^(start= VK_GLOBAL dt= data_type globalId= VT_GLOBAL_ID )
             {
-            start=(DroolsTree)input.LT(1);
-            match(input,VK_GLOBAL,FOLLOW_VK_GLOBAL_in_global309); 
+            start=(DroolsTree)match(input,VK_GLOBAL,FOLLOW_VK_GLOBAL_in_global309); 
 
             match(input, Token.DOWN, null); 
             pushFollow(FOLLOW_data_type_in_global313);
             dt=data_type();
-            _fsp--;
 
-            globalId=(DroolsTree)input.LT(1);
-            match(input,VT_GLOBAL_ID,FOLLOW_VT_GLOBAL_ID_in_global317); 
+            state._fsp--;
 
+            globalId=(DroolsTree)match(input,VT_GLOBAL_ID,FOLLOW_VT_GLOBAL_ID_in_global317); 
+
             match(input, Token.UP, null); 
             	retval.globalDescr = factory.createGlobal(start,dt, globalId);	
 
@@ -797,16 +813,16 @@
         }
         return retval;
     }
-    // $ANTLR end global
+    // $ANTLR end "global"
 
     public static class function_return extends TreeRuleReturnScope {
         public FunctionDescr functionDescr;
     };
 
-    // $ANTLR start function
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:108:1: function returns [FunctionDescr functionDescr] : ^(start= VK_FUNCTION (dt= data_type )? functionId= VT_FUNCTION_ID params= parameters content= VT_CURLY_CHUNK ) ;
-    public final function_return function() throws RecognitionException {
-        function_return retval = new function_return();
+    // $ANTLR start "function"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:108:1: function returns [FunctionDescr functionDescr] : ^(start= VK_FUNCTION (dt= data_type )? functionId= VT_FUNCTION_ID params= parameters content= VT_CURLY_CHUNK ) ;
+    public final DescrBuilderTree.function_return function() throws RecognitionException {
+        DescrBuilderTree.function_return retval = new DescrBuilderTree.function_return();
         retval.start = input.LT(1);
 
         DroolsTree start=null;
@@ -818,14 +834,13 @@
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:109:2: ( ^(start= VK_FUNCTION (dt= data_type )? functionId= VT_FUNCTION_ID params= parameters content= VT_CURLY_CHUNK ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:109:4: ^(start= VK_FUNCTION (dt= data_type )? functionId= VT_FUNCTION_ID params= parameters content= VT_CURLY_CHUNK )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:109:2: ( ^(start= VK_FUNCTION (dt= data_type )? functionId= VT_FUNCTION_ID params= parameters content= VT_CURLY_CHUNK ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:109:4: ^(start= VK_FUNCTION (dt= data_type )? functionId= VT_FUNCTION_ID params= parameters content= VT_CURLY_CHUNK )
             {
-            start=(DroolsTree)input.LT(1);
-            match(input,VK_FUNCTION,FOLLOW_VK_FUNCTION_in_function339); 
+            start=(DroolsTree)match(input,VK_FUNCTION,FOLLOW_VK_FUNCTION_in_function339); 
 
             match(input, Token.DOWN, null); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:109:26: (dt= data_type )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:109:26: (dt= data_type )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -834,27 +849,27 @@
             }
             switch (alt7) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:109:26: dt= data_type
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:109:26: dt= data_type
                     {
                     pushFollow(FOLLOW_data_type_in_function343);
                     dt=data_type();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
             }
 
-            functionId=(DroolsTree)input.LT(1);
-            match(input,VT_FUNCTION_ID,FOLLOW_VT_FUNCTION_ID_in_function348); 
+            functionId=(DroolsTree)match(input,VT_FUNCTION_ID,FOLLOW_VT_FUNCTION_ID_in_function348); 
             pushFollow(FOLLOW_parameters_in_function352);
             params=parameters();
-            _fsp--;
 
-            content=(DroolsTree)input.LT(1);
-            match(input,VT_CURLY_CHUNK,FOLLOW_VT_CURLY_CHUNK_in_function356); 
+            state._fsp--;
 
+            content=(DroolsTree)match(input,VT_CURLY_CHUNK,FOLLOW_VT_CURLY_CHUNK_in_function356); 
+
             match(input, Token.UP, null); 
             	retval.functionDescr = factory.createFunction(start, dt, functionId, params, content);	
 
@@ -869,16 +884,16 @@
         }
         return retval;
     }
-    // $ANTLR end function
+    // $ANTLR end "function"
 
     public static class template_return extends TreeRuleReturnScope {
         public FactTemplateDescr factTemplateDescr;
     };
 
-    // $ANTLR start template
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:113:1: template returns [FactTemplateDescr factTemplateDescr] : ^(start= VK_TEMPLATE id= VT_TEMPLATE_ID (ts= template_slot )+ end= END ) ;
-    public final template_return template() throws RecognitionException {
-        template_return retval = new template_return();
+    // $ANTLR start "template"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:113:1: template returns [FactTemplateDescr factTemplateDescr] : ^(start= VK_TEMPLATE id= VT_TEMPLATE_ID (ts= template_slot )+ end= END ) ;
+    public final DescrBuilderTree.template_return template() throws RecognitionException {
+        DescrBuilderTree.template_return retval = new DescrBuilderTree.template_return();
         retval.start = input.LT(1);
 
         DroolsTree start=null;
@@ -887,20 +902,18 @@
         FieldTemplateDescr ts = null;
 
 
-        
+
         	List slotList = new LinkedList<FieldTemplateDescr>();
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:116:3: ( ^(start= VK_TEMPLATE id= VT_TEMPLATE_ID (ts= template_slot )+ end= END ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:116:5: ^(start= VK_TEMPLATE id= VT_TEMPLATE_ID (ts= template_slot )+ end= END )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:116:3: ( ^(start= VK_TEMPLATE id= VT_TEMPLATE_ID (ts= template_slot )+ end= END ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:116:5: ^(start= VK_TEMPLATE id= VT_TEMPLATE_ID (ts= template_slot )+ end= END )
             {
-            start=(DroolsTree)input.LT(1);
-            match(input,VK_TEMPLATE,FOLLOW_VK_TEMPLATE_in_template381); 
+            start=(DroolsTree)match(input,VK_TEMPLATE,FOLLOW_VK_TEMPLATE_in_template381); 
 
             match(input, Token.DOWN, null); 
-            id=(DroolsTree)input.LT(1);
-            match(input,VT_TEMPLATE_ID,FOLLOW_VT_TEMPLATE_ID_in_template385); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:117:4: (ts= template_slot )+
+            id=(DroolsTree)match(input,VT_TEMPLATE_ID,FOLLOW_VT_TEMPLATE_ID_in_template385); 
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:117:4: (ts= template_slot )+
             int cnt8=0;
             loop8:
             do {
@@ -914,12 +927,13 @@
 
                 switch (alt8) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:117:6: ts= template_slot
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:117:6: ts= template_slot
             	    {
             	    pushFollow(FOLLOW_template_slot_in_template394);
             	    ts=template_slot();
-            	    _fsp--;
 
+            	    state._fsp--;
+
             	    slotList.add(ts);
 
             	    }
@@ -934,8 +948,7 @@
                 cnt8++;
             } while (true);
 
-            end=(DroolsTree)input.LT(1);
-            match(input,END,FOLLOW_END_in_template402); 
+            end=(DroolsTree)match(input,END,FOLLOW_END_in_template402); 
 
             match(input, Token.UP, null); 
             	retval.factTemplateDescr = factory.createFactTemplate(start, id, slotList, end);	
@@ -951,11 +964,11 @@
         }
         return retval;
     }
-    // $ANTLR end template
+    // $ANTLR end "template"
 
 
-    // $ANTLR start template_slot
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:121:1: template_slot returns [FieldTemplateDescr fieldTemplateDescr] : ^( VT_SLOT dt= data_type id= VT_SLOT_ID ) ;
+    // $ANTLR start "template_slot"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:121:1: template_slot returns [FieldTemplateDescr fieldTemplateDescr] : ^( VT_SLOT dt= data_type id= VT_SLOT_ID ) ;
     public final FieldTemplateDescr template_slot() throws RecognitionException {
         FieldTemplateDescr fieldTemplateDescr = null;
 
@@ -964,19 +977,19 @@
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:122:2: ( ^( VT_SLOT dt= data_type id= VT_SLOT_ID ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:122:4: ^( VT_SLOT dt= data_type id= VT_SLOT_ID )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:122:2: ( ^( VT_SLOT dt= data_type id= VT_SLOT_ID ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:122:4: ^( VT_SLOT dt= data_type id= VT_SLOT_ID )
             {
             match(input,VT_SLOT,FOLLOW_VT_SLOT_in_template_slot422); 
 
             match(input, Token.DOWN, null); 
             pushFollow(FOLLOW_data_type_in_template_slot426);
             dt=data_type();
-            _fsp--;
 
-            id=(DroolsTree)input.LT(1);
-            match(input,VT_SLOT_ID,FOLLOW_VT_SLOT_ID_in_template_slot430); 
+            state._fsp--;
 
+            id=(DroolsTree)match(input,VT_SLOT_ID,FOLLOW_VT_SLOT_ID_in_template_slot430); 
+
             match(input, Token.UP, null); 
             	fieldTemplateDescr = factory.createFieldTemplate(dt, id);	
 
@@ -991,16 +1004,16 @@
         }
         return fieldTemplateDescr;
     }
-    // $ANTLR end template_slot
+    // $ANTLR end "template_slot"
 
     public static class query_return extends TreeRuleReturnScope {
         public QueryDescr queryDescr;
     };
 
-    // $ANTLR start query
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:126:1: query returns [QueryDescr queryDescr] : ^(start= VK_QUERY id= VT_QUERY_ID (params= parameters )? lb= lhs_block end= END ) ;
-    public final query_return query() throws RecognitionException {
-        query_return retval = new query_return();
+    // $ANTLR start "query"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:126:1: query returns [QueryDescr queryDescr] : ^(start= VK_QUERY id= VT_QUERY_ID (params= parameters )? lb= lhs_block end= END ) ;
+    public final DescrBuilderTree.query_return query() throws RecognitionException {
+        DescrBuilderTree.query_return retval = new DescrBuilderTree.query_return();
         retval.start = input.LT(1);
 
         DroolsTree start=null;
@@ -1012,16 +1025,14 @@
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:127:2: ( ^(start= VK_QUERY id= VT_QUERY_ID (params= parameters )? lb= lhs_block end= END ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:127:4: ^(start= VK_QUERY id= VT_QUERY_ID (params= parameters )? lb= lhs_block end= END )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:127:2: ( ^(start= VK_QUERY id= VT_QUERY_ID (params= parameters )? lb= lhs_block end= END ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:127:4: ^(start= VK_QUERY id= VT_QUERY_ID (params= parameters )? lb= lhs_block end= END )
             {
-            start=(DroolsTree)input.LT(1);
-            match(input,VK_QUERY,FOLLOW_VK_QUERY_in_query452); 
+            start=(DroolsTree)match(input,VK_QUERY,FOLLOW_VK_QUERY_in_query452); 
 
             match(input, Token.DOWN, null); 
-            id=(DroolsTree)input.LT(1);
-            match(input,VT_QUERY_ID,FOLLOW_VT_QUERY_ID_in_query456); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:127:42: (params= parameters )?
+            id=(DroolsTree)match(input,VT_QUERY_ID,FOLLOW_VT_QUERY_ID_in_query456); 
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:127:42: (params= parameters )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -1030,13 +1041,14 @@
             }
             switch (alt9) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:127:42: params= parameters
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:127:42: params= parameters
                     {
                     pushFollow(FOLLOW_parameters_in_query460);
                     params=parameters();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
@@ -1044,11 +1056,11 @@
 
             pushFollow(FOLLOW_lhs_block_in_query465);
             lb=lhs_block();
-            _fsp--;
 
-            end=(DroolsTree)input.LT(1);
-            match(input,END,FOLLOW_END_in_query469); 
+            state._fsp--;
 
+            end=(DroolsTree)match(input,END,FOLLOW_END_in_query469); 
+
             match(input, Token.UP, null); 
             	retval.queryDescr = factory.createQuery(start, id, params, lb, end);	
 
@@ -1063,16 +1075,16 @@
         }
         return retval;
     }
-    // $ANTLR end query
+    // $ANTLR end "query"
 
     public static class rule_return extends TreeRuleReturnScope {
         public RuleDescr ruleDescr;
     };
 
-    // $ANTLR start rule
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:131:1: rule returns [RuleDescr ruleDescr] : ^(start= VK_RULE id= VT_RULE_ID ( ^( VK_EXTEND parent_id= VT_RULE_ID ) )? (dm= decl_metadata )* (ra= rule_attributes )? (wn= when_part )? content= VT_RHS_CHUNK ) ;
-    public final rule_return rule() throws RecognitionException {
-        rule_return retval = new rule_return();
+    // $ANTLR start "rule"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:131:1: rule returns [RuleDescr ruleDescr] : ^(start= VK_RULE id= VT_RULE_ID ( ^( VK_EXTEND parent_id= VT_RULE_ID ) )? (dm= decl_metadata )* (ra= rule_attributes )? (wn= when_part )? content= VT_RHS_CHUNK ) ;
+    public final DescrBuilderTree.rule_return rule() throws RecognitionException {
+        DescrBuilderTree.rule_return retval = new DescrBuilderTree.rule_return();
         retval.start = input.LT(1);
 
         DroolsTree start=null;
@@ -1088,16 +1100,14 @@
 
         	List<Map> declMetadaList = new LinkedList<Map>();
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:133:2: ( ^(start= VK_RULE id= VT_RULE_ID ( ^( VK_EXTEND parent_id= VT_RULE_ID ) )? (dm= decl_metadata )* (ra= rule_attributes )? (wn= when_part )? content= VT_RHS_CHUNK ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:133:4: ^(start= VK_RULE id= VT_RULE_ID ( ^( VK_EXTEND parent_id= VT_RULE_ID ) )? (dm= decl_metadata )* (ra= rule_attributes )? (wn= when_part )? content= VT_RHS_CHUNK )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:133:2: ( ^(start= VK_RULE id= VT_RULE_ID ( ^( VK_EXTEND parent_id= VT_RULE_ID ) )? (dm= decl_metadata )* (ra= rule_attributes )? (wn= when_part )? content= VT_RHS_CHUNK ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:133:4: ^(start= VK_RULE id= VT_RULE_ID ( ^( VK_EXTEND parent_id= VT_RULE_ID ) )? (dm= decl_metadata )* (ra= rule_attributes )? (wn= when_part )? content= VT_RHS_CHUNK )
             {
-            start=(DroolsTree)input.LT(1);
-            match(input,VK_RULE,FOLLOW_VK_RULE_in_rule496); 
+            start=(DroolsTree)match(input,VK_RULE,FOLLOW_VK_RULE_in_rule496); 
 
             match(input, Token.DOWN, null); 
-            id=(DroolsTree)input.LT(1);
-            match(input,VT_RULE_ID,FOLLOW_VT_RULE_ID_in_rule500); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:133:35: ( ^( VK_EXTEND parent_id= VT_RULE_ID ) )?
+            id=(DroolsTree)match(input,VT_RULE_ID,FOLLOW_VT_RULE_ID_in_rule500); 
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:133:35: ( ^( VK_EXTEND parent_id= VT_RULE_ID ) )?
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -1106,13 +1116,12 @@
             }
             switch (alt10) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:133:36: ^( VK_EXTEND parent_id= VT_RULE_ID )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:133:36: ^( VK_EXTEND parent_id= VT_RULE_ID )
                     {
                     match(input,VK_EXTEND,FOLLOW_VK_EXTEND_in_rule505); 
 
                     match(input, Token.DOWN, null); 
-                    parent_id=(DroolsTree)input.LT(1);
-                    match(input,VT_RULE_ID,FOLLOW_VT_RULE_ID_in_rule509); 
+                    parent_id=(DroolsTree)match(input,VT_RULE_ID,FOLLOW_VT_RULE_ID_in_rule509); 
 
                     match(input, Token.UP, null); 
 
@@ -1121,7 +1130,7 @@
 
             }
 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:134:3: (dm= decl_metadata )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:134:3: (dm= decl_metadata )*
             loop11:
             do {
                 int alt11=2;
@@ -1134,12 +1143,13 @@
 
                 switch (alt11) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:134:4: dm= decl_metadata
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:134:4: dm= decl_metadata
             	    {
             	    pushFollow(FOLLOW_decl_metadata_in_rule519);
             	    dm=decl_metadata();
-            	    _fsp--;
 
+            	    state._fsp--;
+
             	    declMetadaList.add(dm);	
 
             	    }
@@ -1150,7 +1160,7 @@
                 }
             } while (true);
 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:135:6: (ra= rule_attributes )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:135:6: (ra= rule_attributes )?
             int alt12=2;
             int LA12_0 = input.LA(1);
 
@@ -1159,19 +1169,20 @@
             }
             switch (alt12) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:135:6: ra= rule_attributes
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:135:6: ra= rule_attributes
                     {
                     pushFollow(FOLLOW_rule_attributes_in_rule530);
                     ra=rule_attributes();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
             }
 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:136:6: (wn= when_part )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:136:6: (wn= when_part )?
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -1180,20 +1191,20 @@
             }
             switch (alt13) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:136:6: wn= when_part
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:136:6: wn= when_part
                     {
                     pushFollow(FOLLOW_when_part_in_rule539);
                     wn=when_part();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
             }
 
-            content=(DroolsTree)input.LT(1);
-            match(input,VT_RHS_CHUNK,FOLLOW_VT_RHS_CHUNK_in_rule544); 
+            content=(DroolsTree)match(input,VT_RHS_CHUNK,FOLLOW_VT_RHS_CHUNK_in_rule544); 
 
             match(input, Token.UP, null); 
             	retval.ruleDescr = factory.createRule(start, id, parent_id, ra, wn, content, declMetadaList);	
@@ -1209,11 +1220,11 @@
         }
         return retval;
     }
-    // $ANTLR end rule
+    // $ANTLR end "rule"
 
 
-    // $ANTLR start when_part
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:140:1: when_part returns [AndDescr andDescr] : WHEN lh= lhs_block ;
+    // $ANTLR start "when_part"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:140:1: when_part returns [AndDescr andDescr] : WHEN lh= lhs_block ;
     public final AndDescr when_part() throws RecognitionException {
         AndDescr andDescr = null;
 
@@ -1221,14 +1232,15 @@
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:141:2: ( WHEN lh= lhs_block )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:141:4: WHEN lh= lhs_block
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:141:2: ( WHEN lh= lhs_block )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:141:4: WHEN lh= lhs_block
             {
             match(input,WHEN,FOLLOW_WHEN_in_when_part563); 
             pushFollow(FOLLOW_lhs_block_in_when_part567);
             lh=lhs_block();
-            _fsp--;
 
+            state._fsp--;
+
             	andDescr = lh;	
 
             }
@@ -1242,28 +1254,28 @@
         }
         return andDescr;
     }
-    // $ANTLR end when_part
+    // $ANTLR end "when_part"
 
 
-    // $ANTLR start rule_attributes
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:145:1: rule_attributes returns [List attrList] : ^( VT_RULE_ATTRIBUTES ( VK_ATTRIBUTES )? (rl= rule_attribute )+ ) ;
+    // $ANTLR start "rule_attributes"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:145:1: rule_attributes returns [List attrList] : ^( VT_RULE_ATTRIBUTES ( VK_ATTRIBUTES )? (rl= rule_attribute )+ ) ;
     public final List rule_attributes() throws RecognitionException {
         List attrList = null;
 
         AttributeDescr rl = null;
 
 
-        
+
         	attrList = new LinkedList<AttributeDescr>();
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:148:3: ( ^( VT_RULE_ATTRIBUTES ( VK_ATTRIBUTES )? (rl= rule_attribute )+ ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:148:5: ^( VT_RULE_ATTRIBUTES ( VK_ATTRIBUTES )? (rl= rule_attribute )+ )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:148:3: ( ^( VT_RULE_ATTRIBUTES ( VK_ATTRIBUTES )? (rl= rule_attribute )+ ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:148:5: ^( VT_RULE_ATTRIBUTES ( VK_ATTRIBUTES )? (rl= rule_attribute )+ )
             {
             match(input,VT_RULE_ATTRIBUTES,FOLLOW_VT_RULE_ATTRIBUTES_in_rule_attributes589); 
 
             match(input, Token.DOWN, null); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:148:26: ( VK_ATTRIBUTES )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:148:26: ( VK_ATTRIBUTES )?
             int alt14=2;
             int LA14_0 = input.LA(1);
 
@@ -1272,7 +1284,7 @@
             }
             switch (alt14) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:148:26: VK_ATTRIBUTES
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:148:26: VK_ATTRIBUTES
                     {
                     match(input,VK_ATTRIBUTES,FOLLOW_VK_ATTRIBUTES_in_rule_attributes591); 
 
@@ -1281,7 +1293,7 @@
 
             }
 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:148:41: (rl= rule_attribute )+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:148:41: (rl= rule_attribute )+
             int cnt15=0;
             loop15:
             do {
@@ -1295,12 +1307,13 @@
 
                 switch (alt15) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:148:42: rl= rule_attribute
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:148:42: rl= rule_attribute
             	    {
             	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes597);
             	    rl=rule_attribute();
-            	    _fsp--;
 
+            	    state._fsp--;
+
             	    attrList.add(rl);
 
             	    }
@@ -1329,29 +1342,29 @@
         }
         return attrList;
     }
-    // $ANTLR end rule_attributes
+    // $ANTLR end "rule_attributes"
 
 
-    // $ANTLR start parameters
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:151:1: parameters returns [List paramList] : ^( VT_PARAM_LIST (p= param_definition )* ) ;
+    // $ANTLR start "parameters"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:151:1: parameters returns [List paramList] : ^( VT_PARAM_LIST (p= param_definition )* ) ;
     public final List parameters() throws RecognitionException {
         List paramList = null;
 
         Map p = null;
 
 
-        
+
         	paramList = new LinkedList<Map<BaseDescr, BaseDescr>>();
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:154:3: ( ^( VT_PARAM_LIST (p= param_definition )* ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:154:5: ^( VT_PARAM_LIST (p= param_definition )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:154:3: ( ^( VT_PARAM_LIST (p= param_definition )* ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:154:5: ^( VT_PARAM_LIST (p= param_definition )* )
             {
             match(input,VT_PARAM_LIST,FOLLOW_VT_PARAM_LIST_in_parameters621); 
 
             if ( input.LA(1)==Token.DOWN ) {
                 match(input, Token.DOWN, null); 
-                // src/main/resources/org/drools/lang/DescrBuilderTree.g:154:21: (p= param_definition )*
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:154:21: (p= param_definition )*
                 loop16:
                 do {
                     int alt16=2;
@@ -1364,12 +1377,13 @@
 
                     switch (alt16) {
                 	case 1 :
-                	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:154:22: p= param_definition
+                	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:154:22: p= param_definition
                 	    {
                 	    pushFollow(FOLLOW_param_definition_in_parameters626);
                 	    p=param_definition();
-                	    _fsp--;
 
+                	    state._fsp--;
+
                 	    paramList.add(p);
 
                 	    }
@@ -1395,11 +1409,11 @@
         }
         return paramList;
     }
-    // $ANTLR end parameters
+    // $ANTLR end "parameters"
 
 
-    // $ANTLR start param_definition
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:157:1: param_definition returns [Map param] : (dt= data_type )? a= argument ;
+    // $ANTLR start "param_definition"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:157:1: param_definition returns [Map param] : (dt= data_type )? a= argument ;
     public final Map param_definition() throws RecognitionException {
         Map param = null;
 
@@ -1409,10 +1423,10 @@
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:158:2: ( (dt= data_type )? a= argument )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:158:4: (dt= data_type )? a= argument
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:158:2: ( (dt= data_type )? a= argument )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:158:4: (dt= data_type )? a= argument
             {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:158:6: (dt= data_type )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:158:6: (dt= data_type )?
             int alt17=2;
             int LA17_0 = input.LA(1);
 
@@ -1421,13 +1435,14 @@
             }
             switch (alt17) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:158:6: dt= data_type
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:158:6: dt= data_type
                     {
                     pushFollow(FOLLOW_data_type_in_param_definition648);
                     dt=data_type();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
@@ -1435,8 +1450,9 @@
 
             pushFollow(FOLLOW_argument_in_param_definition653);
             a=argument();
-            _fsp--;
 
+            state._fsp--;
+
             	param = new HashMap<BaseDescr, BaseDescr>();
             		param.put(a, dt);	
 
@@ -1451,11 +1467,11 @@
         }
         return param;
     }
-    // $ANTLR end param_definition
+    // $ANTLR end "param_definition"
 
 
-    // $ANTLR start argument
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:163:1: argument returns [BaseDescr arg] : id= ID ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ;
+    // $ANTLR start "argument"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:163:1: argument returns [BaseDescr arg] : id= ID ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ;
     public final BaseDescr argument() throws RecognitionException {
         BaseDescr arg = null;
 
@@ -1464,12 +1480,11 @@
         List list_rightList=null;
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:164:2: (id= ID ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:164:4: id= ID ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:164:2: (id= ID ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:164:4: id= ID ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
             {
-            id=(DroolsTree)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_argument673); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:164:10: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
+            id=(DroolsTree)match(input,ID,FOLLOW_ID_in_argument673); 
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:164:10: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
             loop18:
             do {
                 int alt18=2;
@@ -1482,11 +1497,10 @@
 
                 switch (alt18) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:164:11: LEFT_SQUARE rightList+= RIGHT_SQUARE
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:164:11: LEFT_SQUARE rightList+= RIGHT_SQUARE
             	    {
             	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_argument676); 
-            	    rightList=(DroolsTree)input.LT(1);
-            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_argument680); 
+            	    rightList=(DroolsTree)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_argument680); 
             	    if (list_rightList==null) list_rightList=new ArrayList();
             	    list_rightList.add(rightList);
 
@@ -1512,11 +1526,11 @@
         }
         return arg;
     }
-    // $ANTLR end argument
+    // $ANTLR end "argument"
 
 
-    // $ANTLR start type_declaration
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:168:1: type_declaration returns [TypeDeclarationDescr declaration] : ^( VK_DECLARE id= VT_TYPE_DECLARE_ID (dm= decl_metadata )* (df= decl_field )* END ) ;
+    // $ANTLR start "type_declaration"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:168:1: type_declaration returns [TypeDeclarationDescr declaration] : ^( VK_DECLARE id= VT_TYPE_DECLARE_ID (dm= decl_metadata )* (df= decl_field )* END ) ;
     public final TypeDeclarationDescr type_declaration() throws RecognitionException {
         TypeDeclarationDescr declaration = null;
 
@@ -1529,15 +1543,14 @@
         	List<Map> declMetadaList = new LinkedList<Map>();
         		List<TypeFieldDescr> declFieldList = new LinkedList<TypeFieldDescr>(); 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:171:2: ( ^( VK_DECLARE id= VT_TYPE_DECLARE_ID (dm= decl_metadata )* (df= decl_field )* END ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:171:4: ^( VK_DECLARE id= VT_TYPE_DECLARE_ID (dm= decl_metadata )* (df= decl_field )* END )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:171:2: ( ^( VK_DECLARE id= VT_TYPE_DECLARE_ID (dm= decl_metadata )* (df= decl_field )* END ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:171:4: ^( VK_DECLARE id= VT_TYPE_DECLARE_ID (dm= decl_metadata )* (df= decl_field )* END )
             {
             match(input,VK_DECLARE,FOLLOW_VK_DECLARE_in_type_declaration706); 
 
             match(input, Token.DOWN, null); 
-            id=(DroolsTree)input.LT(1);
-            match(input,VT_TYPE_DECLARE_ID,FOLLOW_VT_TYPE_DECLARE_ID_in_type_declaration710); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:172:4: (dm= decl_metadata )*
+            id=(DroolsTree)match(input,VT_TYPE_DECLARE_ID,FOLLOW_VT_TYPE_DECLARE_ID_in_type_declaration710); 
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:172:4: (dm= decl_metadata )*
             loop19:
             do {
                 int alt19=2;
@@ -1550,12 +1563,13 @@
 
                 switch (alt19) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:172:5: dm= decl_metadata
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:172:5: dm= decl_metadata
             	    {
             	    pushFollow(FOLLOW_decl_metadata_in_type_declaration719);
             	    dm=decl_metadata();
-            	    _fsp--;
 
+            	    state._fsp--;
+
             	    declMetadaList.add(dm);	
 
             	    }
@@ -1566,7 +1580,7 @@
                 }
             } while (true);
 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:173:4: (df= decl_field )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:173:4: (df= decl_field )*
             loop20:
             do {
                 int alt20=2;
@@ -1579,12 +1593,13 @@
 
                 switch (alt20) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:173:5: df= decl_field
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:173:5: df= decl_field
             	    {
             	    pushFollow(FOLLOW_decl_field_in_type_declaration732);
             	    df=decl_field();
-            	    _fsp--;
 
+            	    state._fsp--;
+
             	    declFieldList.add(df);	
 
             	    }
@@ -1611,11 +1626,11 @@
         }
         return declaration;
     }
-    // $ANTLR end type_declaration
+    // $ANTLR end "type_declaration"
 
 
-    // $ANTLR start decl_metadata
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:177:1: decl_metadata returns [Map attData] : ^( AT att= ID pc= VT_PAREN_CHUNK ) ;
+    // $ANTLR start "decl_metadata"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:177:1: decl_metadata returns [Map attData] : ^( AT att= ID pc= VT_PAREN_CHUNK ) ;
     public final Map decl_metadata() throws RecognitionException {
         Map attData = null;
 
@@ -1624,16 +1639,14 @@
 
         attData = new HashMap();
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:179:2: ( ^( AT att= ID pc= VT_PAREN_CHUNK ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:179:4: ^( AT att= ID pc= VT_PAREN_CHUNK )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:179:2: ( ^( AT att= ID pc= VT_PAREN_CHUNK ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:179:4: ^( AT att= ID pc= VT_PAREN_CHUNK )
             {
             match(input,AT,FOLLOW_AT_in_decl_metadata763); 
 
             match(input, Token.DOWN, null); 
-            att=(DroolsTree)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_decl_metadata767); 
-            pc=(DroolsTree)input.LT(1);
-            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_decl_metadata771); 
+            att=(DroolsTree)match(input,ID,FOLLOW_ID_in_decl_metadata767); 
+            pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_decl_metadata771); 
 
             match(input, Token.UP, null); 
             	attData.put(att, pc);	
@@ -1649,11 +1662,11 @@
         }
         return attData;
     }
-    // $ANTLR end decl_metadata
+    // $ANTLR end "decl_metadata"
 
 
-    // $ANTLR start decl_field
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:183:1: decl_field returns [TypeFieldDescr fieldDescr] : ^(id= ID (init= decl_field_initialization )? dt= data_type (dm= decl_metadata )* ) ;
+    // $ANTLR start "decl_field"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:183:1: decl_field returns [TypeFieldDescr fieldDescr] : ^(id= ID (init= decl_field_initialization )? dt= data_type (dm= decl_metadata )* ) ;
     public final TypeFieldDescr decl_field() throws RecognitionException {
         TypeFieldDescr fieldDescr = null;
 
@@ -1667,14 +1680,13 @@
 
         List<Map> declMetadaList = new LinkedList<Map>(); 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:185:2: ( ^(id= ID (init= decl_field_initialization )? dt= data_type (dm= decl_metadata )* ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:185:4: ^(id= ID (init= decl_field_initialization )? dt= data_type (dm= decl_metadata )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:185:2: ( ^(id= ID (init= decl_field_initialization )? dt= data_type (dm= decl_metadata )* ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:185:4: ^(id= ID (init= decl_field_initialization )? dt= data_type (dm= decl_metadata )* )
             {
-            id=(DroolsTree)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_decl_field798); 
+            id=(DroolsTree)match(input,ID,FOLLOW_ID_in_decl_field798); 
 
             match(input, Token.DOWN, null); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:185:16: (init= decl_field_initialization )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:185:16: (init= decl_field_initialization )?
             int alt21=2;
             int LA21_0 = input.LA(1);
 
@@ -1683,13 +1695,14 @@
             }
             switch (alt21) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:185:16: init= decl_field_initialization
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:185:16: init= decl_field_initialization
                     {
                     pushFollow(FOLLOW_decl_field_initialization_in_decl_field802);
                     init=decl_field_initialization();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
@@ -1697,9 +1710,10 @@
 
             pushFollow(FOLLOW_data_type_in_decl_field807);
             dt=data_type();
-            _fsp--;
 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:185:57: (dm= decl_metadata )*
+            state._fsp--;
+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:185:57: (dm= decl_metadata )*
             loop22:
             do {
                 int alt22=2;
@@ -1712,12 +1726,13 @@
 
                 switch (alt22) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:185:58: dm= decl_metadata
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:185:58: dm= decl_metadata
             	    {
             	    pushFollow(FOLLOW_decl_metadata_in_decl_field812);
             	    dm=decl_metadata();
-            	    _fsp--;
 
+            	    state._fsp--;
+
             	    declMetadaList.add(dm);
 
             	    }
@@ -1743,28 +1758,27 @@
         }
         return fieldDescr;
     }
-    // $ANTLR end decl_field
+    // $ANTLR end "decl_field"
 
 
-    // $ANTLR start decl_field_initialization
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:189:1: decl_field_initialization returns [String expr] : ^( EQUALS pc= VT_PAREN_CHUNK ) ;
+    // $ANTLR start "decl_field_initialization"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:189:1: decl_field_initialization returns [String expr] : ^( EQUALS pc= VT_PAREN_CHUNK ) ;
     public final String decl_field_initialization() throws RecognitionException {
         String expr = null;
 
         DroolsTree pc=null;
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:190:2: ( ^( EQUALS pc= VT_PAREN_CHUNK ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:190:4: ^( EQUALS pc= VT_PAREN_CHUNK )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:190:2: ( ^( EQUALS pc= VT_PAREN_CHUNK ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:190:4: ^( EQUALS pc= VT_PAREN_CHUNK )
             {
             match(input,EQUALS,FOLLOW_EQUALS_in_decl_field_initialization839); 
 
             match(input, Token.DOWN, null); 
-            pc=(DroolsTree)input.LT(1);
-            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_decl_field_initialization843); 
+            pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_decl_field_initialization843); 
 
             match(input, Token.UP, null); 
-            	expr = pc.getText().substring(1, pc.getText().length() -1 ).trim();	
+            	expr = (pc!=null?pc.getText():null).substring(1, (pc!=null?pc.getText():null).length() -1 ).trim();	
 
             }
 
@@ -1777,11 +1791,11 @@
         }
         return expr;
     }
-    // $ANTLR end decl_field_initialization
+    // $ANTLR end "decl_field_initialization"
 
 
-    // $ANTLR start rule_attribute
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:194:1: rule_attribute returns [AttributeDescr attributeDescr] : ( ^(attrName= VK_SALIENCE (value= INT | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_NO_LOOP (value= BOOL )? ) | ^(attrName= VK_AGENDA_GROUP value= STRING ) | ^(attrName= VK_DURATION value= INT ) | ^(attrName= VK_ACTIVATION_GROUP value= STRING ) | ^(attrName= VK_AUTO_FOCUS (value= BOOL )? ) | ^(attrName= VK_DATE_EFFECTIVE value= STRING ) | ^(attrName= VK_DATE_EXPIRES value= STRING ) | ^(attrName= VK_ENABLED (value= BOOL | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_RULEFLOW_GROUP value= STRING ) | ^(attrName= VK_LOCK_ON_ACTIVE (value= BOOL )? ) | ^(attrName= VK_DIALECT value= STRING ) ) ;
+    // $ANTLR start "rule_attribute"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:194:1: rule_attribute returns [AttributeDescr attributeDescr] : ( ^(attrName= VK_SALIENCE (value= INT | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_NO_LOOP (value= BOOL )? ) | ^(attrName= VK_AGENDA_GROUP value= STRING ) | ^(attrName= VK_DURATION value= INT ) | ^(attrName= VK_ACTIVATION_GROUP value= STRING ) | ^(attrName= VK_AUTO_FOCUS (value= BOOL )? ) | ^(attrName= VK_DATE_EFFECTIVE value= STRING ) | ^(attrName= VK_DATE_EXPIRES value= STRING ) | ^(attrName= VK_ENABLED (value= BOOL | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_RULEFLOW_GROUP value= STRING ) | ^(attrName= VK_LOCK_ON_ACTIVE (value= BOOL )? ) | ^(attrName= VK_DIALECT value= STRING ) ) ;
     public final AttributeDescr rule_attribute() throws RecognitionException {
         AttributeDescr attributeDescr = null;
 
@@ -1789,10 +1803,10 @@
         DroolsTree value=null;
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:195:2: ( ( ^(attrName= VK_SALIENCE (value= INT | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_NO_LOOP (value= BOOL )? ) | ^(attrName= VK_AGENDA_GROUP value= STRING ) | ^(attrName= VK_DURATION value= INT ) | ^(attrName= VK_ACTIVATION_GROUP value= STRING ) | ^(attrName= VK_AUTO_FOCUS (value= BOOL )? ) | ^(attrName= VK_DATE_EFFECTIVE value= STRING ) | ^(attrName= VK_DATE_EXPIRES value= STRING ) | ^(attrName= VK_ENABLED (value= BOOL | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_RULEFLOW_GROUP value= STRING ) | ^(attrName= VK_LOCK_ON_ACTIVE (value= BOOL )? ) | ^(attrName= VK_DIALECT value= STRING ) ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:195:4: ( ^(attrName= VK_SALIENCE (value= INT | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_NO_LOOP (value= BOOL )? ) | ^(attrName= VK_AGENDA_GROUP value= STRING ) | ^(attrName= VK_DURATION value= INT ) | ^(attrName= VK_ACTIVATION_GROUP value= STRING ) | ^(attrName= VK_AUTO_FOCUS (value= BOOL )? ) | ^(attrName= VK_DATE_EFFECTIVE value= STRING ) | ^(attrName= VK_DATE_EXPIRES value= STRING ) | ^(attrName= VK_ENABLED (value= BOOL | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_RULEFLOW_GROUP value= STRING ) | ^(attrName= VK_LOCK_ON_ACTIVE (value= BOOL )? ) | ^(attrName= VK_DIALECT value= STRING ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:195:2: ( ( ^(attrName= VK_SALIENCE (value= INT | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_NO_LOOP (value= BOOL )? ) | ^(attrName= VK_AGENDA_GROUP value= STRING ) | ^(attrName= VK_DURATION value= INT ) | ^(attrName= VK_ACTIVATION_GROUP value= STRING ) | ^(attrName= VK_AUTO_FOCUS (value= BOOL )? ) | ^(attrName= VK_DATE_EFFECTIVE value= STRING ) | ^(attrName= VK_DATE_EXPIRES value= STRING ) | ^(attrName= VK_ENABLED (value= BOOL | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_RULEFLOW_GROUP value= STRING ) | ^(attrName= VK_LOCK_ON_ACTIVE (value= BOOL )? ) | ^(attrName= VK_DIALECT value= STRING ) ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:195:4: ( ^(attrName= VK_SALIENCE (value= INT | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_NO_LOOP (value= BOOL )? ) | ^(attrName= VK_AGENDA_GROUP value= STRING ) | ^(attrName= VK_DURATION value= INT ) | ^(attrName= VK_ACTIVATION_GROUP value= STRING ) | ^(attrName= VK_AUTO_FOCUS (value= BOOL )? ) | ^(attrName= VK_DATE_EFFECTIVE value= STRING ) | ^(attrName= VK_DATE_EXPIRES value= STRING ) | ^(attrName= VK_ENABLED (value= BOOL | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_RULEFLOW_GROUP value= STRING ) | ^(attrName= VK_LOCK_ON_ACTIVE (value= BOOL )? ) | ^(attrName= VK_DIALECT value= STRING ) )
             {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:195:4: ( ^(attrName= VK_SALIENCE (value= INT | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_NO_LOOP (value= BOOL )? ) | ^(attrName= VK_AGENDA_GROUP value= STRING ) | ^(attrName= VK_DURATION value= INT ) | ^(attrName= VK_ACTIVATION_GROUP value= STRING ) | ^(attrName= VK_AUTO_FOCUS (value= BOOL )? ) | ^(attrName= VK_DATE_EFFECTIVE value= STRING ) | ^(attrName= VK_DATE_EXPIRES value= STRING ) | ^(attrName= VK_ENABLED (value= BOOL | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_RULEFLOW_GROUP value= STRING ) | ^(attrName= VK_LOCK_ON_ACTIVE (value= BOOL )? ) | ^(attrName= VK_DIALECT value= STRING ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:195:4: ( ^(attrName= VK_SALIENCE (value= INT | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_NO_LOOP (value= BOOL )? ) | ^(attrName= VK_AGENDA_GROUP value= STRING ) | ^(attrName= VK_DURATION value= INT ) | ^(attrName= VK_ACTIVATION_GROUP value= STRING ) | ^(attrName= VK_AUTO_FOCUS (value= BOOL )? ) | ^(attrName= VK_DATE_EFFECTIVE value= STRING ) | ^(attrName= VK_DATE_EXPIRES value= STRING ) | ^(attrName= VK_ENABLED (value= BOOL | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_RULEFLOW_GROUP value= STRING ) | ^(attrName= VK_LOCK_ON_ACTIVE (value= BOOL )? ) | ^(attrName= VK_DIALECT value= STRING ) )
             int alt28=12;
             switch ( input.LA(1) ) {
             case VK_SALIENCE:
@@ -1857,20 +1871,19 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("195:4: ( ^(attrName= VK_SALIENCE (value= INT | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_NO_LOOP (value= BOOL )? ) | ^(attrName= VK_AGENDA_GROUP value= STRING ) | ^(attrName= VK_DURATION value= INT ) | ^(attrName= VK_ACTIVATION_GROUP value= STRING ) | ^(attrName= VK_AUTO_FOCUS (value= BOOL )? ) | ^(attrName= VK_DATE_EFFECTIVE value= STRING ) | ^(attrName= VK_DATE_EXPIRES value= STRING ) | ^(attrName= VK_ENABLED (value= BOOL | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_RULEFLOW_GROUP value= STRING ) | ^(attrName= VK_LOCK_ON_ACTIVE (value= BOOL )? ) | ^(attrName= VK_DIALECT value= STRING ) )", 28, 0, input);
+                    new NoViableAltException("", 28, 0, input);
 
                 throw nvae;
             }
 
             switch (alt28) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:195:5: ^(attrName= VK_SALIENCE (value= INT | value= VT_PAREN_CHUNK ) )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:195:5: ^(attrName= VK_SALIENCE (value= INT | value= VT_PAREN_CHUNK ) )
                     {
-                    attrName=(DroolsTree)input.LT(1);
-                    match(input,VK_SALIENCE,FOLLOW_VK_SALIENCE_in_rule_attribute866); 
+                    attrName=(DroolsTree)match(input,VK_SALIENCE,FOLLOW_VK_SALIENCE_in_rule_attribute866); 
 
                     match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:195:28: (value= INT | value= VT_PAREN_CHUNK )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:195:28: (value= INT | value= VT_PAREN_CHUNK )
                     int alt23=2;
                     int LA23_0 = input.LA(1);
 
@@ -1882,24 +1895,22 @@
                     }
                     else {
                         NoViableAltException nvae =
-                            new NoViableAltException("195:28: (value= INT | value= VT_PAREN_CHUNK )", 23, 0, input);
+                            new NoViableAltException("", 23, 0, input);
 
                         throw nvae;
                     }
                     switch (alt23) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:195:29: value= INT
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:195:29: value= INT
                             {
-                            value=(DroolsTree)input.LT(1);
-                            match(input,INT,FOLLOW_INT_in_rule_attribute871); 
+                            value=(DroolsTree)match(input,INT,FOLLOW_INT_in_rule_attribute871); 
 
                             }
                             break;
                         case 2 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:195:39: value= VT_PAREN_CHUNK
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:195:39: value= VT_PAREN_CHUNK
                             {
-                            value=(DroolsTree)input.LT(1);
-                            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_rule_attribute875); 
+                            value=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_rule_attribute875); 
 
                             }
                             break;
@@ -1912,14 +1923,13 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:196:4: ^(attrName= VK_NO_LOOP (value= BOOL )? )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:196:4: ^(attrName= VK_NO_LOOP (value= BOOL )? )
                     {
-                    attrName=(DroolsTree)input.LT(1);
-                    match(input,VK_NO_LOOP,FOLLOW_VK_NO_LOOP_in_rule_attribute886); 
+                    attrName=(DroolsTree)match(input,VK_NO_LOOP,FOLLOW_VK_NO_LOOP_in_rule_attribute886); 
 
                     if ( input.LA(1)==Token.DOWN ) {
                         match(input, Token.DOWN, null); 
-                        // src/main/resources/org/drools/lang/DescrBuilderTree.g:196:31: (value= BOOL )?
+                        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:196:31: (value= BOOL )?
                         int alt24=2;
                         int LA24_0 = input.LA(1);
 
@@ -1928,10 +1938,9 @@
                         }
                         switch (alt24) {
                             case 1 :
-                                // src/main/resources/org/drools/lang/DescrBuilderTree.g:196:31: value= BOOL
+                                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:196:31: value= BOOL
                                 {
-                                value=(DroolsTree)input.LT(1);
-                                match(input,BOOL,FOLLOW_BOOL_in_rule_attribute890); 
+                                value=(DroolsTree)match(input,BOOL,FOLLOW_BOOL_in_rule_attribute890); 
 
                                 }
                                 break;
@@ -1945,56 +1954,49 @@
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:197:4: ^(attrName= VK_AGENDA_GROUP value= STRING )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:197:4: ^(attrName= VK_AGENDA_GROUP value= STRING )
                     {
-                    attrName=(DroolsTree)input.LT(1);
-                    match(input,VK_AGENDA_GROUP,FOLLOW_VK_AGENDA_GROUP_in_rule_attribute902); 
+                    attrName=(DroolsTree)match(input,VK_AGENDA_GROUP,FOLLOW_VK_AGENDA_GROUP_in_rule_attribute902); 
 
                     match(input, Token.DOWN, null); 
-                    value=(DroolsTree)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_rule_attribute906); 
+                    value=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_rule_attribute906); 
 
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:198:4: ^(attrName= VK_DURATION value= INT )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:198:4: ^(attrName= VK_DURATION value= INT )
                     {
-                    attrName=(DroolsTree)input.LT(1);
-                    match(input,VK_DURATION,FOLLOW_VK_DURATION_in_rule_attribute917); 
+                    attrName=(DroolsTree)match(input,VK_DURATION,FOLLOW_VK_DURATION_in_rule_attribute917); 
 
                     match(input, Token.DOWN, null); 
-                    value=(DroolsTree)input.LT(1);
-                    match(input,INT,FOLLOW_INT_in_rule_attribute921); 
+                    value=(DroolsTree)match(input,INT,FOLLOW_INT_in_rule_attribute921); 
 
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:199:4: ^(attrName= VK_ACTIVATION_GROUP value= STRING )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:199:4: ^(attrName= VK_ACTIVATION_GROUP value= STRING )
                     {
-                    attrName=(DroolsTree)input.LT(1);
-                    match(input,VK_ACTIVATION_GROUP,FOLLOW_VK_ACTIVATION_GROUP_in_rule_attribute933); 
+                    attrName=(DroolsTree)match(input,VK_ACTIVATION_GROUP,FOLLOW_VK_ACTIVATION_GROUP_in_rule_attribute933); 
 
                     match(input, Token.DOWN, null); 
-                    value=(DroolsTree)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_rule_attribute937); 
+                    value=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_rule_attribute937); 
 
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 6 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:200:4: ^(attrName= VK_AUTO_FOCUS (value= BOOL )? )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:200:4: ^(attrName= VK_AUTO_FOCUS (value= BOOL )? )
                     {
-                    attrName=(DroolsTree)input.LT(1);
-                    match(input,VK_AUTO_FOCUS,FOLLOW_VK_AUTO_FOCUS_in_rule_attribute947); 
+                    attrName=(DroolsTree)match(input,VK_AUTO_FOCUS,FOLLOW_VK_AUTO_FOCUS_in_rule_attribute947); 
 
                     if ( input.LA(1)==Token.DOWN ) {
                         match(input, Token.DOWN, null); 
-                        // src/main/resources/org/drools/lang/DescrBuilderTree.g:200:34: (value= BOOL )?
+                        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:200:34: (value= BOOL )?
                         int alt25=2;
                         int LA25_0 = input.LA(1);
 
@@ -2003,10 +2005,9 @@
                         }
                         switch (alt25) {
                             case 1 :
-                                // src/main/resources/org/drools/lang/DescrBuilderTree.g:200:34: value= BOOL
+                                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:200:34: value= BOOL
                                 {
-                                value=(DroolsTree)input.LT(1);
-                                match(input,BOOL,FOLLOW_BOOL_in_rule_attribute951); 
+                                value=(DroolsTree)match(input,BOOL,FOLLOW_BOOL_in_rule_attribute951); 
 
                                 }
                                 break;
@@ -2020,41 +2021,36 @@
                     }
                     break;
                 case 7 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:201:4: ^(attrName= VK_DATE_EFFECTIVE value= STRING )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:201:4: ^(attrName= VK_DATE_EFFECTIVE value= STRING )
                     {
-                    attrName=(DroolsTree)input.LT(1);
-                    match(input,VK_DATE_EFFECTIVE,FOLLOW_VK_DATE_EFFECTIVE_in_rule_attribute962); 
+                    attrName=(DroolsTree)match(input,VK_DATE_EFFECTIVE,FOLLOW_VK_DATE_EFFECTIVE_in_rule_attribute962); 
 
                     match(input, Token.DOWN, null); 
-                    value=(DroolsTree)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_rule_attribute966); 
+                    value=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_rule_attribute966); 
 
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 8 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:202:4: ^(attrName= VK_DATE_EXPIRES value= STRING )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:202:4: ^(attrName= VK_DATE_EXPIRES value= STRING )
                     {
-                    attrName=(DroolsTree)input.LT(1);
-                    match(input,VK_DATE_EXPIRES,FOLLOW_VK_DATE_EXPIRES_in_rule_attribute976); 
+                    attrName=(DroolsTree)match(input,VK_DATE_EXPIRES,FOLLOW_VK_DATE_EXPIRES_in_rule_attribute976); 
 
                     match(input, Token.DOWN, null); 
-                    value=(DroolsTree)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_rule_attribute980); 
+                    value=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_rule_attribute980); 
 
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 9 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:203:4: ^(attrName= VK_ENABLED (value= BOOL | value= VT_PAREN_CHUNK ) )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:203:4: ^(attrName= VK_ENABLED (value= BOOL | value= VT_PAREN_CHUNK ) )
                     {
-                    attrName=(DroolsTree)input.LT(1);
-                    match(input,VK_ENABLED,FOLLOW_VK_ENABLED_in_rule_attribute990); 
+                    attrName=(DroolsTree)match(input,VK_ENABLED,FOLLOW_VK_ENABLED_in_rule_attribute990); 
 
                     match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:203:26: (value= BOOL | value= VT_PAREN_CHUNK )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:203:26: (value= BOOL | value= VT_PAREN_CHUNK )
                     int alt26=2;
                     int LA26_0 = input.LA(1);
 
@@ -2066,24 +2062,22 @@
                     }
                     else {
                         NoViableAltException nvae =
-                            new NoViableAltException("203:26: (value= BOOL | value= VT_PAREN_CHUNK )", 26, 0, input);
+                            new NoViableAltException("", 26, 0, input);
 
                         throw nvae;
                     }
                     switch (alt26) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:203:27: value= BOOL
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:203:27: value= BOOL
                             {
-                            value=(DroolsTree)input.LT(1);
-                            match(input,BOOL,FOLLOW_BOOL_in_rule_attribute995); 
+                            value=(DroolsTree)match(input,BOOL,FOLLOW_BOOL_in_rule_attribute995); 
 
                             }
                             break;
                         case 2 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:203:38: value= VT_PAREN_CHUNK
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:203:38: value= VT_PAREN_CHUNK
                             {
-                            value=(DroolsTree)input.LT(1);
-                            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_rule_attribute999); 
+                            value=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_rule_attribute999); 
 
                             }
                             break;
@@ -2096,28 +2090,25 @@
                     }
                     break;
                 case 10 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:204:4: ^(attrName= VK_RULEFLOW_GROUP value= STRING )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:204:4: ^(attrName= VK_RULEFLOW_GROUP value= STRING )
                     {
-                    attrName=(DroolsTree)input.LT(1);
-                    match(input,VK_RULEFLOW_GROUP,FOLLOW_VK_RULEFLOW_GROUP_in_rule_attribute1010); 
+                    attrName=(DroolsTree)match(input,VK_RULEFLOW_GROUP,FOLLOW_VK_RULEFLOW_GROUP_in_rule_attribute1010); 
 
                     match(input, Token.DOWN, null); 
-                    value=(DroolsTree)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_rule_attribute1014); 
+                    value=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_rule_attribute1014); 
 
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 11 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:205:4: ^(attrName= VK_LOCK_ON_ACTIVE (value= BOOL )? )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:205:4: ^(attrName= VK_LOCK_ON_ACTIVE (value= BOOL )? )
                     {
-                    attrName=(DroolsTree)input.LT(1);
-                    match(input,VK_LOCK_ON_ACTIVE,FOLLOW_VK_LOCK_ON_ACTIVE_in_rule_attribute1024); 
+                    attrName=(DroolsTree)match(input,VK_LOCK_ON_ACTIVE,FOLLOW_VK_LOCK_ON_ACTIVE_in_rule_attribute1024); 
 
                     if ( input.LA(1)==Token.DOWN ) {
                         match(input, Token.DOWN, null); 
-                        // src/main/resources/org/drools/lang/DescrBuilderTree.g:205:38: (value= BOOL )?
+                        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:205:38: (value= BOOL )?
                         int alt27=2;
                         int LA27_0 = input.LA(1);
 
@@ -2126,10 +2117,9 @@
                         }
                         switch (alt27) {
                             case 1 :
-                                // src/main/resources/org/drools/lang/DescrBuilderTree.g:205:38: value= BOOL
+                                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:205:38: value= BOOL
                                 {
-                                value=(DroolsTree)input.LT(1);
-                                match(input,BOOL,FOLLOW_BOOL_in_rule_attribute1028); 
+                                value=(DroolsTree)match(input,BOOL,FOLLOW_BOOL_in_rule_attribute1028); 
 
                                 }
                                 break;
@@ -2143,14 +2133,12 @@
                     }
                     break;
                 case 12 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:206:4: ^(attrName= VK_DIALECT value= STRING )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:206:4: ^(attrName= VK_DIALECT value= STRING )
                     {
-                    attrName=(DroolsTree)input.LT(1);
-                    match(input,VK_DIALECT,FOLLOW_VK_DIALECT_in_rule_attribute1038); 
+                    attrName=(DroolsTree)match(input,VK_DIALECT,FOLLOW_VK_DIALECT_in_rule_attribute1038); 
 
                     match(input, Token.DOWN, null); 
-                    value=(DroolsTree)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_rule_attribute1042); 
+                    value=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_rule_attribute1042); 
 
                     match(input, Token.UP, null); 
 
@@ -2172,29 +2160,29 @@
         }
         return attributeDescr;
     }
-    // $ANTLR end rule_attribute
+    // $ANTLR end "rule_attribute"
 
 
-    // $ANTLR start lhs_block
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:210:1: lhs_block returns [AndDescr andDescr] : ^( VT_AND_IMPLICIT (dt= lhs )* ) ;
+    // $ANTLR start "lhs_block"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:210:1: lhs_block returns [AndDescr andDescr] : ^( VT_AND_IMPLICIT (dt= lhs )* ) ;
     public final AndDescr lhs_block() throws RecognitionException {
         AndDescr andDescr = null;
 
-        lhs_return dt = null;
+        DescrBuilderTree.lhs_return dt = null;
 
 
-        
+
         	andDescr = new AndDescr();
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:213:3: ( ^( VT_AND_IMPLICIT (dt= lhs )* ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:213:5: ^( VT_AND_IMPLICIT (dt= lhs )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:213:3: ( ^( VT_AND_IMPLICIT (dt= lhs )* ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:213:5: ^( VT_AND_IMPLICIT (dt= lhs )* )
             {
             match(input,VT_AND_IMPLICIT,FOLLOW_VT_AND_IMPLICIT_in_lhs_block1067); 
 
             if ( input.LA(1)==Token.DOWN ) {
                 match(input, Token.DOWN, null); 
-                // src/main/resources/org/drools/lang/DescrBuilderTree.g:213:23: (dt= lhs )*
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:213:23: (dt= lhs )*
                 loop29:
                 do {
                     int alt29=2;
@@ -2207,14 +2195,15 @@
 
                     switch (alt29) {
                 	case 1 :
-                	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:213:24: dt= lhs
+                	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:213:24: dt= lhs
                 	    {
                 	    pushFollow(FOLLOW_lhs_in_lhs_block1072);
                 	    dt=lhs();
-                	    _fsp--;
 
-                	    andDescr.addDescr(dt.baseDescr);
+                	    state._fsp--;
 
+                	    andDescr.addDescr((dt!=null?dt.baseDescr:null));
+
                 	    }
                 	    break;
 
@@ -2238,36 +2227,36 @@
         }
         return andDescr;
     }
-    // $ANTLR end lhs_block
+    // $ANTLR end "lhs_block"
 
     public static class lhs_return extends TreeRuleReturnScope {
         public BaseDescr baseDescr;
     };
 
-    // $ANTLR start lhs
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:216:1: lhs returns [BaseDescr baseDescr] : ( ^(start= VT_OR_PREFIX (dt= lhs )+ ) | ^(start= VT_OR_INFIX dt1= lhs dt2= lhs ) | ^(start= VT_AND_PREFIX (dt= lhs )+ ) | ^(start= VT_AND_INFIX dt1= lhs dt2= lhs ) | ^(start= VK_EXISTS dt= lhs ) | ^(start= VK_NOT dt= lhs ) | ^(start= VK_EVAL pc= VT_PAREN_CHUNK ) | ^(start= VK_FORALL (dt= lhs )+ ) | ^( FROM pn= lhs_pattern fe= from_elements ) | pn= lhs_pattern );
-    public final lhs_return lhs() throws RecognitionException {
-        lhs_return retval = new lhs_return();
+    // $ANTLR start "lhs"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:216:1: lhs returns [BaseDescr baseDescr] : ( ^(start= VT_OR_PREFIX (dt= lhs )+ ) | ^(start= VT_OR_INFIX dt1= lhs dt2= lhs ) | ^(start= VT_AND_PREFIX (dt= lhs )+ ) | ^(start= VT_AND_INFIX dt1= lhs dt2= lhs ) | ^(start= VK_EXISTS dt= lhs ) | ^(start= VK_NOT dt= lhs ) | ^(start= VK_EVAL pc= VT_PAREN_CHUNK ) | ^(start= VK_FORALL (dt= lhs )+ ) | ^( FROM pn= lhs_pattern fe= from_elements ) | pn= lhs_pattern );
+    public final DescrBuilderTree.lhs_return lhs() throws RecognitionException {
+        DescrBuilderTree.lhs_return retval = new DescrBuilderTree.lhs_return();
         retval.start = input.LT(1);
 
         DroolsTree start=null;
         DroolsTree pc=null;
-        lhs_return dt = null;
+        DescrBuilderTree.lhs_return dt = null;
 
-        lhs_return dt1 = null;
+        DescrBuilderTree.lhs_return dt1 = null;
 
-        lhs_return dt2 = null;
+        DescrBuilderTree.lhs_return dt2 = null;
 
         BaseDescr pn = null;
 
-        from_elements_return fe = null;
+        DescrBuilderTree.from_elements_return fe = null;
 
 
-        
+
         	List<BaseDescr> lhsList = new LinkedList<BaseDescr>();
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:219:3: ( ^(start= VT_OR_PREFIX (dt= lhs )+ ) | ^(start= VT_OR_INFIX dt1= lhs dt2= lhs ) | ^(start= VT_AND_PREFIX (dt= lhs )+ ) | ^(start= VT_AND_INFIX dt1= lhs dt2= lhs ) | ^(start= VK_EXISTS dt= lhs ) | ^(start= VK_NOT dt= lhs ) | ^(start= VK_EVAL pc= VT_PAREN_CHUNK ) | ^(start= VK_FORALL (dt= lhs )+ ) | ^( FROM pn= lhs_pattern fe= from_elements ) | pn= lhs_pattern )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:219:3: ( ^(start= VT_OR_PREFIX (dt= lhs )+ ) | ^(start= VT_OR_INFIX dt1= lhs dt2= lhs ) | ^(start= VT_AND_PREFIX (dt= lhs )+ ) | ^(start= VT_AND_INFIX dt1= lhs dt2= lhs ) | ^(start= VK_EXISTS dt= lhs ) | ^(start= VK_NOT dt= lhs ) | ^(start= VK_EVAL pc= VT_PAREN_CHUNK ) | ^(start= VK_FORALL (dt= lhs )+ ) | ^( FROM pn= lhs_pattern fe= from_elements ) | pn= lhs_pattern )
             int alt33=10;
             switch ( input.LA(1) ) {
             case VT_OR_PREFIX:
@@ -2322,20 +2311,19 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("216:1: lhs returns [BaseDescr baseDescr] : ( ^(start= VT_OR_PREFIX (dt= lhs )+ ) | ^(start= VT_OR_INFIX dt1= lhs dt2= lhs ) | ^(start= VT_AND_PREFIX (dt= lhs )+ ) | ^(start= VT_AND_INFIX dt1= lhs dt2= lhs ) | ^(start= VK_EXISTS dt= lhs ) | ^(start= VK_NOT dt= lhs ) | ^(start= VK_EVAL pc= VT_PAREN_CHUNK ) | ^(start= VK_FORALL (dt= lhs )+ ) | ^( FROM pn= lhs_pattern fe= from_elements ) | pn= lhs_pattern );", 33, 0, input);
+                    new NoViableAltException("", 33, 0, input);
 
                 throw nvae;
             }
 
             switch (alt33) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:219:5: ^(start= VT_OR_PREFIX (dt= lhs )+ )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:219:5: ^(start= VT_OR_PREFIX (dt= lhs )+ )
                     {
-                    start=(DroolsTree)input.LT(1);
-                    match(input,VT_OR_PREFIX,FOLLOW_VT_OR_PREFIX_in_lhs1098); 
+                    start=(DroolsTree)match(input,VT_OR_PREFIX,FOLLOW_VT_OR_PREFIX_in_lhs1098); 
 
                     match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:219:26: (dt= lhs )+
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:219:26: (dt= lhs )+
                     int cnt30=0;
                     loop30:
                     do {
@@ -2349,14 +2337,15 @@
 
                         switch (alt30) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:219:27: dt= lhs
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:219:27: dt= lhs
                     	    {
                     	    pushFollow(FOLLOW_lhs_in_lhs1103);
                     	    dt=lhs();
-                    	    _fsp--;
 
-                    	    	lhsList.add(dt.baseDescr);	
+                    	    state._fsp--;
 
+                    	    	lhsList.add((dt!=null?dt.baseDescr:null));	
+
                     	    }
                     	    break;
 
@@ -2376,36 +2365,36 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:221:4: ^(start= VT_OR_INFIX dt1= lhs dt2= lhs )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:221:4: ^(start= VT_OR_INFIX dt1= lhs dt2= lhs )
                     {
-                    start=(DroolsTree)input.LT(1);
-                    match(input,VT_OR_INFIX,FOLLOW_VT_OR_INFIX_in_lhs1119); 
+                    start=(DroolsTree)match(input,VT_OR_INFIX,FOLLOW_VT_OR_INFIX_in_lhs1119); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_lhs_in_lhs1123);
                     dt1=lhs();
-                    _fsp--;
 
+                    state._fsp--;
+
                     pushFollow(FOLLOW_lhs_in_lhs1127);
                     dt2=lhs();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
-                    	lhsList.add(dt1.baseDescr);
-                    		lhsList.add(dt2.baseDescr);
+                    	lhsList.add((dt1!=null?dt1.baseDescr:null));
+                    		lhsList.add((dt2!=null?dt2.baseDescr:null));
                     		retval.baseDescr = factory.createOr(start, lhsList);	
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:225:4: ^(start= VT_AND_PREFIX (dt= lhs )+ )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:225:4: ^(start= VT_AND_PREFIX (dt= lhs )+ )
                     {
-                    start=(DroolsTree)input.LT(1);
-                    match(input,VT_AND_PREFIX,FOLLOW_VT_AND_PREFIX_in_lhs1139); 
+                    start=(DroolsTree)match(input,VT_AND_PREFIX,FOLLOW_VT_AND_PREFIX_in_lhs1139); 
 
                     match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:225:26: (dt= lhs )+
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:225:26: (dt= lhs )+
                     int cnt31=0;
                     loop31:
                     do {
@@ -2419,14 +2408,15 @@
 
                         switch (alt31) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:225:27: dt= lhs
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:225:27: dt= lhs
                     	    {
                     	    pushFollow(FOLLOW_lhs_in_lhs1144);
                     	    dt=lhs();
-                    	    _fsp--;
 
-                    	    	lhsList.add(dt.baseDescr);	
+                    	    state._fsp--;
 
+                    	    	lhsList.add((dt!=null?dt.baseDescr:null));	
+
                     	    }
                     	    break;
 
@@ -2446,71 +2436,70 @@
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:227:4: ^(start= VT_AND_INFIX dt1= lhs dt2= lhs )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:227:4: ^(start= VT_AND_INFIX dt1= lhs dt2= lhs )
                     {
-                    start=(DroolsTree)input.LT(1);
-                    match(input,VT_AND_INFIX,FOLLOW_VT_AND_INFIX_in_lhs1160); 
+                    start=(DroolsTree)match(input,VT_AND_INFIX,FOLLOW_VT_AND_INFIX_in_lhs1160); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_lhs_in_lhs1164);
                     dt1=lhs();
-                    _fsp--;
 
+                    state._fsp--;
+
                     pushFollow(FOLLOW_lhs_in_lhs1168);
                     dt2=lhs();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
-                    	lhsList.add(dt1.baseDescr);
-                    		lhsList.add(dt2.baseDescr);
+                    	lhsList.add((dt1!=null?dt1.baseDescr:null));
+                    		lhsList.add((dt2!=null?dt2.baseDescr:null));
                     		retval.baseDescr = factory.createAnd(start, lhsList);	
 
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:231:4: ^(start= VK_EXISTS dt= lhs )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:231:4: ^(start= VK_EXISTS dt= lhs )
                     {
-                    start=(DroolsTree)input.LT(1);
-                    match(input,VK_EXISTS,FOLLOW_VK_EXISTS_in_lhs1180); 
+                    start=(DroolsTree)match(input,VK_EXISTS,FOLLOW_VK_EXISTS_in_lhs1180); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_lhs_in_lhs1184);
                     dt=lhs();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
-                    	retval.baseDescr = factory.createExists(start, dt.baseDescr);	
+                    	retval.baseDescr = factory.createExists(start, (dt!=null?dt.baseDescr:null));	
 
                     }
                     break;
                 case 6 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:233:4: ^(start= VK_NOT dt= lhs )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:233:4: ^(start= VK_NOT dt= lhs )
                     {
-                    start=(DroolsTree)input.LT(1);
-                    match(input,VK_NOT,FOLLOW_VK_NOT_in_lhs1196); 
+                    start=(DroolsTree)match(input,VK_NOT,FOLLOW_VK_NOT_in_lhs1196); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_lhs_in_lhs1200);
                     dt=lhs();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
-                    	retval.baseDescr = factory.createNot(start, dt.baseDescr);	
+                    	retval.baseDescr = factory.createNot(start, (dt!=null?dt.baseDescr:null));	
 
                     }
                     break;
                 case 7 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:235:4: ^(start= VK_EVAL pc= VT_PAREN_CHUNK )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:235:4: ^(start= VK_EVAL pc= VT_PAREN_CHUNK )
                     {
-                    start=(DroolsTree)input.LT(1);
-                    match(input,VK_EVAL,FOLLOW_VK_EVAL_in_lhs1212); 
+                    start=(DroolsTree)match(input,VK_EVAL,FOLLOW_VK_EVAL_in_lhs1212); 
 
                     match(input, Token.DOWN, null); 
-                    pc=(DroolsTree)input.LT(1);
-                    match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_lhs1216); 
+                    pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_lhs1216); 
 
                     match(input, Token.UP, null); 
                     	retval.baseDescr = factory.createEval(start, pc);	
@@ -2518,13 +2507,12 @@
                     }
                     break;
                 case 8 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:237:4: ^(start= VK_FORALL (dt= lhs )+ )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:237:4: ^(start= VK_FORALL (dt= lhs )+ )
                     {
-                    start=(DroolsTree)input.LT(1);
-                    match(input,VK_FORALL,FOLLOW_VK_FORALL_in_lhs1228); 
+                    start=(DroolsTree)match(input,VK_FORALL,FOLLOW_VK_FORALL_in_lhs1228); 
 
                     match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:237:22: (dt= lhs )+
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:237:22: (dt= lhs )+
                     int cnt32=0;
                     loop32:
                     do {
@@ -2538,14 +2526,15 @@
 
                         switch (alt32) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:237:23: dt= lhs
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:237:23: dt= lhs
                     	    {
                     	    pushFollow(FOLLOW_lhs_in_lhs1233);
                     	    dt=lhs();
-                    	    _fsp--;
 
-                    	    	lhsList.add(dt.baseDescr);	
+                    	    state._fsp--;
 
+                    	    	lhsList.add((dt!=null?dt.baseDescr:null));	
+
                     	    }
                     	    break;
 
@@ -2565,32 +2554,35 @@
                     }
                     break;
                 case 9 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:239:4: ^( FROM pn= lhs_pattern fe= from_elements )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:239:4: ^( FROM pn= lhs_pattern fe= from_elements )
                     {
                     match(input,FROM,FOLLOW_FROM_in_lhs1247); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_lhs_pattern_in_lhs1251);
                     pn=lhs_pattern();
-                    _fsp--;
 
+                    state._fsp--;
+
                     pushFollow(FOLLOW_from_elements_in_lhs1255);
                     fe=from_elements();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
-                    	retval.baseDescr = factory.setupFrom(pn, fe.patternSourceDescr);	
+                    	retval.baseDescr = factory.setupFrom(pn, (fe!=null?fe.patternSourceDescr:null));	
 
                     }
                     break;
                 case 10 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:241:4: pn= lhs_pattern
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:241:4: pn= lhs_pattern
                     {
                     pushFollow(FOLLOW_lhs_pattern_in_lhs1266);
                     pn=lhs_pattern();
-                    _fsp--;
 
+                    state._fsp--;
+
                     	retval.baseDescr = pn;	
 
                     }
@@ -2606,29 +2598,29 @@
         }
         return retval;
     }
-    // $ANTLR end lhs
+    // $ANTLR end "lhs"
 
     public static class from_elements_return extends TreeRuleReturnScope {
         public PatternSourceDescr patternSourceDescr;
     };
 
-    // $ANTLR start from_elements
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:245:1: from_elements returns [PatternSourceDescr patternSourceDescr] : ( ^(start= ACCUMULATE dt= lhs ret= accumulate_parts[$patternSourceDescr] ) | ^(start= COLLECT dt= lhs ) | ^(start= VK_ENTRY_POINT entryId= VT_ENTRYPOINT_ID ) | fs= from_source_clause );
-    public final from_elements_return from_elements() throws RecognitionException {
-        from_elements_return retval = new from_elements_return();
+    // $ANTLR start "from_elements"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:245:1: from_elements returns [PatternSourceDescr patternSourceDescr] : ( ^(start= ACCUMULATE dt= lhs ret= accumulate_parts[$patternSourceDescr] ) | ^(start= COLLECT dt= lhs ) | ^(start= VK_ENTRY_POINT entryId= VT_ENTRYPOINT_ID ) | fs= from_source_clause );
+    public final DescrBuilderTree.from_elements_return from_elements() throws RecognitionException {
+        DescrBuilderTree.from_elements_return retval = new DescrBuilderTree.from_elements_return();
         retval.start = input.LT(1);
 
         DroolsTree start=null;
         DroolsTree entryId=null;
-        lhs_return dt = null;
+        DescrBuilderTree.lhs_return dt = null;
 
         AccumulateDescr ret = null;
 
-        from_source_clause_return fs = null;
+        DescrBuilderTree.from_source_clause_return fs = null;
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:246:2: ( ^(start= ACCUMULATE dt= lhs ret= accumulate_parts[$patternSourceDescr] ) | ^(start= COLLECT dt= lhs ) | ^(start= VK_ENTRY_POINT entryId= VT_ENTRYPOINT_ID ) | fs= from_source_clause )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:246:2: ( ^(start= ACCUMULATE dt= lhs ret= accumulate_parts[$patternSourceDescr] ) | ^(start= COLLECT dt= lhs ) | ^(start= VK_ENTRY_POINT entryId= VT_ENTRYPOINT_ID ) | fs= from_source_clause )
             int alt34=4;
             switch ( input.LA(1) ) {
             case ACCUMULATE:
@@ -2653,60 +2645,59 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("245:1: from_elements returns [PatternSourceDescr patternSourceDescr] : ( ^(start= ACCUMULATE dt= lhs ret= accumulate_parts[$patternSourceDescr] ) | ^(start= COLLECT dt= lhs ) | ^(start= VK_ENTRY_POINT entryId= VT_ENTRYPOINT_ID ) | fs= from_source_clause );", 34, 0, input);
+                    new NoViableAltException("", 34, 0, input);
 
                 throw nvae;
             }
 
             switch (alt34) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:246:4: ^(start= ACCUMULATE dt= lhs ret= accumulate_parts[$patternSourceDescr] )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:246:4: ^(start= ACCUMULATE dt= lhs ret= accumulate_parts[$patternSourceDescr] )
                     {
-                    start=(DroolsTree)input.LT(1);
-                    match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_from_elements1287); 
+                    start=(DroolsTree)match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_from_elements1287); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_lhs_in_from_elements1291);
                     dt=lhs();
-                    _fsp--;
 
-                    	retval.patternSourceDescr = factory.createAccumulate(start, dt.baseDescr);	
+                    state._fsp--;
+
+                    	retval.patternSourceDescr = factory.createAccumulate(start, (dt!=null?dt.baseDescr:null));	
                     pushFollow(FOLLOW_accumulate_parts_in_from_elements1301);
                     ret=accumulate_parts(retval.patternSourceDescr);
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
                     	retval.patternSourceDescr = ret;	
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:250:4: ^(start= COLLECT dt= lhs )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:250:4: ^(start= COLLECT dt= lhs )
                     {
-                    start=(DroolsTree)input.LT(1);
-                    match(input,COLLECT,FOLLOW_COLLECT_in_from_elements1314); 
+                    start=(DroolsTree)match(input,COLLECT,FOLLOW_COLLECT_in_from_elements1314); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_lhs_in_from_elements1318);
                     dt=lhs();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
-                    	retval.patternSourceDescr = factory.createCollect(start, dt.baseDescr);	
+                    	retval.patternSourceDescr = factory.createCollect(start, (dt!=null?dt.baseDescr:null));	
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:252:4: ^(start= VK_ENTRY_POINT entryId= VT_ENTRYPOINT_ID )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:252:4: ^(start= VK_ENTRY_POINT entryId= VT_ENTRYPOINT_ID )
                     {
-                    start=(DroolsTree)input.LT(1);
-                    match(input,VK_ENTRY_POINT,FOLLOW_VK_ENTRY_POINT_in_from_elements1330); 
+                    start=(DroolsTree)match(input,VK_ENTRY_POINT,FOLLOW_VK_ENTRY_POINT_in_from_elements1330); 
 
                     match(input, Token.DOWN, null); 
-                    entryId=(DroolsTree)input.LT(1);
-                    match(input,VT_ENTRYPOINT_ID,FOLLOW_VT_ENTRYPOINT_ID_in_from_elements1334); 
+                    entryId=(DroolsTree)match(input,VT_ENTRYPOINT_ID,FOLLOW_VT_ENTRYPOINT_ID_in_from_elements1334); 
 
                     match(input, Token.UP, null); 
                     	retval.patternSourceDescr = factory.createEntryPoint(start, entryId);	
@@ -2714,14 +2705,15 @@
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:254:4: fs= from_source_clause
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:254:4: fs= from_source_clause
                     {
                     pushFollow(FOLLOW_from_source_clause_in_from_elements1345);
                     fs=from_source_clause();
-                    _fsp--;
 
-                    	retval.patternSourceDescr = fs.fromDescr;	
+                    state._fsp--;
 
+                    	retval.patternSourceDescr = (fs!=null?fs.fromDescr:null);	
+
                     }
                     break;
 
@@ -2735,21 +2727,21 @@
         }
         return retval;
     }
-    // $ANTLR end from_elements
+    // $ANTLR end "from_elements"
 
 
-    // $ANTLR start accumulate_parts
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:258:1: accumulate_parts[PatternSourceDescr patternSourceDescr] returns [AccumulateDescr accumulateDescr] : (ac1= accumulate_init_clause[$patternSourceDescr] | ac2= accumulate_id_clause[$patternSourceDescr] );
+    // $ANTLR start "accumulate_parts"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:258:1: accumulate_parts[PatternSourceDescr patternSourceDescr] returns [AccumulateDescr accumulateDescr] : (ac1= accumulate_init_clause[$patternSourceDescr] | ac2= accumulate_id_clause[$patternSourceDescr] );
     public final AccumulateDescr accumulate_parts(PatternSourceDescr patternSourceDescr) throws RecognitionException {
         AccumulateDescr accumulateDescr = null;
 
-        accumulate_init_clause_return ac1 = null;
+        DescrBuilderTree.accumulate_init_clause_return ac1 = null;
 
         AccumulateDescr ac2 = null;
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:259:2: (ac1= accumulate_init_clause[$patternSourceDescr] | ac2= accumulate_id_clause[$patternSourceDescr] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:259:2: (ac1= accumulate_init_clause[$patternSourceDescr] | ac2= accumulate_id_clause[$patternSourceDescr] )
             int alt35=2;
             int LA35_0 = input.LA(1);
 
@@ -2761,29 +2753,31 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("258:1: accumulate_parts[PatternSourceDescr patternSourceDescr] returns [AccumulateDescr accumulateDescr] : (ac1= accumulate_init_clause[$patternSourceDescr] | ac2= accumulate_id_clause[$patternSourceDescr] );", 35, 0, input);
+                    new NoViableAltException("", 35, 0, input);
 
                 throw nvae;
             }
             switch (alt35) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:259:4: ac1= accumulate_init_clause[$patternSourceDescr]
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:259:4: ac1= accumulate_init_clause[$patternSourceDescr]
                     {
                     pushFollow(FOLLOW_accumulate_init_clause_in_accumulate_parts1366);
                     ac1=accumulate_init_clause(patternSourceDescr);
-                    _fsp--;
 
-                    	accumulateDescr = ac1.accumulateDescr;	
+                    state._fsp--;
 
+                    	accumulateDescr = (ac1!=null?ac1.accumulateDescr:null);	
+
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:261:4: ac2= accumulate_id_clause[$patternSourceDescr]
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:261:4: ac2= accumulate_id_clause[$patternSourceDescr]
                     {
                     pushFollow(FOLLOW_accumulate_id_clause_in_accumulate_parts1377);
                     ac2=accumulate_id_clause(patternSourceDescr);
-                    _fsp--;
 
+                    state._fsp--;
+
                     	accumulateDescr = ac2;	
 
                     }
@@ -2799,48 +2793,45 @@
         }
         return accumulateDescr;
     }
-    // $ANTLR end accumulate_parts
+    // $ANTLR end "accumulate_parts"
 
     public static class accumulate_init_clause_return extends TreeRuleReturnScope {
         public AccumulateDescr accumulateDescr;
     };
 
-    // $ANTLR start accumulate_init_clause
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:265:1: accumulate_init_clause[PatternSourceDescr accumulateParam] returns [AccumulateDescr accumulateDescr] : ^( VT_ACCUMULATE_INIT_CLAUSE ^(start= INIT pc1= VT_PAREN_CHUNK ) ^( VK_ACTION pc2= VT_PAREN_CHUNK ) (rev= accumulate_init_reverse_clause )? ^( VK_RESULT pc3= VT_PAREN_CHUNK ) ) ;
-    public final accumulate_init_clause_return accumulate_init_clause(PatternSourceDescr accumulateParam) throws RecognitionException {
-        accumulate_init_clause_return retval = new accumulate_init_clause_return();
+    // $ANTLR start "accumulate_init_clause"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:265:1: accumulate_init_clause[PatternSourceDescr accumulateParam] returns [AccumulateDescr accumulateDescr] : ^( VT_ACCUMULATE_INIT_CLAUSE ^(start= INIT pc1= VT_PAREN_CHUNK ) ^( VK_ACTION pc2= VT_PAREN_CHUNK ) (rev= accumulate_init_reverse_clause )? ^( VK_RESULT pc3= VT_PAREN_CHUNK ) ) ;
+    public final DescrBuilderTree.accumulate_init_clause_return accumulate_init_clause(PatternSourceDescr accumulateParam) throws RecognitionException {
+        DescrBuilderTree.accumulate_init_clause_return retval = new DescrBuilderTree.accumulate_init_clause_return();
         retval.start = input.LT(1);
 
         DroolsTree start=null;
         DroolsTree pc1=null;
         DroolsTree pc2=null;
         DroolsTree pc3=null;
-        accumulate_init_reverse_clause_return rev = null;
+        DescrBuilderTree.accumulate_init_reverse_clause_return rev = null;
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:266:2: ( ^( VT_ACCUMULATE_INIT_CLAUSE ^(start= INIT pc1= VT_PAREN_CHUNK ) ^( VK_ACTION pc2= VT_PAREN_CHUNK ) (rev= accumulate_init_reverse_clause )? ^( VK_RESULT pc3= VT_PAREN_CHUNK ) ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:266:4: ^( VT_ACCUMULATE_INIT_CLAUSE ^(start= INIT pc1= VT_PAREN_CHUNK ) ^( VK_ACTION pc2= VT_PAREN_CHUNK ) (rev= accumulate_init_reverse_clause )? ^( VK_RESULT pc3= VT_PAREN_CHUNK ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:266:2: ( ^( VT_ACCUMULATE_INIT_CLAUSE ^(start= INIT pc1= VT_PAREN_CHUNK ) ^( VK_ACTION pc2= VT_PAREN_CHUNK ) (rev= accumulate_init_reverse_clause )? ^( VK_RESULT pc3= VT_PAREN_CHUNK ) ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:266:4: ^( VT_ACCUMULATE_INIT_CLAUSE ^(start= INIT pc1= VT_PAREN_CHUNK ) ^( VK_ACTION pc2= VT_PAREN_CHUNK ) (rev= accumulate_init_reverse_clause )? ^( VK_RESULT pc3= VT_PAREN_CHUNK ) )
             {
             match(input,VT_ACCUMULATE_INIT_CLAUSE,FOLLOW_VT_ACCUMULATE_INIT_CLAUSE_in_accumulate_init_clause1400); 
 
             match(input, Token.DOWN, null); 
-            start=(DroolsTree)input.LT(1);
-            match(input,INIT,FOLLOW_INIT_in_accumulate_init_clause1409); 
+            start=(DroolsTree)match(input,INIT,FOLLOW_INIT_in_accumulate_init_clause1409); 
 
             match(input, Token.DOWN, null); 
-            pc1=(DroolsTree)input.LT(1);
-            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1413); 
+            pc1=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1413); 
 
             match(input, Token.UP, null); 
             match(input,VK_ACTION,FOLLOW_VK_ACTION_in_accumulate_init_clause1421); 
 
             match(input, Token.DOWN, null); 
-            pc2=(DroolsTree)input.LT(1);
-            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1425); 
+            pc2=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1425); 
 
             match(input, Token.UP, null); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:269:7: (rev= accumulate_init_reverse_clause )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:269:7: (rev= accumulate_init_reverse_clause )?
             int alt36=2;
             int LA36_0 = input.LA(1);
 
@@ -2849,13 +2840,14 @@
             }
             switch (alt36) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:269:7: rev= accumulate_init_reverse_clause
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:269:7: rev= accumulate_init_reverse_clause
                     {
                     pushFollow(FOLLOW_accumulate_init_reverse_clause_in_accumulate_init_clause1434);
                     rev=accumulate_init_reverse_clause();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
@@ -2864,8 +2856,7 @@
             match(input,VK_RESULT,FOLLOW_VK_RESULT_in_accumulate_init_clause1441); 
 
             match(input, Token.DOWN, null); 
-            pc3=(DroolsTree)input.LT(1);
-            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1445); 
+            pc3=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1445); 
 
             match(input, Token.UP, null); 
 
@@ -2873,7 +2864,7 @@
             	if (null == rev){
             			retval.accumulateDescr = factory.setupAccumulateInit(accumulateParam, start, pc1, pc2, pc3, null);
             		} else {
-            			retval.accumulateDescr = factory.setupAccumulateInit(accumulateParam, start, pc1, pc2, pc3, rev.vkReverseChunk);
+            			retval.accumulateDescr = factory.setupAccumulateInit(accumulateParam, start, pc1, pc2, pc3, (rev!=null?rev.vkReverseChunk:null));
             		}	
 
             }
@@ -2887,32 +2878,30 @@
         }
         return retval;
     }
-    // $ANTLR end accumulate_init_clause
+    // $ANTLR end "accumulate_init_clause"
 
     public static class accumulate_init_reverse_clause_return extends TreeRuleReturnScope {
         public DroolsTree vkReverse;
         public DroolsTree vkReverseChunk;
     };
 
-    // $ANTLR start accumulate_init_reverse_clause
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:278:1: accumulate_init_reverse_clause returns [DroolsTree vkReverse, DroolsTree vkReverseChunk] : ^(vk= VK_REVERSE pc= VT_PAREN_CHUNK ) ;
-    public final accumulate_init_reverse_clause_return accumulate_init_reverse_clause() throws RecognitionException {
-        accumulate_init_reverse_clause_return retval = new accumulate_init_reverse_clause_return();
+    // $ANTLR start "accumulate_init_reverse_clause"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:278:1: accumulate_init_reverse_clause returns [DroolsTree vkReverse, DroolsTree vkReverseChunk] : ^(vk= VK_REVERSE pc= VT_PAREN_CHUNK ) ;
+    public final DescrBuilderTree.accumulate_init_reverse_clause_return accumulate_init_reverse_clause() throws RecognitionException {
+        DescrBuilderTree.accumulate_init_reverse_clause_return retval = new DescrBuilderTree.accumulate_init_reverse_clause_return();
         retval.start = input.LT(1);
 
         DroolsTree vk=null;
         DroolsTree pc=null;
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:279:2: ( ^(vk= VK_REVERSE pc= VT_PAREN_CHUNK ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:279:4: ^(vk= VK_REVERSE pc= VT_PAREN_CHUNK )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:279:2: ( ^(vk= VK_REVERSE pc= VT_PAREN_CHUNK ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:279:4: ^(vk= VK_REVERSE pc= VT_PAREN_CHUNK )
             {
-            vk=(DroolsTree)input.LT(1);
-            match(input,VK_REVERSE,FOLLOW_VK_REVERSE_in_accumulate_init_reverse_clause1468); 
+            vk=(DroolsTree)match(input,VK_REVERSE,FOLLOW_VK_REVERSE_in_accumulate_init_reverse_clause1468); 
 
             match(input, Token.DOWN, null); 
-            pc=(DroolsTree)input.LT(1);
-            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_reverse_clause1472); 
+            pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_reverse_clause1472); 
 
             match(input, Token.UP, null); 
             	retval.vkReverse = vk;
@@ -2929,11 +2918,11 @@
         }
         return retval;
     }
-    // $ANTLR end accumulate_init_reverse_clause
+    // $ANTLR end "accumulate_init_reverse_clause"
 
 
-    // $ANTLR start accumulate_id_clause
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:284:1: accumulate_id_clause[PatternSourceDescr accumulateParam] returns [AccumulateDescr accumulateDescr] : ^( VT_ACCUMULATE_ID_CLAUSE id= ID pc= VT_PAREN_CHUNK ) ;
+    // $ANTLR start "accumulate_id_clause"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:284:1: accumulate_id_clause[PatternSourceDescr accumulateParam] returns [AccumulateDescr accumulateDescr] : ^( VT_ACCUMULATE_ID_CLAUSE id= ID pc= VT_PAREN_CHUNK ) ;
     public final AccumulateDescr accumulate_id_clause(PatternSourceDescr accumulateParam) throws RecognitionException {
         AccumulateDescr accumulateDescr = null;
 
@@ -2941,16 +2930,14 @@
         DroolsTree pc=null;
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:285:2: ( ^( VT_ACCUMULATE_ID_CLAUSE id= ID pc= VT_PAREN_CHUNK ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:285:4: ^( VT_ACCUMULATE_ID_CLAUSE id= ID pc= VT_PAREN_CHUNK )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:285:2: ( ^( VT_ACCUMULATE_ID_CLAUSE id= ID pc= VT_PAREN_CHUNK ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:285:4: ^( VT_ACCUMULATE_ID_CLAUSE id= ID pc= VT_PAREN_CHUNK )
             {
             match(input,VT_ACCUMULATE_ID_CLAUSE,FOLLOW_VT_ACCUMULATE_ID_CLAUSE_in_accumulate_id_clause1494); 
 
             match(input, Token.DOWN, null); 
-            id=(DroolsTree)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_accumulate_id_clause1498); 
-            pc=(DroolsTree)input.LT(1);
-            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_id_clause1502); 
+            id=(DroolsTree)match(input,ID,FOLLOW_ID_in_accumulate_id_clause1498); 
+            pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_id_clause1502); 
 
             match(input, Token.UP, null); 
             	accumulateDescr = factory.setupAccumulateId(accumulateParam, id, pc);	
@@ -2966,7 +2953,7 @@
         }
         return accumulateDescr;
     }
-    // $ANTLR end accumulate_id_clause
+    // $ANTLR end "accumulate_id_clause"
 
     protected static class from_source_clause_scope {
         AccessorDescr accessorDescr;
@@ -2978,26 +2965,25 @@
         public AccessorDescr retAccessorDescr;
     };
 
-    // $ANTLR start from_source_clause
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:289:1: from_source_clause returns [FromDescr fromDescr, AccessorDescr retAccessorDescr] : ^( VT_FROM_SOURCE id= ID (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) ;
-    public final from_source_clause_return from_source_clause() throws RecognitionException {
+    // $ANTLR start "from_source_clause"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:289:1: from_source_clause returns [FromDescr fromDescr, AccessorDescr retAccessorDescr] : ^( VT_FROM_SOURCE id= ID (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) ;
+    public final DescrBuilderTree.from_source_clause_return from_source_clause() throws RecognitionException {
         from_source_clause_stack.push(new from_source_clause_scope());
-        from_source_clause_return retval = new from_source_clause_return();
+        DescrBuilderTree.from_source_clause_return retval = new DescrBuilderTree.from_source_clause_return();
         retval.start = input.LT(1);
 
         DroolsTree id=null;
         DroolsTree pc=null;
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:292:3: ( ^( VT_FROM_SOURCE id= ID (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:292:5: ^( VT_FROM_SOURCE id= ID (pc= VT_PAREN_CHUNK )? ( expression_chain )? )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:292:3: ( ^( VT_FROM_SOURCE id= ID (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:292:5: ^( VT_FROM_SOURCE id= ID (pc= VT_PAREN_CHUNK )? ( expression_chain )? )
             {
             match(input,VT_FROM_SOURCE,FOLLOW_VT_FROM_SOURCE_in_from_source_clause1524); 
 
             match(input, Token.DOWN, null); 
-            id=(DroolsTree)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_from_source_clause1528); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:292:30: (pc= VT_PAREN_CHUNK )?
+            id=(DroolsTree)match(input,ID,FOLLOW_ID_in_from_source_clause1528); 
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:292:30: (pc= VT_PAREN_CHUNK )?
             int alt37=2;
             int LA37_0 = input.LA(1);
 
@@ -3006,10 +2992,9 @@
             }
             switch (alt37) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:292:30: pc= VT_PAREN_CHUNK
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:292:30: pc= VT_PAREN_CHUNK
                     {
-                    pc=(DroolsTree)input.LT(1);
-                    match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_from_source_clause1532); 
+                    pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_from_source_clause1532); 
 
                     }
                     break;
@@ -3018,7 +3003,7 @@
 
             	((from_source_clause_scope)from_source_clause_stack.peek()).accessorDescr = factory.createAccessor(id, pc);	
             		retval.retAccessorDescr = ((from_source_clause_scope)from_source_clause_stack.peek()).accessorDescr;	
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:295:3: ( expression_chain )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:295:3: ( expression_chain )?
             int alt38=2;
             int LA38_0 = input.LA(1);
 
@@ -3027,13 +3012,14 @@
             }
             switch (alt38) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:295:3: expression_chain
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:295:3: expression_chain
                     {
                     pushFollow(FOLLOW_expression_chain_in_from_source_clause1541);
                     expression_chain();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
@@ -3055,15 +3041,15 @@
         }
         return retval;
     }
-    // $ANTLR end from_source_clause
+    // $ANTLR end "from_source_clause"
 
     public static class expression_chain_return extends TreeRuleReturnScope {
     };
 
-    // $ANTLR start expression_chain
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:299:1: expression_chain : ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) ;
-    public final expression_chain_return expression_chain() throws RecognitionException {
-        expression_chain_return retval = new expression_chain_return();
+    // $ANTLR start "expression_chain"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:299:1: expression_chain : ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) ;
+    public final DescrBuilderTree.expression_chain_return expression_chain() throws RecognitionException {
+        DescrBuilderTree.expression_chain_return retval = new DescrBuilderTree.expression_chain_return();
         retval.start = input.LT(1);
 
         DroolsTree start=null;
@@ -3072,16 +3058,14 @@
         DroolsTree pc=null;
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:300:2: ( ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:300:4: ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:300:2: ( ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:300:4: ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? )
             {
-            start=(DroolsTree)input.LT(1);
-            match(input,VT_EXPRESSION_CHAIN,FOLLOW_VT_EXPRESSION_CHAIN_in_expression_chain1560); 
+            start=(DroolsTree)match(input,VT_EXPRESSION_CHAIN,FOLLOW_VT_EXPRESSION_CHAIN_in_expression_chain1560); 
 
             match(input, Token.DOWN, null); 
-            id=(DroolsTree)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_expression_chain1564); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:300:40: (sc= VT_SQUARE_CHUNK )?
+            id=(DroolsTree)match(input,ID,FOLLOW_ID_in_expression_chain1564); 
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:300:40: (sc= VT_SQUARE_CHUNK )?
             int alt39=2;
             int LA39_0 = input.LA(1);
 
@@ -3090,17 +3074,16 @@
             }
             switch (alt39) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:300:40: sc= VT_SQUARE_CHUNK
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:300:40: sc= VT_SQUARE_CHUNK
                     {
-                    sc=(DroolsTree)input.LT(1);
-                    match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_expression_chain1568); 
+                    sc=(DroolsTree)match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_expression_chain1568); 
 
                     }
                     break;
 
             }
 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:300:60: (pc= VT_PAREN_CHUNK )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:300:60: (pc= VT_PAREN_CHUNK )?
             int alt40=2;
             int LA40_0 = input.LA(1);
 
@@ -3109,10 +3092,9 @@
             }
             switch (alt40) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:300:60: pc= VT_PAREN_CHUNK
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:300:60: pc= VT_PAREN_CHUNK
                     {
-                    pc=(DroolsTree)input.LT(1);
-                    match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_expression_chain1573); 
+                    pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_expression_chain1573); 
 
                     }
                     break;
@@ -3121,7 +3103,7 @@
 
             	DeclarativeInvokerDescr declarativeInvokerResult = factory.createExpressionChain(start, id, sc, pc);	
             		((from_source_clause_scope)from_source_clause_stack.peek()).accessorDescr.addInvoker(declarativeInvokerResult);	
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:303:3: ( expression_chain )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:303:3: ( expression_chain )?
             int alt41=2;
             int LA41_0 = input.LA(1);
 
@@ -3130,13 +3112,14 @@
             }
             switch (alt41) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:303:3: expression_chain
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:303:3: expression_chain
                     {
                     pushFollow(FOLLOW_expression_chain_in_expression_chain1581);
                     expression_chain();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
@@ -3156,33 +3139,34 @@
         }
         return retval;
     }
-    // $ANTLR end expression_chain
+    // $ANTLR end "expression_chain"
 
 
-    // $ANTLR start lhs_pattern
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:306:1: lhs_pattern returns [BaseDescr baseDescr] : ^( VT_PATTERN fe= fact_expression ) (oc= over_clause )? ;
+    // $ANTLR start "lhs_pattern"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:306:1: lhs_pattern returns [BaseDescr baseDescr] : ^( VT_PATTERN fe= fact_expression ) (oc= over_clause )? ;
     public final BaseDescr lhs_pattern() throws RecognitionException {
         BaseDescr baseDescr = null;
 
-        fact_expression_return fe = null;
+        DescrBuilderTree.fact_expression_return fe = null;
 
         List oc = null;
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:307:2: ( ^( VT_PATTERN fe= fact_expression ) (oc= over_clause )? )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:307:4: ^( VT_PATTERN fe= fact_expression ) (oc= over_clause )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:307:2: ( ^( VT_PATTERN fe= fact_expression ) (oc= over_clause )? )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:307:4: ^( VT_PATTERN fe= fact_expression ) (oc= over_clause )?
             {
             match(input,VT_PATTERN,FOLLOW_VT_PATTERN_in_lhs_pattern1599); 
 
             match(input, Token.DOWN, null); 
             pushFollow(FOLLOW_fact_expression_in_lhs_pattern1603);
             fe=fact_expression();
-            _fsp--;
 
+            state._fsp--;
 
+
             match(input, Token.UP, null); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:307:39: (oc= over_clause )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:307:39: (oc= over_clause )?
             int alt42=2;
             int LA42_0 = input.LA(1);
 
@@ -3191,19 +3175,20 @@
             }
             switch (alt42) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:307:39: oc= over_clause
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:307:39: oc= over_clause
                     {
                     pushFollow(FOLLOW_over_clause_in_lhs_pattern1608);
                     oc=over_clause();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
             }
 
-            	baseDescr = factory.setupBehavior(fe.descr, oc);	
+            	baseDescr = factory.setupBehavior((fe!=null?fe.descr:null), oc);	
 
             }
 
@@ -3216,11 +3201,11 @@
         }
         return baseDescr;
     }
-    // $ANTLR end lhs_pattern
+    // $ANTLR end "lhs_pattern"
 
 
-    // $ANTLR start over_clause
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:311:1: over_clause returns [List behaviorList] : ^( OVER (oe= over_element )+ ) ;
+    // $ANTLR start "over_clause"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:311:1: over_clause returns [List behaviorList] : ^( OVER (oe= over_element )+ ) ;
     public final List over_clause() throws RecognitionException {
         List behaviorList = null;
 
@@ -3229,13 +3214,13 @@
 
         behaviorList = new LinkedList();
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:313:2: ( ^( OVER (oe= over_element )+ ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:313:4: ^( OVER (oe= over_element )+ )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:313:2: ( ^( OVER (oe= over_element )+ ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:313:4: ^( OVER (oe= over_element )+ )
             {
             match(input,OVER,FOLLOW_OVER_in_over_clause1633); 
 
             match(input, Token.DOWN, null); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:313:11: (oe= over_element )+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:313:11: (oe= over_element )+
             int cnt43=0;
             loop43:
             do {
@@ -3249,12 +3234,13 @@
 
                 switch (alt43) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:313:12: oe= over_element
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:313:12: oe= over_element
             	    {
             	    pushFollow(FOLLOW_over_element_in_over_clause1638);
             	    oe=over_element();
-            	    _fsp--;
 
+            	    state._fsp--;
+
             	    behaviorList.add(oe);
 
             	    }
@@ -3283,11 +3269,11 @@
         }
         return behaviorList;
     }
-    // $ANTLR end over_clause
+    // $ANTLR end "over_clause"
 
 
-    // $ANTLR start over_element
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:316:1: over_element returns [BehaviorDescr behavior] : ^( VT_BEHAVIOR ID id2= ID pc= VT_PAREN_CHUNK ) ;
+    // $ANTLR start "over_element"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:316:1: over_element returns [BehaviorDescr behavior] : ^( VT_BEHAVIOR ID id2= ID pc= VT_PAREN_CHUNK ) ;
     public final BehaviorDescr over_element() throws RecognitionException {
         BehaviorDescr behavior = null;
 
@@ -3295,17 +3281,15 @@
         DroolsTree pc=null;
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:317:2: ( ^( VT_BEHAVIOR ID id2= ID pc= VT_PAREN_CHUNK ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:317:4: ^( VT_BEHAVIOR ID id2= ID pc= VT_PAREN_CHUNK )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:317:2: ( ^( VT_BEHAVIOR ID id2= ID pc= VT_PAREN_CHUNK ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:317:4: ^( VT_BEHAVIOR ID id2= ID pc= VT_PAREN_CHUNK )
             {
             match(input,VT_BEHAVIOR,FOLLOW_VT_BEHAVIOR_in_over_element1659); 
 
             match(input, Token.DOWN, null); 
             match(input,ID,FOLLOW_ID_in_over_element1661); 
-            id2=(DroolsTree)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_over_element1665); 
-            pc=(DroolsTree)input.LT(1);
-            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_over_element1669); 
+            id2=(DroolsTree)match(input,ID,FOLLOW_ID_in_over_element1665); 
+            pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_over_element1669); 
 
             match(input, Token.UP, null); 
             	behavior = factory.createBehavior(id2,pc);	
@@ -3321,16 +3305,16 @@
         }
         return behavior;
     }
-    // $ANTLR end over_element
+    // $ANTLR end "over_element"
 
     public static class fact_expression_return extends TreeRuleReturnScope {
         public BaseDescr descr;
     };
 
-    // $ANTLR start fact_expression
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:321:1: fact_expression returns [BaseDescr descr] : ( ^( VT_FACT pt= pattern_type (fe= fact_expression )* ) | ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression ) | ^(start= VT_FACT_OR left= fact_expression right= fact_expression ) | ^( VT_FIELD field= field_element (fe= fact_expression )? ) | ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression ) | ^( VK_EVAL pc= VT_PAREN_CHUNK ) | ^(op= EQUAL fe= fact_expression ) | ^(op= NOT_EQUAL fe= fact_expression ) | ^(op= GREATER fe= fact_expression ) | ^(op= GREATER_EQUAL fe= fact_expression ) | ^(op= LESS fe= fact_expression ) | ^(op= LESS_EQUAL fe= fact_expression ) | ^(op= VK_CONTAINS (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_EXCLUDES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MATCHES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_SOUNDSLIKE (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MEMBEROF (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_OP!
 ERATOR (not= VK_NOT )? (param= VT_SQUARE_CHUNK )? fe= fact_expression ) | ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ ) | ^( DOUBLE_PIPE left= fact_expression right= fact_expression ) | ^( DOUBLE_AMPER left= fact_expression right= fact_expression ) | ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) | s= STRING | i= INT | f= FLOAT | b= BOOL | n= NULL | pc= VT_PAREN_CHUNK );
-    public final fact_expression_return fact_expression() throws RecognitionException {
-        fact_expression_return retval = new fact_expression_return();
+    // $ANTLR start "fact_expression"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:321:1: fact_expression returns [BaseDescr descr] : ( ^( VT_FACT pt= pattern_type (fe= fact_expression )* ) | ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression ) | ^(start= VT_FACT_OR left= fact_expression right= fact_expression ) | ^( VT_FIELD field= field_element (fe= fact_expression )? ) | ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression ) | ^( VK_EVAL pc= VT_PAREN_CHUNK ) | ^(op= EQUAL fe= fact_expression ) | ^(op= NOT_EQUAL fe= fact_expression ) | ^(op= GREATER fe= fact_expression ) | ^(op= GREATER_EQUAL fe= fact_expression ) | ^(op= LESS fe= fact_expression ) | ^(op= LESS_EQUAL fe= fact_expression ) | ^(op= VK_CONTAINS (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_EXCLUDES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MATCHES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_SOUNDSLIKE (not= VK_NOT )? fe= fact_expression ) | ^(op!
 = VK_MEMBEROF (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_OPERATOR (not= VK_NOT )? (param= VT_SQUARE_CHUNK )? fe= fact_expression ) | ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ ) | ^( DOUBLE_PIPE left= fact_expression right= fact_expression ) | ^( DOUBLE_AMPER left= fact_expression right= fact_expression ) | ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) | s= STRING | i= INT | f= FLOAT | b= BOOL | n= NULL | pc= VT_PAREN_CHUNK );
+    public final DescrBuilderTree.fact_expression_return fact_expression() throws RecognitionException {
+        DescrBuilderTree.fact_expression_return retval = new DescrBuilderTree.fact_expression_return();
         retval.start = input.LT(1);
 
         DroolsTree label=null;
@@ -3346,24 +3330,24 @@
         DroolsTree n=null;
         BaseDescr pt = null;
 
-        fact_expression_return fe = null;
+        DescrBuilderTree.fact_expression_return fe = null;
 
-        fact_expression_return fact = null;
+        DescrBuilderTree.fact_expression_return fact = null;
 
-        fact_expression_return left = null;
+        DescrBuilderTree.fact_expression_return left = null;
 
-        fact_expression_return right = null;
+        DescrBuilderTree.fact_expression_return right = null;
 
         FieldConstraintDescr field = null;
 
         BaseDescr ae = null;
 
 
-        
+
         	List<BaseDescr> exprList = new LinkedList<BaseDescr>();
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:324:3: ( ^( VT_FACT pt= pattern_type (fe= fact_expression )* ) | ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression ) | ^(start= VT_FACT_OR left= fact_expression right= fact_expression ) | ^( VT_FIELD field= field_element (fe= fact_expression )? ) | ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression ) | ^( VK_EVAL pc= VT_PAREN_CHUNK ) | ^(op= EQUAL fe= fact_expression ) | ^(op= NOT_EQUAL fe= fact_expression ) | ^(op= GREATER fe= fact_expression ) | ^(op= GREATER_EQUAL fe= fact_expression ) | ^(op= LESS fe= fact_expression ) | ^(op= LESS_EQUAL fe= fact_expression ) | ^(op= VK_CONTAINS (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_EXCLUDES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MATCHES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_SOUNDSLIKE (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MEMBEROF (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_OPERATOR (not= VK_NOT )? (param= VT_SQ!
 UARE_CHUNK )? fe= fact_expression ) | ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ ) | ^( DOUBLE_PIPE left= fact_expression right= fact_expression ) | ^( DOUBLE_AMPER left= fact_expression right= fact_expression ) | ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) | s= STRING | i= INT | f= FLOAT | b= BOOL | n= NULL | pc= VT_PAREN_CHUNK )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:324:3: ( ^( VT_FACT pt= pattern_type (fe= fact_expression )* ) | ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression ) | ^(start= VT_FACT_OR left= fact_expression right= fact_expression ) | ^( VT_FIELD field= field_element (fe= fact_expression )? ) | ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression ) | ^( VK_EVAL pc= VT_PAREN_CHUNK ) | ^(op= EQUAL fe= fact_expression ) | ^(op= NOT_EQUAL fe= fact_expression ) | ^(op= GREATER fe= fact_expression ) | ^(op= GREATER_EQUAL fe= fact_expression ) | ^(op= LESS fe= fact_expression ) | ^(op= LESS_EQUAL fe= fact_expression ) | ^(op= VK_CONTAINS (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_EXCLUDES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MATCHES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_SOUNDSLIKE (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MEMBEROF (not= VK_NOT )? fe= fa!
 ct_expression ) | ^(op= VK_OPERATOR (not= VK_NOT )? (param= VT_SQUARE_CHUNK )? fe= fact_expression ) | ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ ) | ^( DOUBLE_PIPE left= fact_expression right= fact_expression ) | ^( DOUBLE_AMPER left= fact_expression right= fact_expression ) | ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) | s= STRING | i= INT | f= FLOAT | b= BOOL | n= NULL | pc= VT_PAREN_CHUNK )
             int alt56=28;
             switch ( input.LA(1) ) {
             case VT_FACT:
@@ -3508,23 +3492,24 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("321:1: fact_expression returns [BaseDescr descr] : ( ^( VT_FACT pt= pattern_type (fe= fact_expression )* ) | ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression ) | ^(start= VT_FACT_OR left= fact_expression right= fact_expression ) | ^( VT_FIELD field= field_element (fe= fact_expression )? ) | ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression ) | ^( VK_EVAL pc= VT_PAREN_CHUNK ) | ^(op= EQUAL fe= fact_expression ) | ^(op= NOT_EQUAL fe= fact_expression ) | ^(op= GREATER fe= fact_expression ) | ^(op= GREATER_EQUAL fe= fact_expression ) | ^(op= LESS fe= fact_expression ) | ^(op= LESS_EQUAL fe= fact_expression ) | ^(op= VK_CONTAINS (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_EXCLUDES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MATCHES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_SOUNDSLIKE (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MEMBEROF (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_OPERATOR (not= VK!
 _NOT )? (param= VT_SQUARE_CHUNK )? fe= fact_expression ) | ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ ) | ^( DOUBLE_PIPE left= fact_expression right= fact_expression ) | ^( DOUBLE_AMPER left= fact_expression right= fact_expression ) | ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) | s= STRING | i= INT | f= FLOAT | b= BOOL | n= NULL | pc= VT_PAREN_CHUNK );", 56, 0, input);
+                    new NoViableAltException("", 56, 0, input);
 
                 throw nvae;
             }
 
             switch (alt56) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:324:5: ^( VT_FACT pt= pattern_type (fe= fact_expression )* )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:324:5: ^( VT_FACT pt= pattern_type (fe= fact_expression )* )
                     {
                     match(input,VT_FACT,FOLLOW_VT_FACT_in_fact_expression1692); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_pattern_type_in_fact_expression1696);
                     pt=pattern_type();
-                    _fsp--;
 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:324:31: (fe= fact_expression )*
+                    state._fsp--;
+
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:324:31: (fe= fact_expression )*
                     loop44:
                     do {
                         int alt44=2;
@@ -3537,14 +3522,15 @@
 
                         switch (alt44) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:324:32: fe= fact_expression
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:324:32: fe= fact_expression
                     	    {
                     	    pushFollow(FOLLOW_fact_expression_in_fact_expression1701);
                     	    fe=fact_expression();
-                    	    _fsp--;
 
-                    	    exprList.add(fe.descr);
+                    	    state._fsp--;
 
+                    	    exprList.add((fe!=null?fe.descr:null));
+
                     	    }
                     	    break;
 
@@ -3560,55 +3546,57 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:326:4: ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:326:4: ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression )
                     {
                     match(input,VT_FACT_BINDING,FOLLOW_VT_FACT_BINDING_in_fact_expression1715); 
 
                     match(input, Token.DOWN, null); 
-                    label=(DroolsTree)input.LT(1);
-                    match(input,VT_LABEL,FOLLOW_VT_LABEL_in_fact_expression1719); 
+                    label=(DroolsTree)match(input,VT_LABEL,FOLLOW_VT_LABEL_in_fact_expression1719); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1723);
                     fact=fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
-                    	retval.descr = factory.setupPatternBiding(label, fact.descr);	
+                    	retval.descr = factory.setupPatternBiding(label, (fact!=null?fact.descr:null));	
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:328:4: ^(start= VT_FACT_OR left= fact_expression right= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:328:4: ^(start= VT_FACT_OR left= fact_expression right= fact_expression )
                     {
-                    start=(DroolsTree)input.LT(1);
-                    match(input,VT_FACT_OR,FOLLOW_VT_FACT_OR_in_fact_expression1735); 
+                    start=(DroolsTree)match(input,VT_FACT_OR,FOLLOW_VT_FACT_OR_in_fact_expression1735); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1739);
                     left=fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
+
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1743);
                     right=fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
-                    	retval.descr = factory.createFactOr(start, left.descr, right.descr);	
+                    	retval.descr = factory.createFactOr(start, (left!=null?left.descr:null), (right!=null?right.descr:null));	
 
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:331:4: ^( VT_FIELD field= field_element (fe= fact_expression )? )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:331:4: ^( VT_FIELD field= field_element (fe= fact_expression )? )
                     {
                     match(input,VT_FIELD,FOLLOW_VT_FIELD_in_fact_expression1754); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_field_element_in_fact_expression1758);
                     field=field_element();
-                    _fsp--;
 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:331:37: (fe= fact_expression )?
+                    state._fsp--;
+
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:331:37: (fe= fact_expression )?
                     int alt45=2;
                     int LA45_0 = input.LA(1);
 
@@ -3617,13 +3605,14 @@
                     }
                     switch (alt45) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:331:37: fe= fact_expression
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:331:37: fe= fact_expression
                             {
                             pushFollow(FOLLOW_fact_expression_in_fact_expression1762);
                             fe=fact_expression();
-                            _fsp--;
 
+                            state._fsp--;
 
+
                             }
                             break;
 
@@ -3632,7 +3621,7 @@
 
                     match(input, Token.UP, null); 
                     	if (null != fe){
-                    			retval.descr = factory.setupFieldConstraint(field, fe.descr);
+                    			retval.descr = factory.setupFieldConstraint(field, (fe!=null?fe.descr:null));
                     		} else {
                     			retval.descr = factory.setupFieldConstraint(field, null);
                     		}	
@@ -3640,31 +3629,30 @@
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:337:4: ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:337:4: ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression )
                     {
                     match(input,VT_BIND_FIELD,FOLLOW_VT_BIND_FIELD_in_fact_expression1773); 
 
                     match(input, Token.DOWN, null); 
-                    label=(DroolsTree)input.LT(1);
-                    match(input,VT_LABEL,FOLLOW_VT_LABEL_in_fact_expression1777); 
+                    label=(DroolsTree)match(input,VT_LABEL,FOLLOW_VT_LABEL_in_fact_expression1777); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1781);
                     fe=fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
-                    	retval.descr = factory.createFieldBinding(label, fe.descr);	
+                    	retval.descr = factory.createFieldBinding(label, (fe!=null?fe.descr:null));	
 
                     }
                     break;
                 case 6 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:340:4: ^( VK_EVAL pc= VT_PAREN_CHUNK )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:340:4: ^( VK_EVAL pc= VT_PAREN_CHUNK )
                     {
                     match(input,VK_EVAL,FOLLOW_VK_EVAL_in_fact_expression1792); 
 
                     match(input, Token.DOWN, null); 
-                    pc=(DroolsTree)input.LT(1);
-                    match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_fact_expression1796); 
+                    pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_fact_expression1796); 
 
                     match(input, Token.UP, null); 
                     	retval.descr = factory.createPredicate(pc);	
@@ -3672,115 +3660,114 @@
                     }
                     break;
                 case 7 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:343:4: ^(op= EQUAL fe= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:343:4: ^(op= EQUAL fe= fact_expression )
                     {
-                    op=(DroolsTree)input.LT(1);
-                    match(input,EQUAL,FOLLOW_EQUAL_in_fact_expression1809); 
+                    op=(DroolsTree)match(input,EQUAL,FOLLOW_EQUAL_in_fact_expression1809); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1813);
                     fe=fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
-                    	retval.descr = factory.setupRestriction(op, null, fe.descr);	
+                    	retval.descr = factory.setupRestriction(op, null, (fe!=null?fe.descr:null));	
 
                     }
                     break;
                 case 8 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:345:4: ^(op= NOT_EQUAL fe= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:345:4: ^(op= NOT_EQUAL fe= fact_expression )
                     {
-                    op=(DroolsTree)input.LT(1);
-                    match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_fact_expression1825); 
+                    op=(DroolsTree)match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_fact_expression1825); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1829);
                     fe=fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
-                    	retval.descr = factory.setupRestriction(op, null, fe.descr);	
+                    	retval.descr = factory.setupRestriction(op, null, (fe!=null?fe.descr:null));	
 
                     }
                     break;
                 case 9 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:347:4: ^(op= GREATER fe= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:347:4: ^(op= GREATER fe= fact_expression )
                     {
-                    op=(DroolsTree)input.LT(1);
-                    match(input,GREATER,FOLLOW_GREATER_in_fact_expression1841); 
+                    op=(DroolsTree)match(input,GREATER,FOLLOW_GREATER_in_fact_expression1841); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1845);
                     fe=fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
-                    	retval.descr = factory.setupRestriction(op, null, fe.descr);	
+                    	retval.descr = factory.setupRestriction(op, null, (fe!=null?fe.descr:null));	
 
                     }
                     break;
                 case 10 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:349:4: ^(op= GREATER_EQUAL fe= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:349:4: ^(op= GREATER_EQUAL fe= fact_expression )
                     {
-                    op=(DroolsTree)input.LT(1);
-                    match(input,GREATER_EQUAL,FOLLOW_GREATER_EQUAL_in_fact_expression1857); 
+                    op=(DroolsTree)match(input,GREATER_EQUAL,FOLLOW_GREATER_EQUAL_in_fact_expression1857); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1861);
                     fe=fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
-                    	retval.descr = factory.setupRestriction(op, null, fe.descr);	
+                    	retval.descr = factory.setupRestriction(op, null, (fe!=null?fe.descr:null));	
 
                     }
                     break;
                 case 11 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:351:4: ^(op= LESS fe= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:351:4: ^(op= LESS fe= fact_expression )
                     {
-                    op=(DroolsTree)input.LT(1);
-                    match(input,LESS,FOLLOW_LESS_in_fact_expression1873); 
+                    op=(DroolsTree)match(input,LESS,FOLLOW_LESS_in_fact_expression1873); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1877);
                     fe=fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
-                    	retval.descr = factory.setupRestriction(op, null, fe.descr);	
+                    	retval.descr = factory.setupRestriction(op, null, (fe!=null?fe.descr:null));	
 
                     }
                     break;
                 case 12 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:353:4: ^(op= LESS_EQUAL fe= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:353:4: ^(op= LESS_EQUAL fe= fact_expression )
                     {
-                    op=(DroolsTree)input.LT(1);
-                    match(input,LESS_EQUAL,FOLLOW_LESS_EQUAL_in_fact_expression1889); 
+                    op=(DroolsTree)match(input,LESS_EQUAL,FOLLOW_LESS_EQUAL_in_fact_expression1889); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1893);
                     fe=fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
-                    	retval.descr = factory.setupRestriction(op, null, fe.descr);	
+                    	retval.descr = factory.setupRestriction(op, null, (fe!=null?fe.descr:null));	
 
                     }
                     break;
                 case 13 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:355:4: ^(op= VK_CONTAINS (not= VK_NOT )? fe= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:355:4: ^(op= VK_CONTAINS (not= VK_NOT )? fe= fact_expression )
                     {
-                    op=(DroolsTree)input.LT(1);
-                    match(input,VK_CONTAINS,FOLLOW_VK_CONTAINS_in_fact_expression1905); 
+                    op=(DroolsTree)match(input,VK_CONTAINS,FOLLOW_VK_CONTAINS_in_fact_expression1905); 
 
                     match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:355:24: (not= VK_NOT )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:355:24: (not= VK_NOT )?
                     int alt46=2;
                     int LA46_0 = input.LA(1);
 
@@ -3789,10 +3776,9 @@
                     }
                     switch (alt46) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:355:24: not= VK_NOT
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:355:24: not= VK_NOT
                             {
-                            not=(DroolsTree)input.LT(1);
-                            match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1909); 
+                            not=(DroolsTree)match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1909); 
 
                             }
                             break;
@@ -3801,22 +3787,22 @@
 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1914);
                     fe=fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
-                    	retval.descr = factory.setupRestriction(op, not, fe.descr);	
+                    	retval.descr = factory.setupRestriction(op, not, (fe!=null?fe.descr:null));	
 
                     }
                     break;
                 case 14 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:357:4: ^(op= VK_EXCLUDES (not= VK_NOT )? fe= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:357:4: ^(op= VK_EXCLUDES (not= VK_NOT )? fe= fact_expression )
                     {
-                    op=(DroolsTree)input.LT(1);
-                    match(input,VK_EXCLUDES,FOLLOW_VK_EXCLUDES_in_fact_expression1926); 
+                    op=(DroolsTree)match(input,VK_EXCLUDES,FOLLOW_VK_EXCLUDES_in_fact_expression1926); 
 
                     match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:357:24: (not= VK_NOT )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:357:24: (not= VK_NOT )?
                     int alt47=2;
                     int LA47_0 = input.LA(1);
 
@@ -3825,10 +3811,9 @@
                     }
                     switch (alt47) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:357:24: not= VK_NOT
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:357:24: not= VK_NOT
                             {
-                            not=(DroolsTree)input.LT(1);
-                            match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1930); 
+                            not=(DroolsTree)match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1930); 
 
                             }
                             break;
@@ -3837,22 +3822,22 @@
 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1935);
                     fe=fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
-                    	retval.descr = factory.setupRestriction(op, not, fe.descr);	
+                    	retval.descr = factory.setupRestriction(op, not, (fe!=null?fe.descr:null));	
 
                     }
                     break;
                 case 15 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:359:4: ^(op= VK_MATCHES (not= VK_NOT )? fe= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:359:4: ^(op= VK_MATCHES (not= VK_NOT )? fe= fact_expression )
                     {
-                    op=(DroolsTree)input.LT(1);
-                    match(input,VK_MATCHES,FOLLOW_VK_MATCHES_in_fact_expression1947); 
+                    op=(DroolsTree)match(input,VK_MATCHES,FOLLOW_VK_MATCHES_in_fact_expression1947); 
 
                     match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:359:23: (not= VK_NOT )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:359:23: (not= VK_NOT )?
                     int alt48=2;
                     int LA48_0 = input.LA(1);
 
@@ -3861,10 +3846,9 @@
                     }
                     switch (alt48) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:359:23: not= VK_NOT
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:359:23: not= VK_NOT
                             {
-                            not=(DroolsTree)input.LT(1);
-                            match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1951); 
+                            not=(DroolsTree)match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1951); 
 
                             }
                             break;
@@ -3873,22 +3857,22 @@
 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1956);
                     fe=fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
-                    	retval.descr = factory.setupRestriction(op, not, fe.descr);	
+                    	retval.descr = factory.setupRestriction(op, not, (fe!=null?fe.descr:null));	
 
                     }
                     break;
                 case 16 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:361:4: ^(op= VK_SOUNDSLIKE (not= VK_NOT )? fe= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:361:4: ^(op= VK_SOUNDSLIKE (not= VK_NOT )? fe= fact_expression )
                     {
-                    op=(DroolsTree)input.LT(1);
-                    match(input,VK_SOUNDSLIKE,FOLLOW_VK_SOUNDSLIKE_in_fact_expression1968); 
+                    op=(DroolsTree)match(input,VK_SOUNDSLIKE,FOLLOW_VK_SOUNDSLIKE_in_fact_expression1968); 
 
                     match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:361:26: (not= VK_NOT )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:361:26: (not= VK_NOT )?
                     int alt49=2;
                     int LA49_0 = input.LA(1);
 
@@ -3897,10 +3881,9 @@
                     }
                     switch (alt49) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:361:26: not= VK_NOT
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:361:26: not= VK_NOT
                             {
-                            not=(DroolsTree)input.LT(1);
-                            match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1972); 
+                            not=(DroolsTree)match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1972); 
 
                             }
                             break;
@@ -3909,22 +3892,22 @@
 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1977);
                     fe=fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
-                    	retval.descr = factory.setupRestriction(op, not, fe.descr);	
+                    	retval.descr = factory.setupRestriction(op, not, (fe!=null?fe.descr:null));	
 
                     }
                     break;
                 case 17 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:363:4: ^(op= VK_MEMBEROF (not= VK_NOT )? fe= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:363:4: ^(op= VK_MEMBEROF (not= VK_NOT )? fe= fact_expression )
                     {
-                    op=(DroolsTree)input.LT(1);
-                    match(input,VK_MEMBEROF,FOLLOW_VK_MEMBEROF_in_fact_expression1989); 
+                    op=(DroolsTree)match(input,VK_MEMBEROF,FOLLOW_VK_MEMBEROF_in_fact_expression1989); 
 
                     match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:363:24: (not= VK_NOT )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:363:24: (not= VK_NOT )?
                     int alt50=2;
                     int LA50_0 = input.LA(1);
 
@@ -3933,10 +3916,9 @@
                     }
                     switch (alt50) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:363:24: not= VK_NOT
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:363:24: not= VK_NOT
                             {
-                            not=(DroolsTree)input.LT(1);
-                            match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1993); 
+                            not=(DroolsTree)match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1993); 
 
                             }
                             break;
@@ -3945,22 +3927,22 @@
 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1998);
                     fe=fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
-                    	retval.descr = factory.setupRestriction(op, not, fe.descr);	
+                    	retval.descr = factory.setupRestriction(op, not, (fe!=null?fe.descr:null));	
 
                     }
                     break;
                 case 18 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:365:4: ^(op= VK_OPERATOR (not= VK_NOT )? (param= VT_SQUARE_CHUNK )? fe= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:365:4: ^(op= VK_OPERATOR (not= VK_NOT )? (param= VT_SQUARE_CHUNK )? fe= fact_expression )
                     {
-                    op=(DroolsTree)input.LT(1);
-                    match(input,VK_OPERATOR,FOLLOW_VK_OPERATOR_in_fact_expression2010); 
+                    op=(DroolsTree)match(input,VK_OPERATOR,FOLLOW_VK_OPERATOR_in_fact_expression2010); 
 
                     match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:365:24: (not= VK_NOT )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:365:24: (not= VK_NOT )?
                     int alt51=2;
                     int LA51_0 = input.LA(1);
 
@@ -3969,17 +3951,16 @@
                     }
                     switch (alt51) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:365:24: not= VK_NOT
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:365:24: not= VK_NOT
                             {
-                            not=(DroolsTree)input.LT(1);
-                            match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression2014); 
+                            not=(DroolsTree)match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression2014); 
 
                             }
                             break;
 
                     }
 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:365:38: (param= VT_SQUARE_CHUNK )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:365:38: (param= VT_SQUARE_CHUNK )?
                     int alt52=2;
                     int LA52_0 = input.LA(1);
 
@@ -3988,10 +3969,9 @@
                     }
                     switch (alt52) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:365:38: param= VT_SQUARE_CHUNK
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:365:38: param= VT_SQUARE_CHUNK
                             {
-                            param=(DroolsTree)input.LT(1);
-                            match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_fact_expression2019); 
+                            param=(DroolsTree)match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_fact_expression2019); 
 
                             }
                             break;
@@ -4000,21 +3980,22 @@
 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression2024);
                     fe=fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
-                    	retval.descr = factory.setupRestriction(op, not, fe.descr, param);	
+                    	retval.descr = factory.setupRestriction(op, not, (fe!=null?fe.descr:null), param);	
 
                     }
                     break;
                 case 19 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:368:4: ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:368:4: ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ )
                     {
                     match(input,VK_IN,FOLLOW_VK_IN_in_fact_expression2035); 
 
                     match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:368:15: (not= VK_NOT )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:368:15: (not= VK_NOT )?
                     int alt53=2;
                     int LA53_0 = input.LA(1);
 
@@ -4023,17 +4004,16 @@
                     }
                     switch (alt53) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:368:15: not= VK_NOT
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:368:15: not= VK_NOT
                             {
-                            not=(DroolsTree)input.LT(1);
-                            match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression2039); 
+                            not=(DroolsTree)match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression2039); 
 
                             }
                             break;
 
                     }
 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:368:24: (fe= fact_expression )+
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:368:24: (fe= fact_expression )+
                     int cnt54=0;
                     loop54:
                     do {
@@ -4047,14 +4027,15 @@
 
                         switch (alt54) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:368:25: fe= fact_expression
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:368:25: fe= fact_expression
                     	    {
                     	    pushFollow(FOLLOW_fact_expression_in_fact_expression2045);
                     	    fe=fact_expression();
-                    	    _fsp--;
 
-                    	    exprList.add(fe.descr);
+                    	    state._fsp--;
 
+                    	    exprList.add((fe!=null?fe.descr:null));
+
                     	    }
                     	    break;
 
@@ -4074,52 +4055,56 @@
                     }
                     break;
                 case 20 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:371:4: ^( DOUBLE_PIPE left= fact_expression right= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:371:4: ^( DOUBLE_PIPE left= fact_expression right= fact_expression )
                     {
                     match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_fact_expression2060); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression2064);
                     left=fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
+
                     pushFollow(FOLLOW_fact_expression_in_fact_expression2068);
                     right=fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
-                    	retval.descr = factory.createOrRestrictionConnective(left.descr, right.descr);	
+                    	retval.descr = factory.createOrRestrictionConnective((left!=null?left.descr:null), (right!=null?right.descr:null));	
 
                     }
                     break;
                 case 21 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:373:4: ^( DOUBLE_AMPER left= fact_expression right= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:373:4: ^( DOUBLE_AMPER left= fact_expression right= fact_expression )
                     {
                     match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_fact_expression2078); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression2082);
                     left=fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
+
                     pushFollow(FOLLOW_fact_expression_in_fact_expression2086);
                     right=fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
-                    	retval.descr = factory.createAndRestrictionConnective(left.descr, right.descr);	
+                    	retval.descr = factory.createAndRestrictionConnective((left!=null?left.descr:null), (right!=null?right.descr:null));	
 
                     }
                     break;
                 case 22 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:376:4: ^( VT_ACCESSOR_PATH (ae= accessor_element )+ )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:376:4: ^( VT_ACCESSOR_PATH (ae= accessor_element )+ )
                     {
                     match(input,VT_ACCESSOR_PATH,FOLLOW_VT_ACCESSOR_PATH_in_fact_expression2097); 
 
                     match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:376:23: (ae= accessor_element )+
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:376:23: (ae= accessor_element )+
                     int cnt55=0;
                     loop55:
                     do {
@@ -4133,12 +4118,13 @@
 
                         switch (alt55) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:376:24: ae= accessor_element
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:376:24: ae= accessor_element
                     	    {
                     	    pushFollow(FOLLOW_accessor_element_in_fact_expression2102);
                     	    ae=accessor_element();
-                    	    _fsp--;
 
+                    	    state._fsp--;
+
                     	    exprList.add(ae);
 
                     	    }
@@ -4160,55 +4146,49 @@
                     }
                     break;
                 case 23 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:378:4: s= STRING
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:378:4: s= STRING
                     {
-                    s=(DroolsTree)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_fact_expression2117); 
+                    s=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_fact_expression2117); 
                     	retval.descr = factory.createStringLiteralRestriction(s);	
 
                     }
                     break;
                 case 24 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:380:4: i= INT
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:380:4: i= INT
                     {
-                    i=(DroolsTree)input.LT(1);
-                    match(input,INT,FOLLOW_INT_in_fact_expression2127); 
+                    i=(DroolsTree)match(input,INT,FOLLOW_INT_in_fact_expression2127); 
                     	retval.descr = factory.createIntLiteralRestriction(i);	
 
                     }
                     break;
                 case 25 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:382:4: f= FLOAT
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:382:4: f= FLOAT
                     {
-                    f=(DroolsTree)input.LT(1);
-                    match(input,FLOAT,FOLLOW_FLOAT_in_fact_expression2137); 
+                    f=(DroolsTree)match(input,FLOAT,FOLLOW_FLOAT_in_fact_expression2137); 
                     	retval.descr = factory.createFloatLiteralRestriction(f);	
 
                     }
                     break;
                 case 26 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:384:4: b= BOOL
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:384:4: b= BOOL
                     {
-                    b=(DroolsTree)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_fact_expression2147); 
+                    b=(DroolsTree)match(input,BOOL,FOLLOW_BOOL_in_fact_expression2147); 
                     	retval.descr = factory.createBoolLiteralRestriction(b);	
 
                     }
                     break;
                 case 27 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:386:4: n= NULL
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:386:4: n= NULL
                     {
-                    n=(DroolsTree)input.LT(1);
-                    match(input,NULL,FOLLOW_NULL_in_fact_expression2157); 
+                    n=(DroolsTree)match(input,NULL,FOLLOW_NULL_in_fact_expression2157); 
                     	retval.descr = factory.createNullLiteralRestriction(n);	
 
                     }
                     break;
                 case 28 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:388:4: pc= VT_PAREN_CHUNK
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:388:4: pc= VT_PAREN_CHUNK
                     {
-                    pc=(DroolsTree)input.LT(1);
-                    match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_fact_expression2167); 
+                    pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_fact_expression2167); 
                     	retval.descr = factory.createReturnValue(pc);	
 
                     }
@@ -4224,28 +4204,28 @@
         }
         return retval;
     }
-    // $ANTLR end fact_expression
+    // $ANTLR end "fact_expression"
 
 
-    // $ANTLR start field_element
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:392:1: field_element returns [FieldConstraintDescr element] : ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) ;
+    // $ANTLR start "field_element"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:392:1: field_element returns [FieldConstraintDescr element] : ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) ;
     public final FieldConstraintDescr field_element() throws RecognitionException {
         FieldConstraintDescr element = null;
 
         BaseDescr ae = null;
 
 
-        
+
         	List<BaseDescr> aeList = new LinkedList<BaseDescr>();
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:395:3: ( ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:395:5: ^( VT_ACCESSOR_PATH (ae= accessor_element )+ )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:395:3: ( ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:395:5: ^( VT_ACCESSOR_PATH (ae= accessor_element )+ )
             {
             match(input,VT_ACCESSOR_PATH,FOLLOW_VT_ACCESSOR_PATH_in_field_element2189); 
 
             match(input, Token.DOWN, null); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:395:24: (ae= accessor_element )+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:395:24: (ae= accessor_element )+
             int cnt57=0;
             loop57:
             do {
@@ -4259,12 +4239,13 @@
 
                 switch (alt57) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:395:25: ae= accessor_element
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:395:25: ae= accessor_element
             	    {
             	    pushFollow(FOLLOW_accessor_element_in_field_element2194);
             	    ae=accessor_element();
-            	    _fsp--;
 
+            	    state._fsp--;
+
             	    aeList.add(ae);
 
             	    }
@@ -4294,11 +4275,11 @@
         }
         return element;
     }
-    // $ANTLR end field_element
+    // $ANTLR end "field_element"
 
 
-    // $ANTLR start accessor_element
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:399:1: accessor_element returns [BaseDescr element] : ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* ) ;
+    // $ANTLR start "accessor_element"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:399:1: accessor_element returns [BaseDescr element] : ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* ) ;
     public final BaseDescr accessor_element() throws RecognitionException {
         BaseDescr element = null;
 
@@ -4307,15 +4288,14 @@
         List list_sc=null;
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:400:2: ( ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:400:4: ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:2: ( ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:4: ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* )
             {
             match(input,VT_ACCESSOR_ELEMENT,FOLLOW_VT_ACCESSOR_ELEMENT_in_accessor_element2218); 
 
             match(input, Token.DOWN, null); 
-            id=(DroolsTree)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_accessor_element2222); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:400:34: (sc+= VT_SQUARE_CHUNK )*
+            id=(DroolsTree)match(input,ID,FOLLOW_ID_in_accessor_element2222); 
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:34: (sc+= VT_SQUARE_CHUNK )*
             loop58:
             do {
                 int alt58=2;
@@ -4328,10 +4308,9 @@
 
                 switch (alt58) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:400:34: sc+= VT_SQUARE_CHUNK
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:34: sc+= VT_SQUARE_CHUNK
             	    {
-            	    sc=(DroolsTree)input.LT(1);
-            	    match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_accessor_element2226); 
+            	    sc=(DroolsTree)match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_accessor_element2226); 
             	    if (list_sc==null) list_sc=new ArrayList();
             	    list_sc.add(sc);
 
@@ -4359,11 +4338,11 @@
         }
         return element;
     }
-    // $ANTLR end accessor_element
+    // $ANTLR end "accessor_element"
 
 
-    // $ANTLR start pattern_type
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:404:1: pattern_type returns [BaseDescr dataType] : ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) ;
+    // $ANTLR start "pattern_type"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:404:1: pattern_type returns [BaseDescr dataType] : ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) ;
     public final BaseDescr pattern_type() throws RecognitionException {
         BaseDescr dataType = null;
 
@@ -4373,13 +4352,13 @@
         List list_rightList=null;
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:405:2: ( ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:405:4: ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:405:2: ( ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:405:4: ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* )
             {
             match(input,VT_PATTERN_TYPE,FOLLOW_VT_PATTERN_TYPE_in_pattern_type2247); 
 
             match(input, Token.DOWN, null); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:405:28: (idList+= ID )+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:405:28: (idList+= ID )+
             int cnt59=0;
             loop59:
             do {
@@ -4393,10 +4372,9 @@
 
                 switch (alt59) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:405:28: idList+= ID
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:405:28: idList+= ID
             	    {
-            	    idList=(DroolsTree)input.LT(1);
-            	    match(input,ID,FOLLOW_ID_in_pattern_type2251); 
+            	    idList=(DroolsTree)match(input,ID,FOLLOW_ID_in_pattern_type2251); 
             	    if (list_idList==null) list_idList=new ArrayList();
             	    list_idList.add(idList);
 
@@ -4413,7 +4391,7 @@
                 cnt59++;
             } while (true);
 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:405:34: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:405:34: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
             loop60:
             do {
                 int alt60=2;
@@ -4426,11 +4404,10 @@
 
                 switch (alt60) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:405:35: LEFT_SQUARE rightList+= RIGHT_SQUARE
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:405:35: LEFT_SQUARE rightList+= RIGHT_SQUARE
             	    {
             	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_pattern_type2255); 
-            	    rightList=(DroolsTree)input.LT(1);
-            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_pattern_type2259); 
+            	    rightList=(DroolsTree)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_pattern_type2259); 
             	    if (list_rightList==null) list_rightList=new ArrayList();
             	    list_rightList.add(rightList);
 
@@ -4458,11 +4435,11 @@
         }
         return dataType;
     }
-    // $ANTLR end pattern_type
+    // $ANTLR end "pattern_type"
 
 
-    // $ANTLR start data_type
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:409:1: data_type returns [BaseDescr dataType] : ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) ;
+    // $ANTLR start "data_type"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:409:1: data_type returns [BaseDescr dataType] : ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) ;
     public final BaseDescr data_type() throws RecognitionException {
         BaseDescr dataType = null;
 
@@ -4472,13 +4449,13 @@
         List list_rightList=null;
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:410:2: ( ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:410:4: ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:410:2: ( ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:410:4: ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* )
             {
             match(input,VT_DATA_TYPE,FOLLOW_VT_DATA_TYPE_in_data_type2281); 
 
             match(input, Token.DOWN, null); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:410:25: (idList+= ID )+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:410:25: (idList+= ID )+
             int cnt61=0;
             loop61:
             do {
@@ -4492,10 +4469,9 @@
 
                 switch (alt61) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:410:25: idList+= ID
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:410:25: idList+= ID
             	    {
-            	    idList=(DroolsTree)input.LT(1);
-            	    match(input,ID,FOLLOW_ID_in_data_type2285); 
+            	    idList=(DroolsTree)match(input,ID,FOLLOW_ID_in_data_type2285); 
             	    if (list_idList==null) list_idList=new ArrayList();
             	    list_idList.add(idList);
 
@@ -4512,7 +4488,7 @@
                 cnt61++;
             } while (true);
 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:410:31: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:410:31: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
             loop62:
             do {
                 int alt62=2;
@@ -4525,11 +4501,10 @@
 
                 switch (alt62) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:410:32: LEFT_SQUARE rightList+= RIGHT_SQUARE
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:410:32: LEFT_SQUARE rightList+= RIGHT_SQUARE
             	    {
             	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_data_type2289); 
-            	    rightList=(DroolsTree)input.LT(1);
-            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_data_type2293); 
+            	    rightList=(DroolsTree)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_data_type2293); 
             	    if (list_rightList==null) list_rightList=new ArrayList();
             	    list_rightList.add(rightList);
 
@@ -4557,9 +4532,11 @@
         }
         return dataType;
     }
-    // $ANTLR end data_type
+    // $ANTLR end "data_type"
 
+    // Delegated rules
 
+
  
 
     public static final BitSet FOLLOW_VT_COMPILATION_UNIT_in_compilation_unit49 = new BitSet(new long[]{0x0000000000000004L});
@@ -4603,7 +4580,7 @@
     public static final BitSet FOLLOW_VT_SLOT_ID_in_template_slot430 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_QUERY_in_query452 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_QUERY_ID_in_query456 = new BitSet(new long[]{0x0000100000400000L});
-    public static final BitSet FOLLOW_parameters_in_query460 = new BitSet(new long[]{0x0000000000400000L});
+    public static final BitSet FOLLOW_parameters_in_query460 = new BitSet(new long[]{0x0000100000400000L});
     public static final BitSet FOLLOW_lhs_block_in_query465 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
     public static final BitSet FOLLOW_END_in_query469 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_RULE_in_rule496 = new BitSet(new long[]{0x0000000000000004L});
@@ -4614,14 +4591,14 @@
     public static final BitSet FOLLOW_rule_attributes_in_rule530 = new BitSet(new long[]{0x0000000000020000L,0x0000000100000000L});
     public static final BitSet FOLLOW_when_part_in_rule539 = new BitSet(new long[]{0x0000000000020000L});
     public static final BitSet FOLLOW_VT_RHS_CHUNK_in_rule544 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_WHEN_in_when_part563 = new BitSet(new long[]{0x0000000000400000L});
+    public static final BitSet FOLLOW_WHEN_in_when_part563 = new BitSet(new long[]{0x0000100000400000L});
     public static final BitSet FOLLOW_lhs_block_in_when_part567 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_VT_RULE_ATTRIBUTES_in_rule_attributes589 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VK_ATTRIBUTES_in_rule_attributes591 = new BitSet(new long[]{0x01FFE00000000000L});
     public static final BitSet FOLLOW_rule_attribute_in_rule_attributes597 = new BitSet(new long[]{0x01FFE00000000008L});
     public static final BitSet FOLLOW_VT_PARAM_LIST_in_parameters621 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_param_definition_in_parameters626 = new BitSet(new long[]{0x0000004000000008L,0x0000000000200000L});
-    public static final BitSet FOLLOW_data_type_in_param_definition648 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_data_type_in_param_definition648 = new BitSet(new long[]{0x0000004000000008L,0x0000000000200000L});
     public static final BitSet FOLLOW_argument_in_param_definition653 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_ID_in_argument673 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
     public static final BitSet FOLLOW_LEFT_SQUARE_in_argument676 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
@@ -4671,12 +4648,12 @@
     public static final BitSet FOLLOW_VT_OR_PREFIX_in_lhs1098 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_lhs_in_lhs1103 = new BitSet(new long[]{0x0000000087800008L,0x000000200000C408L});
     public static final BitSet FOLLOW_VT_OR_INFIX_in_lhs1119 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1123 = new BitSet(new long[]{0x0000000087800000L,0x000000200000C408L});
+    public static final BitSet FOLLOW_lhs_in_lhs1123 = new BitSet(new long[]{0x0000000087800008L,0x000000200000C408L});
     public static final BitSet FOLLOW_lhs_in_lhs1127 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_AND_PREFIX_in_lhs1139 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_lhs_in_lhs1144 = new BitSet(new long[]{0x0000000087800008L,0x000000200000C408L});
     public static final BitSet FOLLOW_VT_AND_INFIX_in_lhs1160 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1164 = new BitSet(new long[]{0x0000000087800000L,0x000000200000C408L});
+    public static final BitSet FOLLOW_lhs_in_lhs1164 = new BitSet(new long[]{0x0000000087800008L,0x000000200000C408L});
     public static final BitSet FOLLOW_lhs_in_lhs1168 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_EXISTS_in_lhs1180 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_lhs_in_lhs1184 = new BitSet(new long[]{0x0000000000000008L});
@@ -4810,4 +4787,4 @@
     public static final BitSet FOLLOW_LEFT_SQUARE_in_data_type2289 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
     public static final BitSet FOLLOW_RIGHT_SQUARE_in_data_type2293 = new BitSet(new long[]{0x0000000000000008L,0x0008000000000000L});
 
-}
+}
\ No newline at end of file

Modified: labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapLexer.java
===================================================================
--- labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapLexer.java	2008-11-13 00:09:49 UTC (rev 23848)
+++ labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapLexer.java	2008-11-13 03:06:09 UTC (rev 23849)
@@ -1,1087 +1,853 @@
-// $ANTLR 3.0 src/main/resources/org/drools/lang/dsl/DSLMap.g 2008-10-22 23:57:51
+// $ANTLR 3.1.1 /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g 2008-11-13 00:53:52
 
 	package org.drools.lang.dsl;
-	import java.util.HashMap;
-
-import org.antlr.runtime.CharStream;
-import org.antlr.runtime.EarlyExitException;
-import org.antlr.runtime.Lexer;
-import org.antlr.runtime.MismatchedSetException;
-import org.antlr.runtime.NoViableAltException;
-import org.antlr.runtime.RecognitionException;
-public class DSLMapLexer extends Lexer {
-    public static final int COMMA=27;
-    public static final int RIGHT_CURLY=30;
-    public static final int VT_ENTRY_VAL=14;
-    public static final int WS=31;
-    public static final int MISC=35;
-    public static final int VT_META=12;
-    public static final int VT_CONSEQUENCE=9;
-    public static final int VT_SPACE=20;
-    public static final int LINE_COMMENT=22;
-    public static final int VT_ANY=11;
-    public static final int VT_LITERAL=17;
-    public static final int DOT=33;
-    public static final int EQUALS=23;
-    public static final int VT_DSL_GRAMMAR=4;
-    public static final int VT_CONDITION=8;
-    public static final int VT_VAR_DEF=15;
-    public static final int VT_ENTRY=6;
-    public static final int VT_PATTERN=18;
-    public static final int LITERAL=26;
-    public static final int EscapeSequence=32;
-    public static final int VT_COMMENT=5;
-    public static final int EOF=-1;
-    public static final int EOL=21;
-    public static final int LEFT_SQUARE=24;
-    public static final int Tokens=36;
-    public static final int VT_ENTRY_KEY=13;
-    public static final int VT_SCOPE=7;
-    public static final int COLON=28;
-    public static final int VT_KEYWORD=10;
-    public static final int VT_QUAL=19;
-    public static final int VT_VAR_REF=16;
-    public static final int LEFT_CURLY=29;
-    public static final int POUND=34;
-    public static final int RIGHT_SQUARE=25;
-    public DSLMapLexer() {;} 
-    public DSLMapLexer(CharStream input) {
-        super(input);
-        ruleMemo = new HashMap[17+1];
-     }
-    public String getGrammarFileName() { return "src/main/resources/org/drools/lang/dsl/DSLMap.g"; }
-
-    // $ANTLR start WS
-    public final void mWS() throws RecognitionException {
-        try {
-            int _type = WS;
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:269:17: ( ( ' ' | '\\t' | '\\f' )+ )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:269:17: ( ' ' | '\\t' | '\\f' )+
-            {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:269:17: ( ' ' | '\\t' | '\\f' )+
-            int cnt1=0;
-            loop1:
-            do {
-                int alt1=2;
-                int LA1_0 = input.LA(1);
-
-                if ( (LA1_0=='\t'||LA1_0=='\f'||LA1_0==' ') ) {
-                    alt1=1;
-                }
-
-
-                switch (alt1) {
-            	case 1 :
-            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:
-            	    {
-            	    if ( input.LA(1)=='\t'||input.LA(1)=='\f'||input.LA(1)==' ' ) {
-            	        input.consume();
-            	    failed=false;
-            	    }
-            	    else {
-            	        if (backtracking>0) {failed=true; return ;}
-            	        MismatchedSetException mse =
-            	            new MismatchedSetException(null,input);
-            	        recover(mse);    throw mse;
-            	    }
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt1 >= 1 ) break loop1;
-            	    if (backtracking>0) {failed=true; return ;}
-                        EarlyExitException eee =
-                            new EarlyExitException(1, input);
-                        throw eee;
-                }
-                cnt1++;
-            } while (true);
-
-            if ( backtracking==0 ) {
-               channel=HIDDEN;
-            }
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end WS
-
-    // $ANTLR start EOL
-    public final void mEOL() throws RecognitionException {
-        try {
-            int _type = EOL;
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:277:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:277:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
-            {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:277:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
-            int alt2=3;
-            int LA2_0 = input.LA(1);
-
-            if ( (LA2_0=='\r') ) {
-                int LA2_1 = input.LA(2);
-
-                if ( (LA2_1=='\n') && (synpred1())) {
-                    alt2=1;
-                }
-                else {
-                    alt2=2;}
-            }
-            else if ( (LA2_0=='\n') ) {
-                alt2=3;
-            }
-            else {
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("277:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )", 2, 0, input);
-
-                throw nvae;
-            }
-            switch (alt2) {
-                case 1 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:277:14: ( '\\r\\n' )=> '\\r\\n'
-                    {
-                    match("\r\n"); if (failed) return ;
-
-
-                    }
-                    break;
-                case 2 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:278:25: '\\r'
-                    {
-                    match('\r'); if (failed) return ;
-
-                    }
-                    break;
-                case 3 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:279:25: '\\n'
-                    {
-                    match('\n'); if (failed) return ;
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end EOL
-
-    // $ANTLR start EscapeSequence
-    public final void mEscapeSequence() throws RecognitionException {
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:285:9: ( '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' | '=' | 'u' | '0' | '#' ) )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:285:9: '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' | '=' | 'u' | '0' | '#' )
-            {
-            match('\\'); if (failed) return ;
-            if ( (input.LA(1)>='\"' && input.LA(1)<='$')||(input.LA(1)>='&' && input.LA(1)<='+')||(input.LA(1)>='-' && input.LA(1)<='.')||input.LA(1)=='0'||input.LA(1)=='='||input.LA(1)=='?'||(input.LA(1)>='A' && input.LA(1)<='B')||(input.LA(1)>='D' && input.LA(1)<='E')||input.LA(1)=='G'||input.LA(1)=='Q'||input.LA(1)=='S'||input.LA(1)=='W'||(input.LA(1)>='Z' && input.LA(1)<='^')||(input.LA(1)>='a' && input.LA(1)<='f')||(input.LA(1)>='n' && input.LA(1)<='p')||(input.LA(1)>='r' && input.LA(1)<='u')||(input.LA(1)>='w' && input.LA(1)<='x')||(input.LA(1)>='z' && input.LA(1)<='}') ) {
-                input.consume();
-            failed=false;
-            }
-            else {
-                if (backtracking>0) {failed=true; return ;}
-                MismatchedSetException mse =
-                    new MismatchedSetException(null,input);
-                recover(mse);    throw mse;
-            }
-
-
-            }
-
-        }
-        finally {
-        }
-    }
-    // $ANTLR end EscapeSequence
-
-    // $ANTLR start LEFT_SQUARE
-    public final void mLEFT_SQUARE() throws RecognitionException {
-        try {
-            int _type = LEFT_SQUARE;
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:292:11: ( '[' )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:292:11: '['
-            {
-            match('['); if (failed) return ;
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end LEFT_SQUARE
-
-    // $ANTLR start RIGHT_SQUARE
-    public final void mRIGHT_SQUARE() throws RecognitionException {
-        try {
-            int _type = RIGHT_SQUARE;
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:296:11: ( ']' )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:296:11: ']'
-            {
-            match(']'); if (failed) return ;
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end RIGHT_SQUARE
-
-    // $ANTLR start LEFT_CURLY
-    public final void mLEFT_CURLY() throws RecognitionException {
-        try {
-            int _type = LEFT_CURLY;
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:300:11: ( '{' )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:300:11: '{'
-            {
-            match('{'); if (failed) return ;
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end LEFT_CURLY
-
-    // $ANTLR start RIGHT_CURLY
-    public final void mRIGHT_CURLY() throws RecognitionException {
-        try {
-            int _type = RIGHT_CURLY;
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:304:11: ( '}' )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:304:11: '}'
-            {
-            match('}'); if (failed) return ;
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end RIGHT_CURLY
-
-    // $ANTLR start EQUALS
-    public final void mEQUALS() throws RecognitionException {
-        try {
-            int _type = EQUALS;
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:307:10: ( '=' )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:307:10: '='
-            {
-            match('='); if (failed) return ;
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end EQUALS
-
-    // $ANTLR start DOT
-    public final void mDOT() throws RecognitionException {
-        try {
-            int _type = DOT;
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:310:7: ( '.' )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:310:7: '.'
-            {
-            match('.'); if (failed) return ;
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end DOT
-
-    // $ANTLR start POUND
-    public final void mPOUND() throws RecognitionException {
-        try {
-            int _type = POUND;
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:313:11: ( '#' )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:313:11: '#'
-            {
-            match('#'); if (failed) return ;
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end POUND
-
-    // $ANTLR start COLON
-    public final void mCOLON() throws RecognitionException {
-        try {
-            int _type = COLON;
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:316:9: ( ':' )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:316:9: ':'
-            {
-            match(':'); if (failed) return ;
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end COLON
-
-    // $ANTLR start COMMA
-    public final void mCOMMA() throws RecognitionException {
-        try {
-            int _type = COMMA;
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:319:9: ( ',' )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:319:9: ','
-            {
-            match(','); if (failed) return ;
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end COMMA
-
-    // $ANTLR start LINE_COMMENT
-    public final void mLINE_COMMENT() throws RecognitionException {
-        try {
-            int _type = LINE_COMMENT;
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:327:4: ( POUND ( options {greedy=false; } : . )* EOL )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:327:4: POUND ( options {greedy=false; } : . )* EOL
-            {
-            mPOUND(); if (failed) return ;
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:327:10: ( options {greedy=false; } : . )*
-            loop3:
-            do {
-                int alt3=2;
-                int LA3_0 = input.LA(1);
-
-                if ( (LA3_0=='\r') ) {
-                    alt3=2;
-                }
-                else if ( (LA3_0=='\n') ) {
-                    alt3=2;
-                }
-                else if ( ((LA3_0>='\u0000' && LA3_0<='\t')||(LA3_0>='\u000B' && LA3_0<='\f')||(LA3_0>='\u000E' && LA3_0<='\uFFFE')) ) {
-                    alt3=1;
-                }
-
-
-                switch (alt3) {
-            	case 1 :
-            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:327:37: .
-            	    {
-            	    matchAny(); if (failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop3;
-                }
-            } while (true);
-
-            mEOL(); if (failed) return ;
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end LINE_COMMENT
-
-    // $ANTLR start LITERAL
-    public final void mLITERAL() throws RecognitionException {
-        try {
-            int _type = LITERAL;
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:335:4: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' | MISC | EscapeSequence | DOT )+ )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:335:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' | MISC | EscapeSequence | DOT )+
-            {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:335:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' | MISC | EscapeSequence | DOT )+
-            int cnt4=0;
-            loop4:
-            do {
-                int alt4=9;
-                switch ( input.LA(1) ) {
-                case 'a':
-                case 'b':
-                case 'c':
-                case 'd':
-                case 'e':
-                case 'f':
-                case 'g':
-                case 'h':
-                case 'i':
-                case 'j':
-                case 'k':
-                case 'l':
-                case 'm':
-                case 'n':
-                case 'o':
-                case 'p':
-                case 'q':
-                case 'r':
-                case 's':
-                case 't':
-                case 'u':
-                case 'v':
-                case 'w':
-                case 'x':
-                case 'y':
-                case 'z':
-                    {
-                    alt4=1;
-                    }
-                    break;
-                case 'A':
-                case 'B':
-                case 'C':
-                case 'D':
-                case 'E':
-                case 'F':
-                case 'G':
-                case 'H':
-                case 'I':
-                case 'J':
-                case 'K':
-                case 'L':
-                case 'M':
-                case 'N':
-                case 'O':
-                case 'P':
-                case 'Q':
-                case 'R':
-                case 'S':
-                case 'T':
-                case 'U':
-                case 'V':
-                case 'W':
-                case 'X':
-                case 'Y':
-                case 'Z':
-                    {
-                    alt4=2;
-                    }
-                    break;
-                case '_':
-                    {
-                    alt4=3;
-                    }
-                    break;
-                case '0':
-                case '1':
-                case '2':
-                case '3':
-                case '4':
-                case '5':
-                case '6':
-                case '7':
-                case '8':
-                case '9':
-                    {
-                    alt4=4;
-                    }
-                    break;
-                case '\u00C0':
-                case '\u00C1':
-                case '\u00C2':
-                case '\u00C3':
-                case '\u00C4':
-                case '\u00C5':
-                case '\u00C6':
-                case '\u00C7':
-                case '\u00C8':
-                case '\u00C9':
-                case '\u00CA':
-                case '\u00CB':
-                case '\u00CC':
-                case '\u00CD':
-                case '\u00CE':
-                case '\u00CF':
-                case '\u00D0':
-                case '\u00D1':
-                case '\u00D2':
-                case '\u00D3':
-                case '\u00D4':
-                case '\u00D5':
-                case '\u00D6':
-                case '\u00D7':
-                case '\u00D8':
-                case '\u00D9':
-                case '\u00DA':
-                case '\u00DB':
-                case '\u00DC':
-                case '\u00DD':
-                case '\u00DE':
-                case '\u00DF':
-                case '\u00E0':
-                case '\u00E1':
-                case '\u00E2':
-                case '\u00E3':
-                case '\u00E4':
-                case '\u00E5':
-                case '\u00E6':
-                case '\u00E7':
-                case '\u00E8':
-                case '\u00E9':
-                case '\u00EA':
-                case '\u00EB':
-                case '\u00EC':
-                case '\u00ED':
-                case '\u00EE':
-                case '\u00EF':
-                case '\u00F0':
-                case '\u00F1':
-                case '\u00F2':
-                case '\u00F3':
-                case '\u00F4':
-                case '\u00F5':
-                case '\u00F6':
-                case '\u00F7':
-                case '\u00F8':
-                case '\u00F9':
-                case '\u00FA':
-                case '\u00FB':
-                case '\u00FC':
-                case '\u00FD':
-                case '\u00FE':
-                case '\u00FF':
-                    {
-                    alt4=5;
-                    }
-                    break;
-                case '!':
-                case '\"':
-                case '$':
-                case '%':
-                case '&':
-                case '\'':
-                case '(':
-                case ')':
-                case '*':
-                case '+':
-                case ',':
-                case '-':
-                case '/':
-                case ';':
-                case '<':
-                case '>':
-                case '?':
-                case '@':
-                case '^':
-                case '|':
-                    {
-                    alt4=6;
-                    }
-                    break;
-                case '\\':
-                    {
-                    alt4=7;
-                    }
-                    break;
-                case '.':
-                    {
-                    alt4=8;
-                    }
-                    break;
-
-                }
-
-                switch (alt4) {
-            	case 1 :
-            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:335:5: 'a' .. 'z'
-            	    {
-            	    matchRange('a','z'); if (failed) return ;
-
-            	    }
-            	    break;
-            	case 2 :
-            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:335:14: 'A' .. 'Z'
-            	    {
-            	    matchRange('A','Z'); if (failed) return ;
-
-            	    }
-            	    break;
-            	case 3 :
-            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:335:23: '_'
-            	    {
-            	    match('_'); if (failed) return ;
-
-            	    }
-            	    break;
-            	case 4 :
-            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:335:27: '0' .. '9'
-            	    {
-            	    matchRange('0','9'); if (failed) return ;
-
-            	    }
-            	    break;
-            	case 5 :
-            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:335:36: '\\u00c0' .. '\\u00ff'
-            	    {
-            	    matchRange('\u00C0','\u00FF'); if (failed) return ;
-
-            	    }
-            	    break;
-            	case 6 :
-            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:335:55: MISC
-            	    {
-            	    mMISC(); if (failed) return ;
-
-            	    }
-            	    break;
-            	case 7 :
-            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:335:60: EscapeSequence
-            	    {
-            	    mEscapeSequence(); if (failed) return ;
-
-            	    }
-            	    break;
-            	case 8 :
-            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:335:75: DOT
-            	    {
-            	    mDOT(); if (failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt4 >= 1 ) break loop4;
-            	    if (backtracking>0) {failed=true; return ;}
-                        EarlyExitException eee =
-                            new EarlyExitException(4, input);
-                        throw eee;
-                }
-                cnt4++;
-            } while (true);
-
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end LITERAL
-
-    // $ANTLR start MISC
-    public final void mMISC() throws RecognitionException {
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:340:3: ( '>' | '<' | '!' | '@' | '$' | '%' | '^' | '*' | '-' | '+' | '?' | COMMA | '/' | '\\'' | '\"' | '|' | '&' | '(' | ')' | ';' )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.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.consume();
-            failed=false;
-            }
-            else {
-                if (backtracking>0) {failed=true; return ;}
-                MismatchedSetException mse =
-                    new MismatchedSetException(null,input);
-                recover(mse);    throw mse;
-            }
-
-
-            }
-
-        }
-        finally {
-        }
-    }
-    // $ANTLR end MISC
-
-    public void mTokens() throws RecognitionException {
-        // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:10: ( WS | EOL | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | EQUALS | DOT | POUND | COLON | COMMA | LINE_COMMENT | LITERAL )
-        int alt5=13;
-        switch ( input.LA(1) ) {
-        case '\t':
-        case '\f':
-        case ' ':
-            {
-            alt5=1;
-            }
-            break;
-        case '\n':
-        case '\r':
-            {
-            alt5=2;
-            }
-            break;
-        case '[':
-            {
-            alt5=3;
-            }
-            break;
-        case ']':
-            {
-            alt5=4;
-            }
-            break;
-        case '{':
-            {
-            alt5=5;
-            }
-            break;
-        case '}':
-            {
-            alt5=6;
-            }
-            break;
-        case '=':
-            {
-            alt5=7;
-            }
-            break;
-        case '.':
-            {
-            int LA5_8 = input.LA(2);
-
-            if ( ((LA5_8>='!' && LA5_8<='\"')||(LA5_8>='$' && LA5_8<='9')||(LA5_8>=';' && LA5_8<='<')||(LA5_8>='>' && LA5_8<='Z')||LA5_8=='\\'||(LA5_8>='^' && LA5_8<='_')||(LA5_8>='a' && LA5_8<='z')||LA5_8=='|'||(LA5_8>='\u00C0' && LA5_8<='\u00FF')) ) {
-                alt5=13;
-            }
-            else {
-                alt5=8;}
-            }
-            break;
-        case '#':
-            {
-            int LA5_9 = input.LA(2);
-
-            if ( ((LA5_9>='\u0000' && LA5_9<='\uFFFE')) ) {
-                alt5=12;
-            }
-            else {
-                alt5=9;}
-            }
-            break;
-        case ':':
-            {
-            alt5=10;
-            }
-            break;
-        case ',':
-            {
-            int LA5_11 = input.LA(2);
-
-            if ( ((LA5_11>='!' && LA5_11<='\"')||(LA5_11>='$' && LA5_11<='9')||(LA5_11>=';' && LA5_11<='<')||(LA5_11>='>' && LA5_11<='Z')||LA5_11=='\\'||(LA5_11>='^' && LA5_11<='_')||(LA5_11>='a' && LA5_11<='z')||LA5_11=='|'||(LA5_11>='\u00C0' && LA5_11<='\u00FF')) ) {
-                alt5=13;
-            }
-            else {
-                alt5=11;}
-            }
-            break;
-        case '!':
-        case '\"':
-        case '$':
-        case '%':
-        case '&':
-        case '\'':
-        case '(':
-        case ')':
-        case '*':
-        case '+':
-        case '-':
-        case '/':
-        case '0':
-        case '1':
-        case '2':
-        case '3':
-        case '4':
-        case '5':
-        case '6':
-        case '7':
-        case '8':
-        case '9':
-        case ';':
-        case '<':
-        case '>':
-        case '?':
-        case '@':
-        case 'A':
-        case 'B':
-        case 'C':
-        case 'D':
-        case 'E':
-        case 'F':
-        case 'G':
-        case 'H':
-        case 'I':
-        case 'J':
-        case 'K':
-        case 'L':
-        case 'M':
-        case 'N':
-        case 'O':
-        case 'P':
-        case 'Q':
-        case 'R':
-        case 'S':
-        case 'T':
-        case 'U':
-        case 'V':
-        case 'W':
-        case 'X':
-        case 'Y':
-        case 'Z':
-        case '\\':
-        case '^':
-        case '_':
-        case 'a':
-        case 'b':
-        case 'c':
-        case 'd':
-        case 'e':
-        case 'f':
-        case 'g':
-        case 'h':
-        case 'i':
-        case 'j':
-        case 'k':
-        case 'l':
-        case 'm':
-        case 'n':
-        case 'o':
-        case 'p':
-        case 'q':
-        case 'r':
-        case 's':
-        case 't':
-        case 'u':
-        case 'v':
-        case 'w':
-        case 'x':
-        case 'y':
-        case 'z':
-        case '|':
-        case '\u00C0':
-        case '\u00C1':
-        case '\u00C2':
-        case '\u00C3':
-        case '\u00C4':
-        case '\u00C5':
-        case '\u00C6':
-        case '\u00C7':
-        case '\u00C8':
-        case '\u00C9':
-        case '\u00CA':
-        case '\u00CB':
-        case '\u00CC':
-        case '\u00CD':
-        case '\u00CE':
-        case '\u00CF':
-        case '\u00D0':
-        case '\u00D1':
-        case '\u00D2':
-        case '\u00D3':
-        case '\u00D4':
-        case '\u00D5':
-        case '\u00D6':
-        case '\u00D7':
-        case '\u00D8':
-        case '\u00D9':
-        case '\u00DA':
-        case '\u00DB':
-        case '\u00DC':
-        case '\u00DD':
-        case '\u00DE':
-        case '\u00DF':
-        case '\u00E0':
-        case '\u00E1':
-        case '\u00E2':
-        case '\u00E3':
-        case '\u00E4':
-        case '\u00E5':
-        case '\u00E6':
-        case '\u00E7':
-        case '\u00E8':
-        case '\u00E9':
-        case '\u00EA':
-        case '\u00EB':
-        case '\u00EC':
-        case '\u00ED':
-        case '\u00EE':
-        case '\u00EF':
-        case '\u00F0':
-        case '\u00F1':
-        case '\u00F2':
-        case '\u00F3':
-        case '\u00F4':
-        case '\u00F5':
-        case '\u00F6':
-        case '\u00F7':
-        case '\u00F8':
-        case '\u00F9':
-        case '\u00FA':
-        case '\u00FB':
-        case '\u00FC':
-        case '\u00FD':
-        case '\u00FE':
-        case '\u00FF':
-            {
-            alt5=13;
-            }
-            break;
-        default:
-            if (backtracking>0) {failed=true; return ;}
-            NoViableAltException nvae =
-                new NoViableAltException("1:1: Tokens : ( WS | EOL | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | EQUALS | DOT | POUND | COLON | COMMA | LINE_COMMENT | LITERAL );", 5, 0, input);
-
-            throw nvae;
-        }
-
-        switch (alt5) {
-            case 1 :
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:10: WS
-                {
-                mWS(); if (failed) return ;
-
-                }
-                break;
-            case 2 :
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:13: EOL
-                {
-                mEOL(); if (failed) return ;
-
-                }
-                break;
-            case 3 :
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:17: LEFT_SQUARE
-                {
-                mLEFT_SQUARE(); if (failed) return ;
-
-                }
-                break;
-            case 4 :
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:29: RIGHT_SQUARE
-                {
-                mRIGHT_SQUARE(); if (failed) return ;
-
-                }
-                break;
-            case 5 :
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:42: LEFT_CURLY
-                {
-                mLEFT_CURLY(); if (failed) return ;
-
-                }
-                break;
-            case 6 :
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:53: RIGHT_CURLY
-                {
-                mRIGHT_CURLY(); if (failed) return ;
-
-                }
-                break;
-            case 7 :
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:65: EQUALS
-                {
-                mEQUALS(); if (failed) return ;
-
-                }
-                break;
-            case 8 :
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:72: DOT
-                {
-                mDOT(); if (failed) return ;
-
-                }
-                break;
-            case 9 :
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:76: POUND
-                {
-                mPOUND(); if (failed) return ;
-
-                }
-                break;
-            case 10 :
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:82: COLON
-                {
-                mCOLON(); if (failed) return ;
-
-                }
-                break;
-            case 11 :
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:88: COMMA
-                {
-                mCOMMA(); if (failed) return ;
-
-                }
-                break;
-            case 12 :
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:94: LINE_COMMENT
-                {
-                mLINE_COMMENT(); if (failed) return ;
-
-                }
-                break;
-            case 13 :
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:107: LITERAL
-                {
-                mLITERAL(); if (failed) return ;
-
-                }
-                break;
-
-        }
-
-    }
-
-    // $ANTLR start synpred1
-    public final void synpred1_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/dsl/DSLMap.g:277:14: ( '\\r\\n' )
-        // src/main/resources/org/drools/lang/dsl/DSLMap.g:277:16: '\\r\\n'
-        {
-        match("\r\n"); if (failed) return ;
-
-
-        }
-    }
-    // $ANTLR end synpred1
-
-    public final boolean synpred1() {
-        backtracking++;
-        int start = input.mark();
-        try {
-            synpred1_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !failed;
-        input.rewind(start);
-        backtracking--;
-        failed=false;
-        return success;
-    }
-
-
- 
-
+	import java.util.List;
+	import java.util.ArrayList;
+//	import org.drools.lang.dsl.DSLMappingParseException;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+public class DSLMapLexer extends Lexer {
+    public static final int COMMA=27;
+    public static final int RIGHT_CURLY=30;
+    public static final int VT_ENTRY_VAL=14;
+    public static final int WS=31;
+    public static final int MISC=35;
+    public static final int VT_META=12;
+    public static final int VT_CONSEQUENCE=9;
+    public static final int VT_SPACE=20;
+    public static final int LINE_COMMENT=22;
+    public static final int VT_ANY=11;
+    public static final int VT_LITERAL=17;
+    public static final int DOT=33;
+    public static final int EQUALS=23;
+    public static final int VT_DSL_GRAMMAR=4;
+    public static final int VT_CONDITION=8;
+    public static final int VT_VAR_DEF=15;
+    public static final int VT_ENTRY=6;
+    public static final int VT_PATTERN=18;
+    public static final int LITERAL=26;
+    public static final int EscapeSequence=32;
+    public static final int VT_COMMENT=5;
+    public static final int EOF=-1;
+    public static final int EOL=21;
+    public static final int LEFT_SQUARE=24;
+    public static final int VT_ENTRY_KEY=13;
+    public static final int VT_SCOPE=7;
+    public static final int COLON=28;
+    public static final int VT_KEYWORD=10;
+    public static final int VT_QUAL=19;
+    public static final int VT_VAR_REF=16;
+    public static final int LEFT_CURLY=29;
+    public static final int POUND=34;
+    public static final int RIGHT_SQUARE=25;
+
+    // delegates
+    // delegators
+
+    public DSLMapLexer() {;} 
+    public DSLMapLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public DSLMapLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "/Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g"; }
+
+    // $ANTLR start "WS"
+    public final void mWS() throws RecognitionException {
+        try {
+            int _type = WS;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:269:9: ( ( ' ' | '\\t' | '\\f' )+ )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:269:17: ( ' ' | '\\t' | '\\f' )+
+            {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:269:17: ( ' ' | '\\t' | '\\f' )+
+            int cnt1=0;
+            loop1:
+            do {
+                int alt1=2;
+                int LA1_0 = input.LA(1);
+
+                if ( (LA1_0=='\t'||LA1_0=='\f'||LA1_0==' ') ) {
+                    alt1=1;
+                }
+
+
+                switch (alt1) {
+            	case 1 :
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:
+            	    {
+            	    if ( input.LA(1)=='\t'||input.LA(1)=='\f'||input.LA(1)==' ' ) {
+            	        input.consume();
+            	    state.failed=false;
+            	    }
+            	    else {
+            	        if (state.backtracking>0) {state.failed=true; return ;}
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt1 >= 1 ) break loop1;
+            	    if (state.backtracking>0) {state.failed=true; return ;}
+                        EarlyExitException eee =
+                            new EarlyExitException(1, input);
+                        throw eee;
+                }
+                cnt1++;
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               _channel=HIDDEN;
+            }
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "WS"
+
+    // $ANTLR start "EOL"
+    public final void mEOL() throws RecognitionException {
+        try {
+            int _type = EOL;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:276:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:277:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:277:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            int alt2=3;
+            int LA2_0 = input.LA(1);
+
+            if ( (LA2_0=='\r') ) {
+                int LA2_1 = input.LA(2);
+
+                if ( (LA2_1=='\n') && (synpred1_DSLMap())) {
+                    alt2=1;
+                }
+                else {
+                    alt2=2;}
+            }
+            else if ( (LA2_0=='\n') ) {
+                alt2=3;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 2, 0, input);
+
+                throw nvae;
+            }
+            switch (alt2) {
+                case 1 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:277:14: ( '\\r\\n' )=> '\\r\\n'
+                    {
+                    match("\r\n"); if (state.failed) return ;
+
+
+                    }
+                    break;
+                case 2 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:278:25: '\\r'
+                    {
+                    match('\r'); if (state.failed) return ;
+
+                    }
+                    break;
+                case 3 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:279:25: '\\n'
+                    {
+                    match('\n'); if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "EOL"
+
+    // $ANTLR start "EscapeSequence"
+    public final void mEscapeSequence() throws RecognitionException {
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:285:5: ( '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' | '=' | 'u' | '0' | '#' ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:285:9: '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' | '=' | 'u' | '0' | '#' )
+            {
+            match('\\'); if (state.failed) return ;
+            if ( (input.LA(1)>='\"' && input.LA(1)<='$')||(input.LA(1)>='&' && input.LA(1)<='+')||(input.LA(1)>='-' && input.LA(1)<='.')||input.LA(1)=='0'||input.LA(1)=='='||input.LA(1)=='?'||(input.LA(1)>='A' && input.LA(1)<='B')||(input.LA(1)>='D' && input.LA(1)<='E')||input.LA(1)=='G'||input.LA(1)=='Q'||input.LA(1)=='S'||input.LA(1)=='W'||(input.LA(1)>='Z' && input.LA(1)<='^')||(input.LA(1)>='a' && input.LA(1)<='f')||(input.LA(1)>='n' && input.LA(1)<='p')||(input.LA(1)>='r' && input.LA(1)<='u')||(input.LA(1)>='w' && input.LA(1)<='x')||(input.LA(1)>='z' && input.LA(1)<='}') ) {
+                input.consume();
+            state.failed=false;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
+
+
+            }
+
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "EscapeSequence"
+
+    // $ANTLR start "LEFT_SQUARE"
+    public final void mLEFT_SQUARE() throws RecognitionException {
+        try {
+            int _type = LEFT_SQUARE;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:292:9: ( '[' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:292:11: '['
+            {
+            match('['); if (state.failed) return ;
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "LEFT_SQUARE"
+
+    // $ANTLR start "RIGHT_SQUARE"
+    public final void mRIGHT_SQUARE() throws RecognitionException {
+        try {
+            int _type = RIGHT_SQUARE;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:296:9: ( ']' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:296:11: ']'
+            {
+            match(']'); if (state.failed) return ;
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RIGHT_SQUARE"
+
+    // $ANTLR start "LEFT_CURLY"
+    public final void mLEFT_CURLY() throws RecognitionException {
+        try {
+            int _type = LEFT_CURLY;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:300:9: ( '{' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:300:11: '{'
+            {
+            match('{'); if (state.failed) return ;
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "LEFT_CURLY"
+
+    // $ANTLR start "RIGHT_CURLY"
+    public final void mRIGHT_CURLY() throws RecognitionException {
+        try {
+            int _type = RIGHT_CURLY;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:304:9: ( '}' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:304:11: '}'
+            {
+            match('}'); if (state.failed) return ;
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RIGHT_CURLY"
+
+    // $ANTLR start "EQUALS"
+    public final void mEQUALS() throws RecognitionException {
+        try {
+            int _type = EQUALS;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:307:8: ( '=' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:307:10: '='
+            {
+            match('='); if (state.failed) return ;
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "EQUALS"
+
+    // $ANTLR start "DOT"
+    public final void mDOT() throws RecognitionException {
+        try {
+            int _type = DOT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:310:5: ( '.' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:310:7: '.'
+            {
+            match('.'); if (state.failed) return ;
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "DOT"
+
+    // $ANTLR start "POUND"
+    public final void mPOUND() throws RecognitionException {
+        try {
+            int _type = POUND;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:313:9: ( '#' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:313:11: '#'
+            {
+            match('#'); if (state.failed) return ;
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "POUND"
+
+    // $ANTLR start "COLON"
+    public final void mCOLON() throws RecognitionException {
+        try {
+            int _type = COLON;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:316:7: ( ':' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:316:9: ':'
+            {
+            match(':'); if (state.failed) return ;
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "COLON"
+
+    // $ANTLR start "COMMA"
+    public final void mCOMMA() throws RecognitionException {
+        try {
+            int _type = COMMA;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:319:7: ( ',' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:319:9: ','
+            {
+            match(','); if (state.failed) return ;
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "COMMA"
+
+    // $ANTLR start "LINE_COMMENT"
+    public final void mLINE_COMMENT() throws RecognitionException {
+        try {
+            int _type = LINE_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:327:2: ( POUND ( options {greedy=false; } : . )* EOL )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:327:4: POUND ( options {greedy=false; } : . )* EOL
+            {
+            mPOUND(); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:327:10: ( options {greedy=false; } : . )*
+            loop3:
+            do {
+                int alt3=2;
+                int LA3_0 = input.LA(1);
+
+                if ( (LA3_0=='\r') ) {
+                    alt3=2;
+                }
+                else if ( (LA3_0=='\n') ) {
+                    alt3=2;
+                }
+                else if ( ((LA3_0>='\u0000' && LA3_0<='\t')||(LA3_0>='\u000B' && LA3_0<='\f')||(LA3_0>='\u000E' && LA3_0<='\uFFFF')) ) {
+                    alt3=1;
+                }
+
+
+                switch (alt3) {
+            	case 1 :
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:327:37: .
+            	    {
+            	    matchAny(); if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop3;
+                }
+            } while (true);
+
+            mEOL(); if (state.failed) return ;
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "LINE_COMMENT"
+
+    // $ANTLR start "LITERAL"
+    public final void mLITERAL() throws RecognitionException {
+        try {
+            int _type = LITERAL;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:335:2: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' | MISC | EscapeSequence | DOT )+ )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:335:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' | MISC | EscapeSequence | DOT )+
+            {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:335:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' | MISC | EscapeSequence | DOT )+
+            int cnt4=0;
+            loop4:
+            do {
+                int alt4=9;
+                alt4 = dfa4.predict(input);
+                switch (alt4) {
+            	case 1 :
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:335:5: 'a' .. 'z'
+            	    {
+            	    matchRange('a','z'); if (state.failed) return ;
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:335:14: 'A' .. 'Z'
+            	    {
+            	    matchRange('A','Z'); if (state.failed) return ;
+
+            	    }
+            	    break;
+            	case 3 :
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:335:23: '_'
+            	    {
+            	    match('_'); if (state.failed) return ;
+
+            	    }
+            	    break;
+            	case 4 :
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:335:27: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); if (state.failed) return ;
+
+            	    }
+            	    break;
+            	case 5 :
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:335:36: '\\u00c0' .. '\\u00ff'
+            	    {
+            	    matchRange('\u00C0','\u00FF'); if (state.failed) return ;
+
+            	    }
+            	    break;
+            	case 6 :
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:335:55: MISC
+            	    {
+            	    mMISC(); if (state.failed) return ;
+
+            	    }
+            	    break;
+            	case 7 :
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:335:60: EscapeSequence
+            	    {
+            	    mEscapeSequence(); if (state.failed) return ;
+
+            	    }
+            	    break;
+            	case 8 :
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:335:75: DOT
+            	    {
+            	    mDOT(); if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt4 >= 1 ) break loop4;
+            	    if (state.backtracking>0) {state.failed=true; return ;}
+                        EarlyExitException eee =
+                            new EarlyExitException(4, input);
+                        throw eee;
+                }
+                cnt4++;
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "LITERAL"
+
+    // $ANTLR start "MISC"
+    public final void mMISC() throws RecognitionException {
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:339:7: ( '>' | '<' | '!' | '@' | '$' | '%' | '^' | '*' | '-' | '+' | '?' | COMMA | '/' | '\\'' | '\"' | '|' | '&' | '(' | ')' | ';' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.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.consume();
+            state.failed=false;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
+
+
+            }
+
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "MISC"
+
+    public void mTokens() throws RecognitionException {
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:1:8: ( WS | EOL | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | EQUALS | DOT | POUND | COLON | COMMA | LINE_COMMENT | LITERAL )
+        int alt5=13;
+        alt5 = dfa5.predict(input);
+        switch (alt5) {
+            case 1 :
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:1:10: WS
+                {
+                mWS(); if (state.failed) return ;
+
+                }
+                break;
+            case 2 :
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:1:13: EOL
+                {
+                mEOL(); if (state.failed) return ;
+
+                }
+                break;
+            case 3 :
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:1:17: LEFT_SQUARE
+                {
+                mLEFT_SQUARE(); if (state.failed) return ;
+
+                }
+                break;
+            case 4 :
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:1:29: RIGHT_SQUARE
+                {
+                mRIGHT_SQUARE(); if (state.failed) return ;
+
+                }
+                break;
+            case 5 :
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:1:42: LEFT_CURLY
+                {
+                mLEFT_CURLY(); if (state.failed) return ;
+
+                }
+                break;
+            case 6 :
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:1:53: RIGHT_CURLY
+                {
+                mRIGHT_CURLY(); if (state.failed) return ;
+
+                }
+                break;
+            case 7 :
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:1:65: EQUALS
+                {
+                mEQUALS(); if (state.failed) return ;
+
+                }
+                break;
+            case 8 :
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:1:72: DOT
+                {
+                mDOT(); if (state.failed) return ;
+
+                }
+                break;
+            case 9 :
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:1:76: POUND
+                {
+                mPOUND(); if (state.failed) return ;
+
+                }
+                break;
+            case 10 :
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:1:82: COLON
+                {
+                mCOLON(); if (state.failed) return ;
+
+                }
+                break;
+            case 11 :
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:1:88: COMMA
+                {
+                mCOMMA(); if (state.failed) return ;
+
+                }
+                break;
+            case 12 :
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:1:94: LINE_COMMENT
+                {
+                mLINE_COMMENT(); if (state.failed) return ;
+
+                }
+                break;
+            case 13 :
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:1:107: LITERAL
+                {
+                mLITERAL(); if (state.failed) return ;
+
+                }
+                break;
+
+        }
+
+    }
+
+    // $ANTLR start synpred1_DSLMap
+    public final void synpred1_DSLMap_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:277:14: ( '\\r\\n' )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:277:16: '\\r\\n'
+        {
+        match("\r\n"); if (state.failed) return ;
+
+
+        }
+    }
+    // $ANTLR end synpred1_DSLMap
+
+    public final boolean synpred1_DSLMap() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred1_DSLMap_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+
+
+    protected DFA4 dfa4 = new DFA4(this);
+    protected DFA5 dfa5 = new DFA5(this);
+    static final String DFA4_eotS =
+        "\1\1\11\uffff";
+    static final String DFA4_eofS =
+        "\12\uffff";
+    static final String DFA4_minS =
+        "\1\41\11\uffff";
+    static final String DFA4_maxS =
+        "\1\u00ff\11\uffff";
+    static final String DFA4_acceptS =
+        "\1\uffff\1\11\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10";
+    static final String DFA4_specialS =
+        "\12\uffff}>";
+    static final String[] DFA4_transitionS = {
+            "\2\7\1\uffff\12\7\1\11\1\7\12\5\1\uffff\2\7\1\uffff\3\7\32\3"+
+            "\1\uffff\1\10\1\uffff\1\7\1\4\1\uffff\32\2\1\uffff\1\7\103\uffff"+
+            "\100\6",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA4_eot = DFA.unpackEncodedString(DFA4_eotS);
+    static final short[] DFA4_eof = DFA.unpackEncodedString(DFA4_eofS);
+    static final char[] DFA4_min = DFA.unpackEncodedStringToUnsignedChars(DFA4_minS);
+    static final char[] DFA4_max = DFA.unpackEncodedStringToUnsignedChars(DFA4_maxS);
+    static final short[] DFA4_accept = DFA.unpackEncodedString(DFA4_acceptS);
+    static final short[] DFA4_special = DFA.unpackEncodedString(DFA4_specialS);
+    static final short[][] DFA4_transition;
+
+    static {
+        int numStates = DFA4_transitionS.length;
+        DFA4_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA4_transition[i] = DFA.unpackEncodedString(DFA4_transitionS[i]);
+        }
+    }
+
+    class DFA4 extends DFA {
+
+        public DFA4(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 4;
+            this.eot = DFA4_eot;
+            this.eof = DFA4_eof;
+            this.min = DFA4_min;
+            this.max = DFA4_max;
+            this.accept = DFA4_accept;
+            this.special = DFA4_special;
+            this.transition = DFA4_transition;
+        }
+        public String getDescription() {
+            return "()+ loopback of 335:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' | MISC | EscapeSequence | DOT )+";
+        }
+    }
+    static final String DFA5_eotS =
+        "\10\uffff\1\15\1\16\1\uffff\1\20\5\uffff";
+    static final String DFA5_eofS =
+        "\21\uffff";
+    static final String DFA5_minS =
+        "\1\11\7\uffff\1\41\1\0\1\uffff\1\41\5\uffff";
+    static final String DFA5_maxS =
+        "\1\u00ff\7\uffff\1\u00ff\1\uffff\1\uffff\1\u00ff\5\uffff";
+    static final String DFA5_acceptS =
+        "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\2\uffff\1\12\1\uffff\1\15\1"+
+        "\10\1\11\1\14\1\13";
+    static final String DFA5_specialS =
+        "\11\uffff\1\0\7\uffff}>";
+    static final String[] DFA5_transitionS = {
+            "\1\1\1\2\1\uffff\1\1\1\2\22\uffff\1\1\2\14\1\11\10\14\1\13\1"+
+            "\14\1\10\13\14\1\12\2\14\1\7\35\14\1\3\1\14\1\4\2\14\1\uffff"+
+            "\32\14\1\5\1\14\1\6\102\uffff\100\14",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\2\14\1\uffff\26\14\1\uffff\2\14\1\uffff\35\14\1\uffff\1\14"+
+            "\1\uffff\2\14\1\uffff\32\14\1\uffff\1\14\103\uffff\100\14",
+            "\0\17",
+            "",
+            "\2\14\1\uffff\26\14\1\uffff\2\14\1\uffff\35\14\1\uffff\1\14"+
+            "\1\uffff\2\14\1\uffff\32\14\1\uffff\1\14\103\uffff\100\14",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA5_eot = DFA.unpackEncodedString(DFA5_eotS);
+    static final short[] DFA5_eof = DFA.unpackEncodedString(DFA5_eofS);
+    static final char[] DFA5_min = DFA.unpackEncodedStringToUnsignedChars(DFA5_minS);
+    static final char[] DFA5_max = DFA.unpackEncodedStringToUnsignedChars(DFA5_maxS);
+    static final short[] DFA5_accept = DFA.unpackEncodedString(DFA5_acceptS);
+    static final short[] DFA5_special = DFA.unpackEncodedString(DFA5_specialS);
+    static final short[][] DFA5_transition;
+
+    static {
+        int numStates = DFA5_transitionS.length;
+        DFA5_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA5_transition[i] = DFA.unpackEncodedString(DFA5_transitionS[i]);
+        }
+    }
+
+    class DFA5 extends DFA {
+
+        public DFA5(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 5;
+            this.eot = DFA5_eot;
+            this.eof = DFA5_eof;
+            this.min = DFA5_min;
+            this.max = DFA5_max;
+            this.accept = DFA5_accept;
+            this.special = DFA5_special;
+            this.transition = DFA5_transition;
+        }
+        public String getDescription() {
+            return "1:1: Tokens : ( WS | EOL | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | EQUALS | DOT | POUND | COLON | COMMA | LINE_COMMENT | LITERAL );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            IntStream input = _input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA5_9 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA5_9>='\u0000' && LA5_9<='\uFFFF')) ) {s = 15;}
+
+                        else s = 14;
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 5, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapParser.java
===================================================================
--- labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapParser.java	2008-11-13 00:09:49 UTC (rev 23848)
+++ labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapParser.java	2008-11-13 03:06:09 UTC (rev 23849)
@@ -1,84 +1,83 @@
-// $ANTLR 3.0 src/main/resources/org/drools/lang/dsl/DSLMap.g 2008-10-22 23:57:51
+// $ANTLR 3.1.1 /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g 2008-11-13 00:53:52
 
 	package org.drools.lang.dsl;
+	import java.util.List;
 	import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.antlr.runtime.BitSet;
-import org.antlr.runtime.CommonToken;
-import org.antlr.runtime.EarlyExitException;
-import org.antlr.runtime.FailedPredicateException;
-import org.antlr.runtime.MismatchedSetException;
-import org.antlr.runtime.NoViableAltException;
-import org.antlr.runtime.Parser;
-import org.antlr.runtime.ParserRuleReturnScope;
-import org.antlr.runtime.RecognitionException;
-import org.antlr.runtime.Token;
-import org.antlr.runtime.TokenStream;
-import org.antlr.runtime.tree.CommonTreeAdaptor;
-import org.antlr.runtime.tree.RewriteEarlyExitException;
-import org.antlr.runtime.tree.RewriteEmptyStreamException;
-import org.antlr.runtime.tree.RewriteRuleSubtreeStream;
-import org.antlr.runtime.tree.RewriteRuleTokenStream;
-import org.antlr.runtime.tree.TreeAdaptor;
-
-public class DSLMapParser extends Parser {
-    public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "VT_DSL_GRAMMAR", "VT_COMMENT", "VT_ENTRY", "VT_SCOPE", "VT_CONDITION", "VT_CONSEQUENCE", "VT_KEYWORD", "VT_ANY", "VT_META", "VT_ENTRY_KEY", "VT_ENTRY_VAL", "VT_VAR_DEF", "VT_VAR_REF", "VT_LITERAL", "VT_PATTERN", "VT_QUAL", "VT_SPACE", "EOL", "LINE_COMMENT", "EQUALS", "LEFT_SQUARE", "RIGHT_SQUARE", "LITERAL", "COMMA", "COLON", "LEFT_CURLY", "RIGHT_CURLY", "WS", "EscapeSequence", "DOT", "POUND", "MISC"
-    };
-    public static final int COMMA=27;
-    public static final int RIGHT_CURLY=30;
-    public static final int VT_ENTRY_VAL=14;
-    public static final int WS=31;
-    public static final int MISC=35;
-    public static final int VT_META=12;
-    public static final int VT_CONSEQUENCE=9;
-    public static final int VT_SPACE=20;
-    public static final int LINE_COMMENT=22;
-    public static final int VT_ANY=11;
-    public static final int VT_LITERAL=17;
-    public static final int DOT=33;
-    public static final int EQUALS=23;
-    public static final int VT_DSL_GRAMMAR=4;
-    public static final int VT_CONDITION=8;
-    public static final int VT_ENTRY=6;
-    public static final int VT_VAR_DEF=15;
-    public static final int LITERAL=26;
-    public static final int VT_PATTERN=18;
-    public static final int EscapeSequence=32;
-    public static final int VT_COMMENT=5;
-    public static final int EOF=-1;
-    public static final int EOL=21;
-    public static final int LEFT_SQUARE=24;
-    public static final int VT_ENTRY_KEY=13;
-    public static final int COLON=28;
-    public static final int VT_SCOPE=7;
-    public static final int VT_KEYWORD=10;
-    public static final int POUND=34;
-    public static final int LEFT_CURLY=29;
-    public static final int VT_VAR_REF=16;
-    public static final int VT_QUAL=19;
-    public static final int RIGHT_SQUARE=25;
-
-        public DSLMapParser(TokenStream input) {
-            super(input);
-            ruleMemo = new HashMap[48+1];
-         }
-        
-    protected TreeAdaptor adaptor = new CommonTreeAdaptor();
-
-    public void setTreeAdaptor(TreeAdaptor adaptor) {
-        this.adaptor = adaptor;
-    }
-    public TreeAdaptor getTreeAdaptor() {
-        return adaptor;
-    }
-
-    public String[] getTokenNames() { return tokenNames; }
-    public String getGrammarFileName() { return "src/main/resources/org/drools/lang/dsl/DSLMap.g"; }
-
-
+//	import org.drools.lang.dsl.DSLMappingParseException;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+
+import org.antlr.runtime.tree.*;
+
+public class DSLMapParser extends Parser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "VT_DSL_GRAMMAR", "VT_COMMENT", "VT_ENTRY", "VT_SCOPE", "VT_CONDITION", "VT_CONSEQUENCE", "VT_KEYWORD", "VT_ANY", "VT_META", "VT_ENTRY_KEY", "VT_ENTRY_VAL", "VT_VAR_DEF", "VT_VAR_REF", "VT_LITERAL", "VT_PATTERN", "VT_QUAL", "VT_SPACE", "EOL", "LINE_COMMENT", "EQUALS", "LEFT_SQUARE", "RIGHT_SQUARE", "LITERAL", "COMMA", "COLON", "LEFT_CURLY", "RIGHT_CURLY", "WS", "EscapeSequence", "DOT", "POUND", "MISC"
+    };
+    public static final int COMMA=27;
+    public static final int RIGHT_CURLY=30;
+    public static final int VT_ENTRY_VAL=14;
+    public static final int WS=31;
+    public static final int MISC=35;
+    public static final int VT_META=12;
+    public static final int VT_CONSEQUENCE=9;
+    public static final int VT_SPACE=20;
+    public static final int LINE_COMMENT=22;
+    public static final int VT_ANY=11;
+    public static final int VT_LITERAL=17;
+    public static final int DOT=33;
+    public static final int EQUALS=23;
+    public static final int VT_DSL_GRAMMAR=4;
+    public static final int VT_CONDITION=8;
+    public static final int VT_ENTRY=6;
+    public static final int VT_VAR_DEF=15;
+    public static final int LITERAL=26;
+    public static final int VT_PATTERN=18;
+    public static final int EscapeSequence=32;
+    public static final int VT_COMMENT=5;
+    public static final int EOF=-1;
+    public static final int EOL=21;
+    public static final int LEFT_SQUARE=24;
+    public static final int VT_ENTRY_KEY=13;
+    public static final int COLON=28;
+    public static final int VT_SCOPE=7;
+    public static final int VT_KEYWORD=10;
+    public static final int POUND=34;
+    public static final int LEFT_CURLY=29;
+    public static final int VT_VAR_REF=16;
+    public static final int VT_QUAL=19;
+    public static final int RIGHT_SQUARE=25;
+
+    // delegates
+    // delegators
+
+
+        public DSLMapParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public DSLMapParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+    protected TreeAdaptor adaptor = new CommonTreeAdaptor();
+
+    public void setTreeAdaptor(TreeAdaptor adaptor) {
+        this.adaptor = adaptor;
+    }
+    public TreeAdaptor getTreeAdaptor() {
+        return adaptor;
+    }
+
+    public String[] getTokenNames() { return DSLMapParser.tokenNames; }
+    public String getGrammarFileName() { return "/Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g"; }
+
+    
     //we may not need the check on [], as the LITERAL token being examined 
     //should not have them.
     	
@@ -86,7 +85,7 @@
     	public List getErrorList(){
     		return errorList;
     	}
-
+    
     	private boolean validateLT(int LTNumber, String text){
     		if (null == input) return false;
     		if (null == input.LT(LTNumber)) return false;
@@ -96,10 +95,10 @@
     		if (text2Validate.startsWith("[") && text2Validate.endsWith("]")){
     			text2Validate = text2Validate.substring(1, text2Validate.length() - 1); 
     		}
-
+    
     		return text2Validate.equalsIgnoreCase(text);
     	}
-
+    
     	private boolean validateIdentifierKey(String text){
     		return validateLT(1, text);
     	}
@@ -117,3126 +116,3198 @@
     	//	errorList.add(exception);
     	//}
     	
-
-
-    public static class mapping_file_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start mapping_file
-    // src/main/resources/org/drools/lang/dsl/DSLMap.g:86:1: mapping_file : ( statement )* -> ^( VT_DSL_GRAMMAR ( statement )* ) ;
-    public final mapping_file_return mapping_file() throws RecognitionException {
-        mapping_file_return retval = new mapping_file_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        statement_return statement1 = null;
-
-
-        RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:87:4: ( ( statement )* -> ^( VT_DSL_GRAMMAR ( statement )* ) )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:87:4: ( statement )*
-            {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:87:4: ( statement )*
-            loop1:
-            do {
-                int alt1=2;
-                int LA1_0 = input.LA(1);
-
-                if ( ((LA1_0>=EOL && LA1_0<=LINE_COMMENT)||LA1_0==LEFT_SQUARE) ) {
-                    alt1=1;
-                }
-
-
-                switch (alt1) {
-            	case 1 :
-            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:0:0: statement
-            	    {
-            	    pushFollow(FOLLOW_statement_in_mapping_file273);
-            	    statement1=statement();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_statement.add(statement1.getTree());
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop1;
-                }
-            } while (true);
-
-
-            // AST REWRITE
-            // elements: statement
-            // token labels: 
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 88:2: -> ^( VT_DSL_GRAMMAR ( statement )* )
-            {
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:88:5: ^( VT_DSL_GRAMMAR ( statement )* )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_DSL_GRAMMAR, "VT_DSL_GRAMMAR"), root_1);
-
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:88:22: ( statement )*
-                while ( stream_statement.hasNext() ) {
-                    adaptor.addChild(root_1, stream_statement.next());
-
-                }
-                stream_statement.reset();
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end mapping_file
-
-    public static class statement_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start statement
-    // src/main/resources/org/drools/lang/dsl/DSLMap.g:91:1: statement : ( entry | comment | EOL );
-    public final statement_return statement() throws RecognitionException {
-        statement_return retval = new statement_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token EOL4=null;
-        entry_return entry2 = null;
-
-        comment_return comment3 = null;
-
-
-        Object EOL4_tree=null;
-
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:92:4: ( entry | comment | EOL )
-            int alt2=3;
-            switch ( input.LA(1) ) {
-            case LEFT_SQUARE:
-                {
-                alt2=1;
-                }
-                break;
-            case LINE_COMMENT:
-                {
-                alt2=2;
-                }
-                break;
-            case EOL:
-                {
-                alt2=3;
-                }
-                break;
-            default:
-                if (backtracking>0) {failed=true; return retval;}
-                NoViableAltException nvae =
-                    new NoViableAltException("91:1: statement : ( entry | comment | EOL );", 2, 0, input);
-
-                throw nvae;
-            }
-
-            switch (alt2) {
-                case 1 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:92:4: entry
-                    {
-                    root_0 = (Object)adaptor.nil();
-
-                    pushFollow(FOLLOW_entry_in_statement296);
-                    entry2=entry();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, entry2.getTree());
-
-                    }
-                    break;
-                case 2 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:93:4: comment
-                    {
-                    root_0 = (Object)adaptor.nil();
-
-                    pushFollow(FOLLOW_comment_in_statement303);
-                    comment3=comment();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, comment3.getTree());
-
-                    }
-                    break;
-                case 3 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:94:4: EOL
-                    {
-                    root_0 = (Object)adaptor.nil();
-
-                    EOL4=(Token)input.LT(1);
-                    match(input,EOL,FOLLOW_EOL_in_statement309); if (failed) return retval;
-
-                    }
-                    break;
-
-            }
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end statement
-
-    public static class comment_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start comment
-    // src/main/resources/org/drools/lang/dsl/DSLMap.g:99:1: comment : LINE_COMMENT -> ^( VT_COMMENT[$LINE_COMMENT, \"COMMENT\"] LINE_COMMENT ) ;
-    public final comment_return comment() throws RecognitionException {
-        comment_return retval = new comment_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token LINE_COMMENT5=null;
-
-        Object LINE_COMMENT5_tree=null;
-        RewriteRuleTokenStream stream_LINE_COMMENT=new RewriteRuleTokenStream(adaptor,"token LINE_COMMENT");
-
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:99:11: ( LINE_COMMENT -> ^( VT_COMMENT[$LINE_COMMENT, \"COMMENT\"] LINE_COMMENT ) )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:99:11: LINE_COMMENT
-            {
-            LINE_COMMENT5=(Token)input.LT(1);
-            match(input,LINE_COMMENT,FOLLOW_LINE_COMMENT_in_comment325); if (failed) return retval;
-            if ( backtracking==0 ) stream_LINE_COMMENT.add(LINE_COMMENT5);
-
-
-            // AST REWRITE
-            // elements: LINE_COMMENT
-            // token labels: 
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 100:2: -> ^( VT_COMMENT[$LINE_COMMENT, \"COMMENT\"] LINE_COMMENT )
-            {
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:100:5: ^( VT_COMMENT[$LINE_COMMENT, \"COMMENT\"] LINE_COMMENT )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_COMMENT, LINE_COMMENT5,  "COMMENT"), root_1);
-
-                adaptor.addChild(root_1, stream_LINE_COMMENT.next());
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end comment
-
-    public static class entry_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start entry
-    // src/main/resources/org/drools/lang/dsl/DSLMap.g:104:1: entry : scope_section ( meta_section )? key_section EQUALS value_section ( EOL | EOF ) -> ^( VT_ENTRY scope_section ( meta_section )? key_section value_section ) ;
-    public final entry_return entry() throws RecognitionException {
-        entry_return retval = new entry_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token EQUALS9=null;
-        Token EOL11=null;
-        Token EOF12=null;
-        scope_section_return scope_section6 = null;
-
-        meta_section_return meta_section7 = null;
-
-        key_section_return key_section8 = null;
-
-        value_section_return value_section10 = null;
-
-
-        Object EQUALS9_tree=null;
-        Object EOL11_tree=null;
-        Object EOF12_tree=null;
-        RewriteRuleTokenStream stream_EQUALS=new RewriteRuleTokenStream(adaptor,"token EQUALS");
-        RewriteRuleTokenStream stream_EOF=new RewriteRuleTokenStream(adaptor,"token EOF");
-        RewriteRuleTokenStream stream_EOL=new RewriteRuleTokenStream(adaptor,"token EOL");
-        RewriteRuleSubtreeStream stream_key_section=new RewriteRuleSubtreeStream(adaptor,"rule key_section");
-        RewriteRuleSubtreeStream stream_value_section=new RewriteRuleSubtreeStream(adaptor,"rule value_section");
-        RewriteRuleSubtreeStream stream_scope_section=new RewriteRuleSubtreeStream(adaptor,"rule scope_section");
-        RewriteRuleSubtreeStream stream_meta_section=new RewriteRuleSubtreeStream(adaptor,"rule meta_section");
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:104:10: ( scope_section ( meta_section )? key_section EQUALS value_section ( EOL | EOF ) -> ^( VT_ENTRY scope_section ( meta_section )? key_section value_section ) )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:104:10: scope_section ( meta_section )? key_section EQUALS value_section ( EOL | EOF )
-            {
-            pushFollow(FOLLOW_scope_section_in_entry350);
-            scope_section6=scope_section();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_scope_section.add(scope_section6.getTree());
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:104:24: ( meta_section )?
-            int alt3=2;
-            int LA3_0 = input.LA(1);
-
-            if ( (LA3_0==LEFT_SQUARE) ) {
-                int LA3_1 = input.LA(2);
-
-                if ( (LA3_1==LITERAL) ) {
-                    int LA3_3 = input.LA(3);
-
-                    if ( (LA3_3==RIGHT_SQUARE) ) {
-                        int LA3_4 = input.LA(4);
-
-                        if ( (synpred4()) ) {
-                            alt3=1;
-                        }
-                    }
-                }
-                else if ( (LA3_1==RIGHT_SQUARE) ) {
-                    int LA3_4 = input.LA(3);
-
-                    if ( (synpred4()) ) {
-                        alt3=1;
-                    }
-                }
-            }
-            switch (alt3) {
-                case 1 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:0:0: meta_section
-                    {
-                    pushFollow(FOLLOW_meta_section_in_entry352);
-                    meta_section7=meta_section();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_meta_section.add(meta_section7.getTree());
-
-                    }
-                    break;
-
-            }
-
-            pushFollow(FOLLOW_key_section_in_entry355);
-            key_section8=key_section();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_key_section.add(key_section8.getTree());
-            EQUALS9=(Token)input.LT(1);
-            match(input,EQUALS,FOLLOW_EQUALS_in_entry357); if (failed) return retval;
-            if ( backtracking==0 ) stream_EQUALS.add(EQUALS9);
-
-            pushFollow(FOLLOW_value_section_in_entry359);
-            value_section10=value_section();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_value_section.add(value_section10.getTree());
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:104:71: ( EOL | EOF )
-            int alt4=2;
-            int LA4_0 = input.LA(1);
-
-            if ( (LA4_0==EOL) ) {
-                alt4=1;
-            }
-            else if ( (LA4_0==EOF) ) {
-                alt4=2;
-            }
-            else {
-                if (backtracking>0) {failed=true; return retval;}
-                NoViableAltException nvae =
-                    new NoViableAltException("104:71: ( EOL | EOF )", 4, 0, input);
-
-                throw nvae;
-            }
-            switch (alt4) {
-                case 1 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:104:72: EOL
-                    {
-                    EOL11=(Token)input.LT(1);
-                    match(input,EOL,FOLLOW_EOL_in_entry362); if (failed) return retval;
-                    if ( backtracking==0 ) stream_EOL.add(EOL11);
-
-
-                    }
-                    break;
-                case 2 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:104:76: EOF
-                    {
-                    EOF12=(Token)input.LT(1);
-                    match(input,EOF,FOLLOW_EOF_in_entry364); if (failed) return retval;
-                    if ( backtracking==0 ) stream_EOF.add(EOF12);
-
-
-                    }
-                    break;
-
-            }
-
-
-            // AST REWRITE
-            // elements: key_section, value_section, meta_section, scope_section
-            // token labels: 
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 105:2: -> ^( VT_ENTRY scope_section ( meta_section )? key_section value_section )
-            {
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:105:5: ^( VT_ENTRY scope_section ( meta_section )? key_section value_section )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_ENTRY, "VT_ENTRY"), root_1);
-
-                adaptor.addChild(root_1, stream_scope_section.next());
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:105:30: ( meta_section )?
-                if ( stream_meta_section.hasNext() ) {
-                    adaptor.addChild(root_1, stream_meta_section.next());
-
-                }
-                stream_meta_section.reset();
-                adaptor.addChild(root_1, stream_key_section.next());
-                adaptor.addChild(root_1, stream_value_section.next());
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch ( RecognitionException e ) {
-
+
+
+    public static class mapping_file_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "mapping_file"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:86:1: mapping_file : ( statement )* -> ^( VT_DSL_GRAMMAR ( statement )* ) ;
+    public final DSLMapParser.mapping_file_return mapping_file() throws RecognitionException {
+        DSLMapParser.mapping_file_return retval = new DSLMapParser.mapping_file_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DSLMapParser.statement_return statement1 = null;
+
+
+        RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:87:2: ( ( statement )* -> ^( VT_DSL_GRAMMAR ( statement )* ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:87:4: ( statement )*
+            {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:87:4: ( statement )*
+            loop1:
+            do {
+                int alt1=2;
+                int LA1_0 = input.LA(1);
+
+                if ( ((LA1_0>=EOL && LA1_0<=LINE_COMMENT)||LA1_0==LEFT_SQUARE) ) {
+                    alt1=1;
+                }
+
+
+                switch (alt1) {
+            	case 1 :
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:0:0: statement
+            	    {
+            	    pushFollow(FOLLOW_statement_in_mapping_file273);
+            	    statement1=statement();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_statement.add(statement1.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop1;
+                }
+            } while (true);
+
+
+
+            // AST REWRITE
+            // elements: statement
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 88:2: -> ^( VT_DSL_GRAMMAR ( statement )* )
+            {
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:88:5: ^( VT_DSL_GRAMMAR ( statement )* )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_DSL_GRAMMAR, "VT_DSL_GRAMMAR"), root_1);
+
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:88:22: ( statement )*
+                while ( stream_statement.hasNext() ) {
+                    adaptor.addChild(root_1, stream_statement.nextTree());
+
+                }
+                stream_statement.reset();
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "mapping_file"
+
+    public static class statement_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "statement"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:91:1: statement : ( entry | comment | EOL );
+    public final DSLMapParser.statement_return statement() throws RecognitionException {
+        DSLMapParser.statement_return retval = new DSLMapParser.statement_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token EOL4=null;
+        DSLMapParser.entry_return entry2 = null;
+
+        DSLMapParser.comment_return comment3 = null;
+
+
+        Object EOL4_tree=null;
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:92:2: ( entry | comment | EOL )
+            int alt2=3;
+            switch ( input.LA(1) ) {
+            case LEFT_SQUARE:
+                {
+                alt2=1;
+                }
+                break;
+            case LINE_COMMENT:
+                {
+                alt2=2;
+                }
+                break;
+            case EOL:
+                {
+                alt2=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 2, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt2) {
+                case 1 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:92:4: entry
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_entry_in_statement296);
+                    entry2=entry();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, entry2.getTree());
+
+                    }
+                    break;
+                case 2 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:93:4: comment
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_comment_in_statement303);
+                    comment3=comment();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, comment3.getTree());
+
+                    }
+                    break;
+                case 3 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:94:4: EOL
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    EOL4=(Token)match(input,EOL,FOLLOW_EOL_in_statement309); if (state.failed) return retval;
+
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "statement"
+
+    public static class comment_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "comment"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:99:1: comment : LINE_COMMENT -> ^( VT_COMMENT[$LINE_COMMENT, \"COMMENT\"] LINE_COMMENT ) ;
+    public final DSLMapParser.comment_return comment() throws RecognitionException {
+        DSLMapParser.comment_return retval = new DSLMapParser.comment_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token LINE_COMMENT5=null;
+
+        Object LINE_COMMENT5_tree=null;
+        RewriteRuleTokenStream stream_LINE_COMMENT=new RewriteRuleTokenStream(adaptor,"token LINE_COMMENT");
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:99:9: ( LINE_COMMENT -> ^( VT_COMMENT[$LINE_COMMENT, \"COMMENT\"] LINE_COMMENT ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:99:11: LINE_COMMENT
+            {
+            LINE_COMMENT5=(Token)match(input,LINE_COMMENT,FOLLOW_LINE_COMMENT_in_comment325); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LINE_COMMENT.add(LINE_COMMENT5);
+
+
+
+            // AST REWRITE
+            // elements: LINE_COMMENT
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 100:2: -> ^( VT_COMMENT[$LINE_COMMENT, \"COMMENT\"] LINE_COMMENT )
+            {
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:100:5: ^( VT_COMMENT[$LINE_COMMENT, \"COMMENT\"] LINE_COMMENT )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_COMMENT, LINE_COMMENT5, "COMMENT"), root_1);
+
+                adaptor.addChild(root_1, stream_LINE_COMMENT.nextNode());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "comment"
+
+    public static class entry_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "entry"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:104:1: entry : scope_section ( meta_section )? key_section EQUALS value_section ( EOL | EOF ) -> ^( VT_ENTRY scope_section ( meta_section )? key_section value_section ) ;
+    public final DSLMapParser.entry_return entry() throws RecognitionException {
+        DSLMapParser.entry_return retval = new DSLMapParser.entry_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token EQUALS9=null;
+        Token EOL11=null;
+        Token EOF12=null;
+        DSLMapParser.scope_section_return scope_section6 = null;
+
+        DSLMapParser.meta_section_return meta_section7 = null;
+
+        DSLMapParser.key_section_return key_section8 = null;
+
+        DSLMapParser.value_section_return value_section10 = null;
+
+
+        Object EQUALS9_tree=null;
+        Object EOL11_tree=null;
+        Object EOF12_tree=null;
+        RewriteRuleTokenStream stream_EQUALS=new RewriteRuleTokenStream(adaptor,"token EQUALS");
+        RewriteRuleTokenStream stream_EOF=new RewriteRuleTokenStream(adaptor,"token EOF");
+        RewriteRuleTokenStream stream_EOL=new RewriteRuleTokenStream(adaptor,"token EOL");
+        RewriteRuleSubtreeStream stream_key_section=new RewriteRuleSubtreeStream(adaptor,"rule key_section");
+        RewriteRuleSubtreeStream stream_value_section=new RewriteRuleSubtreeStream(adaptor,"rule value_section");
+        RewriteRuleSubtreeStream stream_scope_section=new RewriteRuleSubtreeStream(adaptor,"rule scope_section");
+        RewriteRuleSubtreeStream stream_meta_section=new RewriteRuleSubtreeStream(adaptor,"rule meta_section");
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:104:8: ( scope_section ( meta_section )? key_section EQUALS value_section ( EOL | EOF ) -> ^( VT_ENTRY scope_section ( meta_section )? key_section value_section ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:104:10: scope_section ( meta_section )? key_section EQUALS value_section ( EOL | EOF )
+            {
+            pushFollow(FOLLOW_scope_section_in_entry350);
+            scope_section6=scope_section();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_scope_section.add(scope_section6.getTree());
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:104:24: ( meta_section )?
+            int alt3=2;
+            int LA3_0 = input.LA(1);
+
+            if ( (LA3_0==LEFT_SQUARE) ) {
+                int LA3_1 = input.LA(2);
+
+                if ( (LA3_1==LITERAL) ) {
+                    int LA3_3 = input.LA(3);
+
+                    if ( (LA3_3==RIGHT_SQUARE) ) {
+                        int LA3_4 = input.LA(4);
+
+                        if ( (synpred4_DSLMap()) ) {
+                            alt3=1;
+                        }
+                    }
+                }
+                else if ( (LA3_1==RIGHT_SQUARE) ) {
+                    int LA3_4 = input.LA(3);
+
+                    if ( (synpred4_DSLMap()) ) {
+                        alt3=1;
+                    }
+                }
+            }
+            switch (alt3) {
+                case 1 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:0:0: meta_section
+                    {
+                    pushFollow(FOLLOW_meta_section_in_entry352);
+                    meta_section7=meta_section();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_meta_section.add(meta_section7.getTree());
+
+                    }
+                    break;
+
+            }
+
+            pushFollow(FOLLOW_key_section_in_entry355);
+            key_section8=key_section();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_key_section.add(key_section8.getTree());
+            EQUALS9=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_entry357); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_EQUALS.add(EQUALS9);
+
+            pushFollow(FOLLOW_value_section_in_entry359);
+            value_section10=value_section();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_value_section.add(value_section10.getTree());
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:104:71: ( EOL | EOF )
+            int alt4=2;
+            int LA4_0 = input.LA(1);
+
+            if ( (LA4_0==EOL) ) {
+                alt4=1;
+            }
+            else if ( (LA4_0==EOF) ) {
+                alt4=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 4, 0, input);
+
+                throw nvae;
+            }
+            switch (alt4) {
+                case 1 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:104:72: EOL
+                    {
+                    EOL11=(Token)match(input,EOL,FOLLOW_EOL_in_entry362); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_EOL.add(EOL11);
+
+
+                    }
+                    break;
+                case 2 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:104:76: EOF
+                    {
+                    EOF12=(Token)match(input,EOF,FOLLOW_EOF_in_entry364); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_EOF.add(EOF12);
+
+
+                    }
+                    break;
+
+            }
+
+
+
+            // AST REWRITE
+            // elements: value_section, meta_section, scope_section, key_section
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 105:2: -> ^( VT_ENTRY scope_section ( meta_section )? key_section value_section )
+            {
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:105:5: ^( VT_ENTRY scope_section ( meta_section )? key_section value_section )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_ENTRY, "VT_ENTRY"), root_1);
+
+                adaptor.addChild(root_1, stream_scope_section.nextTree());
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:105:30: ( meta_section )?
+                if ( stream_meta_section.hasNext() ) {
+                    adaptor.addChild(root_1, stream_meta_section.nextTree());
+
+                }
+                stream_meta_section.reset();
+                adaptor.addChild(root_1, stream_key_section.nextTree());
+                adaptor.addChild(root_1, stream_value_section.nextTree());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch ( RecognitionException e ) {
+            
             		reportError( e );
-            	
-        }
-        catch ( RewriteEmptyStreamException e ) {
-
-            	
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end entry
-
-    public static class scope_section_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start scope_section
-    // src/main/resources/org/drools/lang/dsl/DSLMap.g:115:1: scope_section : LEFT_SQUARE (value1= condition_key | value2= consequence_key | value3= keyword_key | value4= any_key ) RIGHT_SQUARE -> ^( VT_SCOPE[$LEFT_SQUARE, \"SCOPE SECTION\"] ( $value1)? ( $value2)? ( $value3)? ( $value4)? ) ;
-    public final scope_section_return scope_section() throws RecognitionException {
-        scope_section_return retval = new scope_section_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token LEFT_SQUARE13=null;
-        Token RIGHT_SQUARE14=null;
-        condition_key_return value1 = null;
-
-        consequence_key_return value2 = null;
-
-        keyword_key_return value3 = null;
-
-        any_key_return value4 = null;
-
-
-        Object LEFT_SQUARE13_tree=null;
-        Object RIGHT_SQUARE14_tree=null;
-        RewriteRuleTokenStream stream_LEFT_SQUARE=new RewriteRuleTokenStream(adaptor,"token LEFT_SQUARE");
-        RewriteRuleTokenStream stream_RIGHT_SQUARE=new RewriteRuleTokenStream(adaptor,"token RIGHT_SQUARE");
-        RewriteRuleSubtreeStream stream_condition_key=new RewriteRuleSubtreeStream(adaptor,"rule condition_key");
-        RewriteRuleSubtreeStream stream_any_key=new RewriteRuleSubtreeStream(adaptor,"rule any_key");
-        RewriteRuleSubtreeStream stream_keyword_key=new RewriteRuleSubtreeStream(adaptor,"rule keyword_key");
-        RewriteRuleSubtreeStream stream_consequence_key=new RewriteRuleSubtreeStream(adaptor,"rule consequence_key");
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:116:4: ( LEFT_SQUARE (value1= condition_key | value2= consequence_key | value3= keyword_key | value4= any_key ) RIGHT_SQUARE -> ^( VT_SCOPE[$LEFT_SQUARE, \"SCOPE SECTION\"] ( $value1)? ( $value2)? ( $value3)? ( $value4)? ) )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:116:4: LEFT_SQUARE (value1= condition_key | value2= consequence_key | value3= keyword_key | value4= any_key ) RIGHT_SQUARE
-            {
-            LEFT_SQUARE13=(Token)input.LT(1);
-            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_scope_section410); if (failed) return retval;
-            if ( backtracking==0 ) stream_LEFT_SQUARE.add(LEFT_SQUARE13);
-
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:117:3: (value1= condition_key | value2= consequence_key | value3= keyword_key | value4= any_key )
-            int alt5=4;
-            int LA5_0 = input.LA(1);
-
-            if ( (LA5_0==LITERAL) ) {
-                int LA5_1 = input.LA(2);
-
-                if ( ((synpred6()&&validateIdentifierKey("condition")||validateIdentifierKey("when"))) ) {
-                    alt5=1;
-                }
-                else if ( ((synpred7()&&validateIdentifierKey("consequence")||validateIdentifierKey("then"))) ) {
-                    alt5=2;
-                }
-                else if ( ((synpred8()&&validateIdentifierKey("keyword"))) ) {
-                    alt5=3;
-                }
-                else if ( (validateIdentifierKey("*")) ) {
-                    alt5=4;
-                }
-                else {
-                    if (backtracking>0) {failed=true; return retval;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("117:3: (value1= condition_key | value2= consequence_key | value3= keyword_key | value4= any_key )", 5, 1, input);
-
-                    throw nvae;
-                }
-            }
-            else {
-                if (backtracking>0) {failed=true; return retval;}
-                NoViableAltException nvae =
-                    new NoViableAltException("117:3: (value1= condition_key | value2= consequence_key | value3= keyword_key | value4= any_key )", 5, 0, input);
-
-                throw nvae;
-            }
-            switch (alt5) {
-                case 1 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:117:4: value1= condition_key
-                    {
-                    pushFollow(FOLLOW_condition_key_in_scope_section418);
-                    value1=condition_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_condition_key.add(value1.getTree());
-
-                    }
-                    break;
-                case 2 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:118:5: value2= consequence_key
-                    {
-                    pushFollow(FOLLOW_consequence_key_in_scope_section427);
-                    value2=consequence_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_consequence_key.add(value2.getTree());
-
-                    }
-                    break;
-                case 3 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:119:5: value3= keyword_key
-                    {
-                    pushFollow(FOLLOW_keyword_key_in_scope_section435);
-                    value3=keyword_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_keyword_key.add(value3.getTree());
-
-                    }
-                    break;
-                case 4 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:120:5: value4= any_key
-                    {
-                    pushFollow(FOLLOW_any_key_in_scope_section443);
-                    value4=any_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_any_key.add(value4.getTree());
-
-                    }
-                    break;
-
-            }
-
-            RIGHT_SQUARE14=(Token)input.LT(1);
-            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_scope_section451); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_SQUARE.add(RIGHT_SQUARE14);
-
-
-            // AST REWRITE
-            // elements: value2, value3, value1, value4
-            // token labels: 
-            // rule labels: value1, value4, value2, retval, value3
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleSubtreeStream stream_value1=new RewriteRuleSubtreeStream(adaptor,"token value1",value1!=null?value1.tree:null);
-            RewriteRuleSubtreeStream stream_value4=new RewriteRuleSubtreeStream(adaptor,"token value4",value4!=null?value4.tree:null);
-            RewriteRuleSubtreeStream stream_value2=new RewriteRuleSubtreeStream(adaptor,"token value2",value2!=null?value2.tree:null);
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-            RewriteRuleSubtreeStream stream_value3=new RewriteRuleSubtreeStream(adaptor,"token value3",value3!=null?value3.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 123:2: -> ^( VT_SCOPE[$LEFT_SQUARE, \"SCOPE SECTION\"] ( $value1)? ( $value2)? ( $value3)? ( $value4)? )
-            {
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:123:5: ^( VT_SCOPE[$LEFT_SQUARE, \"SCOPE SECTION\"] ( $value1)? ( $value2)? ( $value3)? ( $value4)? )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_SCOPE, LEFT_SQUARE13,  "SCOPE SECTION"), root_1);
-
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:123:47: ( $value1)?
-                if ( stream_value1.hasNext() ) {
-                    adaptor.addChild(root_1, stream_value1.next());
-
-                }
-                stream_value1.reset();
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:123:56: ( $value2)?
-                if ( stream_value2.hasNext() ) {
-                    adaptor.addChild(root_1, stream_value2.next());
-
-                }
-                stream_value2.reset();
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:123:65: ( $value3)?
-                if ( stream_value3.hasNext() ) {
-                    adaptor.addChild(root_1, stream_value3.next());
-
-                }
-                stream_value3.reset();
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:123:74: ( $value4)?
-                if ( stream_value4.hasNext() ) {
-                    adaptor.addChild(root_1, stream_value4.next());
-
-                }
-                stream_value4.reset();
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end scope_section
-
-    public static class meta_section_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start meta_section
-    // src/main/resources/org/drools/lang/dsl/DSLMap.g:129:1: meta_section : LEFT_SQUARE ( LITERAL )? RIGHT_SQUARE -> ^( VT_META[$LEFT_SQUARE, \"META SECTION\"] ( LITERAL )? ) ;
-    public final meta_section_return meta_section() throws RecognitionException {
-        meta_section_return retval = new meta_section_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token LEFT_SQUARE15=null;
-        Token LITERAL16=null;
-        Token RIGHT_SQUARE17=null;
-
-        Object LEFT_SQUARE15_tree=null;
-        Object LITERAL16_tree=null;
-        Object RIGHT_SQUARE17_tree=null;
-        RewriteRuleTokenStream stream_LEFT_SQUARE=new RewriteRuleTokenStream(adaptor,"token LEFT_SQUARE");
-        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
-        RewriteRuleTokenStream stream_RIGHT_SQUARE=new RewriteRuleTokenStream(adaptor,"token RIGHT_SQUARE");
-
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:130:4: ( LEFT_SQUARE ( LITERAL )? RIGHT_SQUARE -> ^( VT_META[$LEFT_SQUARE, \"META SECTION\"] ( LITERAL )? ) )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:130:4: LEFT_SQUARE ( LITERAL )? RIGHT_SQUARE
-            {
-            LEFT_SQUARE15=(Token)input.LT(1);
-            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_meta_section491); if (failed) return retval;
-            if ( backtracking==0 ) stream_LEFT_SQUARE.add(LEFT_SQUARE15);
-
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:130:16: ( LITERAL )?
-            int alt6=2;
-            int LA6_0 = input.LA(1);
-
-            if ( (LA6_0==LITERAL) ) {
-                alt6=1;
-            }
-            switch (alt6) {
-                case 1 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:0:0: LITERAL
-                    {
-                    LITERAL16=(Token)input.LT(1);
-                    match(input,LITERAL,FOLLOW_LITERAL_in_meta_section493); if (failed) return retval;
-                    if ( backtracking==0 ) stream_LITERAL.add(LITERAL16);
-
-
-                    }
-                    break;
-
-            }
-
-            RIGHT_SQUARE17=(Token)input.LT(1);
-            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_meta_section496); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_SQUARE.add(RIGHT_SQUARE17);
-
-
-            // AST REWRITE
-            // elements: LITERAL
-            // token labels: 
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 131:2: -> ^( VT_META[$LEFT_SQUARE, \"META SECTION\"] ( LITERAL )? )
-            {
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:131:5: ^( VT_META[$LEFT_SQUARE, \"META SECTION\"] ( LITERAL )? )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_META, LEFT_SQUARE15,  "META SECTION"), root_1);
-
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:131:45: ( LITERAL )?
-                if ( stream_LITERAL.hasNext() ) {
-                    adaptor.addChild(root_1, stream_LITERAL.next());
-
-                }
-                stream_LITERAL.reset();
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end meta_section
-
-    public static class key_section_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start key_section
-    // src/main/resources/org/drools/lang/dsl/DSLMap.g:134:1: key_section : (ks= key_sentence )+ -> ^( VT_ENTRY_KEY ( key_sentence )+ ) ;
-    public final key_section_return key_section() throws RecognitionException {
-        key_section_return retval = new key_section_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        key_sentence_return ks = null;
-
-
-        RewriteRuleSubtreeStream stream_key_sentence=new RewriteRuleSubtreeStream(adaptor,"rule key_sentence");
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:135:4: ( (ks= key_sentence )+ -> ^( VT_ENTRY_KEY ( key_sentence )+ ) )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:135:4: (ks= key_sentence )+
-            {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:135:6: (ks= key_sentence )+
-            int cnt7=0;
-            loop7:
-            do {
-                int alt7=2;
-                int LA7_0 = input.LA(1);
-
-                if ( ((LA7_0>=LEFT_SQUARE && LA7_0<=LITERAL)||(LA7_0>=COLON && LA7_0<=LEFT_CURLY)) ) {
-                    alt7=1;
-                }
-
-
-                switch (alt7) {
-            	case 1 :
-            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:0:0: ks= key_sentence
-            	    {
-            	    pushFollow(FOLLOW_key_sentence_in_key_section520);
-            	    ks=key_sentence();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_key_sentence.add(ks.getTree());
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt7 >= 1 ) break loop7;
-            	    if (backtracking>0) {failed=true; return retval;}
-                        EarlyExitException eee =
-                            new EarlyExitException(7, input);
-                        throw eee;
-                }
-                cnt7++;
-            } while (true);
-
-
-            // AST REWRITE
-            // elements: key_sentence
-            // token labels: 
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 136:2: -> ^( VT_ENTRY_KEY ( key_sentence )+ )
-            {
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:136:5: ^( VT_ENTRY_KEY ( key_sentence )+ )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_ENTRY_KEY, "VT_ENTRY_KEY"), root_1);
-
-                if ( !(stream_key_sentence.hasNext()) ) {
-                    throw new RewriteEarlyExitException();
-                }
-                while ( stream_key_sentence.hasNext() ) {
-                    adaptor.addChild(root_1, stream_key_sentence.next());
-
-                }
-                stream_key_sentence.reset();
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end key_section
-
-    public static class key_sentence_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start key_sentence
-    // src/main/resources/org/drools/lang/dsl/DSLMap.g:139:1: key_sentence : ( variable_definition | cb= key_chunk -> VT_LITERAL[$cb.start, text] );
-    public final key_sentence_return key_sentence() throws RecognitionException {
-        key_sentence_return retval = new key_sentence_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        key_chunk_return cb = null;
-
-        variable_definition_return variable_definition18 = null;
-
-
-        RewriteRuleSubtreeStream stream_key_chunk=new RewriteRuleSubtreeStream(adaptor,"rule key_chunk");
-
+            	
+        }
+        catch ( RewriteEmptyStreamException e ) {
+            
+            	
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "entry"
+
+    public static class scope_section_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "scope_section"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:115:1: scope_section : LEFT_SQUARE (value1= condition_key | value2= consequence_key | value3= keyword_key | value4= any_key ) RIGHT_SQUARE -> ^( VT_SCOPE[$LEFT_SQUARE, \"SCOPE SECTION\"] ( $value1)? ( $value2)? ( $value3)? ( $value4)? ) ;
+    public final DSLMapParser.scope_section_return scope_section() throws RecognitionException {
+        DSLMapParser.scope_section_return retval = new DSLMapParser.scope_section_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token LEFT_SQUARE13=null;
+        Token RIGHT_SQUARE14=null;
+        DSLMapParser.condition_key_return value1 = null;
+
+        DSLMapParser.consequence_key_return value2 = null;
+
+        DSLMapParser.keyword_key_return value3 = null;
+
+        DSLMapParser.any_key_return value4 = null;
+
+
+        Object LEFT_SQUARE13_tree=null;
+        Object RIGHT_SQUARE14_tree=null;
+        RewriteRuleTokenStream stream_LEFT_SQUARE=new RewriteRuleTokenStream(adaptor,"token LEFT_SQUARE");
+        RewriteRuleTokenStream stream_RIGHT_SQUARE=new RewriteRuleTokenStream(adaptor,"token RIGHT_SQUARE");
+        RewriteRuleSubtreeStream stream_condition_key=new RewriteRuleSubtreeStream(adaptor,"rule condition_key");
+        RewriteRuleSubtreeStream stream_any_key=new RewriteRuleSubtreeStream(adaptor,"rule any_key");
+        RewriteRuleSubtreeStream stream_keyword_key=new RewriteRuleSubtreeStream(adaptor,"rule keyword_key");
+        RewriteRuleSubtreeStream stream_consequence_key=new RewriteRuleSubtreeStream(adaptor,"rule consequence_key");
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:116:2: ( LEFT_SQUARE (value1= condition_key | value2= consequence_key | value3= keyword_key | value4= any_key ) RIGHT_SQUARE -> ^( VT_SCOPE[$LEFT_SQUARE, \"SCOPE SECTION\"] ( $value1)? ( $value2)? ( $value3)? ( $value4)? ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:116:4: LEFT_SQUARE (value1= condition_key | value2= consequence_key | value3= keyword_key | value4= any_key ) RIGHT_SQUARE
+            {
+            LEFT_SQUARE13=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_scope_section410); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_SQUARE.add(LEFT_SQUARE13);
+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:117:3: (value1= condition_key | value2= consequence_key | value3= keyword_key | value4= any_key )
+            int alt5=4;
+            int LA5_0 = input.LA(1);
+
+            if ( (LA5_0==LITERAL) ) {
+                int LA5_1 = input.LA(2);
+
+                if ( ((synpred6_DSLMap()&&(validateIdentifierKey("condition")||validateIdentifierKey("when")))) ) {
+                    alt5=1;
+                }
+                else if ( ((synpred7_DSLMap()&&(validateIdentifierKey("consequence")||validateIdentifierKey("then")))) ) {
+                    alt5=2;
+                }
+                else if ( ((synpred8_DSLMap()&&(validateIdentifierKey("keyword")))) ) {
+                    alt5=3;
+                }
+                else if ( ((validateIdentifierKey("*"))) ) {
+                    alt5=4;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return retval;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 5, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 5, 0, input);
+
+                throw nvae;
+            }
+            switch (alt5) {
+                case 1 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:117:4: value1= condition_key
+                    {
+                    pushFollow(FOLLOW_condition_key_in_scope_section418);
+                    value1=condition_key();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_condition_key.add(value1.getTree());
+
+                    }
+                    break;
+                case 2 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:118:5: value2= consequence_key
+                    {
+                    pushFollow(FOLLOW_consequence_key_in_scope_section427);
+                    value2=consequence_key();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_consequence_key.add(value2.getTree());
+
+                    }
+                    break;
+                case 3 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:119:5: value3= keyword_key
+                    {
+                    pushFollow(FOLLOW_keyword_key_in_scope_section435);
+                    value3=keyword_key();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_keyword_key.add(value3.getTree());
+
+                    }
+                    break;
+                case 4 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:120:5: value4= any_key
+                    {
+                    pushFollow(FOLLOW_any_key_in_scope_section443);
+                    value4=any_key();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_any_key.add(value4.getTree());
+
+                    }
+                    break;
+
+            }
+
+            RIGHT_SQUARE14=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_scope_section451); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_SQUARE.add(RIGHT_SQUARE14);
+
+
+
+            // AST REWRITE
+            // elements: value3, value1, value2, value4
+            // token labels: 
+            // rule labels: value1, value4, value2, retval, value3
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_value1=new RewriteRuleSubtreeStream(adaptor,"token value1",value1!=null?value1.tree:null);
+            RewriteRuleSubtreeStream stream_value4=new RewriteRuleSubtreeStream(adaptor,"token value4",value4!=null?value4.tree:null);
+            RewriteRuleSubtreeStream stream_value2=new RewriteRuleSubtreeStream(adaptor,"token value2",value2!=null?value2.tree:null);
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+            RewriteRuleSubtreeStream stream_value3=new RewriteRuleSubtreeStream(adaptor,"token value3",value3!=null?value3.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 123:2: -> ^( VT_SCOPE[$LEFT_SQUARE, \"SCOPE SECTION\"] ( $value1)? ( $value2)? ( $value3)? ( $value4)? )
+            {
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:123:5: ^( VT_SCOPE[$LEFT_SQUARE, \"SCOPE SECTION\"] ( $value1)? ( $value2)? ( $value3)? ( $value4)? )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_SCOPE, LEFT_SQUARE13, "SCOPE SECTION"), root_1);
+
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:123:47: ( $value1)?
+                if ( stream_value1.hasNext() ) {
+                    adaptor.addChild(root_1, stream_value1.nextTree());
+
+                }
+                stream_value1.reset();
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:123:56: ( $value2)?
+                if ( stream_value2.hasNext() ) {
+                    adaptor.addChild(root_1, stream_value2.nextTree());
+
+                }
+                stream_value2.reset();
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:123:65: ( $value3)?
+                if ( stream_value3.hasNext() ) {
+                    adaptor.addChild(root_1, stream_value3.nextTree());
+
+                }
+                stream_value3.reset();
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:123:74: ( $value4)?
+                if ( stream_value4.hasNext() ) {
+                    adaptor.addChild(root_1, stream_value4.nextTree());
+
+                }
+                stream_value4.reset();
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "scope_section"
+
+    public static class meta_section_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "meta_section"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:129:1: meta_section : LEFT_SQUARE ( LITERAL )? RIGHT_SQUARE -> ^( VT_META[$LEFT_SQUARE, \"META SECTION\"] ( LITERAL )? ) ;
+    public final DSLMapParser.meta_section_return meta_section() throws RecognitionException {
+        DSLMapParser.meta_section_return retval = new DSLMapParser.meta_section_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token LEFT_SQUARE15=null;
+        Token LITERAL16=null;
+        Token RIGHT_SQUARE17=null;
+
+        Object LEFT_SQUARE15_tree=null;
+        Object LITERAL16_tree=null;
+        Object RIGHT_SQUARE17_tree=null;
+        RewriteRuleTokenStream stream_LEFT_SQUARE=new RewriteRuleTokenStream(adaptor,"token LEFT_SQUARE");
+        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
+        RewriteRuleTokenStream stream_RIGHT_SQUARE=new RewriteRuleTokenStream(adaptor,"token RIGHT_SQUARE");
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:130:2: ( LEFT_SQUARE ( LITERAL )? RIGHT_SQUARE -> ^( VT_META[$LEFT_SQUARE, \"META SECTION\"] ( LITERAL )? ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:130:4: LEFT_SQUARE ( LITERAL )? RIGHT_SQUARE
+            {
+            LEFT_SQUARE15=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_meta_section491); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_SQUARE.add(LEFT_SQUARE15);
+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:130:16: ( LITERAL )?
+            int alt6=2;
+            int LA6_0 = input.LA(1);
+
+            if ( (LA6_0==LITERAL) ) {
+                alt6=1;
+            }
+            switch (alt6) {
+                case 1 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:0:0: LITERAL
+                    {
+                    LITERAL16=(Token)match(input,LITERAL,FOLLOW_LITERAL_in_meta_section493); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LITERAL.add(LITERAL16);
+
+
+                    }
+                    break;
+
+            }
+
+            RIGHT_SQUARE17=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_meta_section496); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_SQUARE.add(RIGHT_SQUARE17);
+
+
+
+            // AST REWRITE
+            // elements: LITERAL
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 131:2: -> ^( VT_META[$LEFT_SQUARE, \"META SECTION\"] ( LITERAL )? )
+            {
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:131:5: ^( VT_META[$LEFT_SQUARE, \"META SECTION\"] ( LITERAL )? )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_META, LEFT_SQUARE15, "META SECTION"), root_1);
+
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:131:45: ( LITERAL )?
+                if ( stream_LITERAL.hasNext() ) {
+                    adaptor.addChild(root_1, stream_LITERAL.nextNode());
+
+                }
+                stream_LITERAL.reset();
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "meta_section"
+
+    public static class key_section_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "key_section"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:134:1: key_section : (ks= key_sentence )+ -> ^( VT_ENTRY_KEY ( key_sentence )+ ) ;
+    public final DSLMapParser.key_section_return key_section() throws RecognitionException {
+        DSLMapParser.key_section_return retval = new DSLMapParser.key_section_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DSLMapParser.key_sentence_return ks = null;
+
+
+        RewriteRuleSubtreeStream stream_key_sentence=new RewriteRuleSubtreeStream(adaptor,"rule key_sentence");
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:135:2: ( (ks= key_sentence )+ -> ^( VT_ENTRY_KEY ( key_sentence )+ ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:135:4: (ks= key_sentence )+
+            {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:135:6: (ks= key_sentence )+
+            int cnt7=0;
+            loop7:
+            do {
+                int alt7=2;
+                int LA7_0 = input.LA(1);
+
+                if ( ((LA7_0>=LEFT_SQUARE && LA7_0<=LITERAL)||(LA7_0>=COLON && LA7_0<=LEFT_CURLY)) ) {
+                    alt7=1;
+                }
+
+
+                switch (alt7) {
+            	case 1 :
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:0:0: ks= key_sentence
+            	    {
+            	    pushFollow(FOLLOW_key_sentence_in_key_section520);
+            	    ks=key_sentence();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_key_sentence.add(ks.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt7 >= 1 ) break loop7;
+            	    if (state.backtracking>0) {state.failed=true; return retval;}
+                        EarlyExitException eee =
+                            new EarlyExitException(7, input);
+                        throw eee;
+                }
+                cnt7++;
+            } while (true);
+
+
+
+            // AST REWRITE
+            // elements: key_sentence
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 136:2: -> ^( VT_ENTRY_KEY ( key_sentence )+ )
+            {
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:136:5: ^( VT_ENTRY_KEY ( key_sentence )+ )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_ENTRY_KEY, "VT_ENTRY_KEY"), root_1);
+
+                if ( !(stream_key_sentence.hasNext()) ) {
+                    throw new RewriteEarlyExitException();
+                }
+                while ( stream_key_sentence.hasNext() ) {
+                    adaptor.addChild(root_1, stream_key_sentence.nextTree());
+
+                }
+                stream_key_sentence.reset();
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "key_section"
+
+    public static class key_sentence_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "key_sentence"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:139:1: key_sentence : ( variable_definition | cb= key_chunk -> VT_LITERAL[$cb.start, text] );
+    public final DSLMapParser.key_sentence_return key_sentence() throws RecognitionException {
+        DSLMapParser.key_sentence_return retval = new DSLMapParser.key_sentence_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DSLMapParser.key_chunk_return cb = null;
+
+        DSLMapParser.variable_definition_return variable_definition18 = null;
+
+
+        RewriteRuleSubtreeStream stream_key_chunk=new RewriteRuleSubtreeStream(adaptor,"rule key_chunk");
+        
                 String text = "";
-
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:143:4: ( variable_definition | cb= key_chunk -> VT_LITERAL[$cb.start, text] )
-            int alt8=2;
-            int LA8_0 = input.LA(1);
-
-            if ( (LA8_0==LEFT_CURLY) ) {
-                alt8=1;
-            }
-            else if ( ((LA8_0>=LEFT_SQUARE && LA8_0<=LITERAL)||LA8_0==COLON) ) {
-                alt8=2;
-            }
-            else {
-                if (backtracking>0) {failed=true; return retval;}
-                NoViableAltException nvae =
-                    new NoViableAltException("139:1: key_sentence : ( variable_definition | cb= key_chunk -> VT_LITERAL[$cb.start, text] );", 8, 0, input);
-
-                throw nvae;
-            }
-            switch (alt8) {
-                case 1 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:143:4: variable_definition
-                    {
-                    root_0 = (Object)adaptor.nil();
-
-                    pushFollow(FOLLOW_variable_definition_in_key_sentence551);
-                    variable_definition18=variable_definition();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, variable_definition18.getTree());
-
-                    }
-                    break;
-                case 2 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:144:4: cb= key_chunk
-                    {
-                    pushFollow(FOLLOW_key_chunk_in_key_sentence558);
-                    cb=key_chunk();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_key_chunk.add(cb.getTree());
-                    if ( backtracking==0 ) {
-                       text = input.toString(cb.start,cb.stop);
-                    }
-
-                    // AST REWRITE
-                    // elements: 
-                    // token labels: 
-                    // rule labels: retval
-                    // token list labels: 
-                    // rule list labels: 
-                    if ( backtracking==0 ) {
-                    retval.tree = root_0;
-                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-                    root_0 = (Object)adaptor.nil();
-                    // 145:2: -> VT_LITERAL[$cb.start, text]
-                    {
-                        adaptor.addChild(root_0, adaptor.create(VT_LITERAL, ((Token)cb.start),  text));
-
-                    }
-
-                    }
-
-                    }
-                    break;
-
-            }
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end key_sentence
-
-    public static class key_chunk_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start key_chunk
-    // src/main/resources/org/drools/lang/dsl/DSLMap.g:148:1: key_chunk : ( literal )+ ;
-    public final key_chunk_return key_chunk() throws RecognitionException {
-        key_chunk_return retval = new key_chunk_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        literal_return literal19 = null;
-
-
-
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:149:4: ( ( literal )+ )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:149:4: ( literal )+
-            {
-            root_0 = (Object)adaptor.nil();
-
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:149:4: ( literal )+
-            int cnt9=0;
-            loop9:
-            do {
-                int alt9=2;
-                int LA9_0 = input.LA(1);
-
-                if ( ((LA9_0>=LEFT_SQUARE && LA9_0<=LITERAL)||LA9_0==COLON) ) {
-                    int LA9_2 = input.LA(2);
-
-                    if ( (synpred12()) ) {
-                        alt9=1;
-                    }
-
-
-                }
-
-
-                switch (alt9) {
-            	case 1 :
-            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:0:0: literal
-            	    {
-            	    pushFollow(FOLLOW_literal_in_key_chunk579);
-            	    literal19=literal();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, literal19.getTree());
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt9 >= 1 ) break loop9;
-            	    if (backtracking>0) {failed=true; return retval;}
-                        EarlyExitException eee =
-                            new EarlyExitException(9, input);
-                        throw eee;
-                }
-                cnt9++;
-            } while (true);
-
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end key_chunk
-
-    public static class value_section_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start value_section
-    // src/main/resources/org/drools/lang/dsl/DSLMap.g:152:1: value_section : ( value_sentence )+ -> ^( VT_ENTRY_VAL ( value_sentence )+ ) ;
-    public final value_section_return value_section() throws RecognitionException {
-        value_section_return retval = new value_section_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        value_sentence_return value_sentence20 = null;
-
-
-        RewriteRuleSubtreeStream stream_value_sentence=new RewriteRuleSubtreeStream(adaptor,"rule value_sentence");
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:153:4: ( ( value_sentence )+ -> ^( VT_ENTRY_VAL ( value_sentence )+ ) )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:153:4: ( value_sentence )+
-            {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:153:4: ( value_sentence )+
-            int cnt10=0;
-            loop10:
-            do {
-                int alt10=2;
-                int LA10_0 = input.LA(1);
-
-                if ( ((LA10_0>=EQUALS && LA10_0<=LEFT_CURLY)) ) {
-                    alt10=1;
-                }
-
-
-                switch (alt10) {
-            	case 1 :
-            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:0:0: value_sentence
-            	    {
-            	    pushFollow(FOLLOW_value_sentence_in_value_section594);
-            	    value_sentence20=value_sentence();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_value_sentence.add(value_sentence20.getTree());
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt10 >= 1 ) break loop10;
-            	    if (backtracking>0) {failed=true; return retval;}
-                        EarlyExitException eee =
-                            new EarlyExitException(10, input);
-                        throw eee;
-                }
-                cnt10++;
-            } while (true);
-
-
-            // AST REWRITE
-            // elements: value_sentence
-            // token labels: 
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 154:2: -> ^( VT_ENTRY_VAL ( value_sentence )+ )
-            {
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:154:5: ^( VT_ENTRY_VAL ( value_sentence )+ )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_ENTRY_VAL, "VT_ENTRY_VAL"), root_1);
-
-                if ( !(stream_value_sentence.hasNext()) ) {
-                    throw new RewriteEarlyExitException();
-                }
-                while ( stream_value_sentence.hasNext() ) {
-                    adaptor.addChild(root_1, stream_value_sentence.next());
-
-                }
-                stream_value_sentence.reset();
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end value_section
-
-    public static class value_sentence_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start value_sentence
-    // src/main/resources/org/drools/lang/dsl/DSLMap.g:157:1: value_sentence : ( variable_reference | vc= value_chunk -> VT_LITERAL[$vc.start, text] );
-    public final value_sentence_return value_sentence() throws RecognitionException {
-        value_sentence_return retval = new value_sentence_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        value_chunk_return vc = null;
-
-        variable_reference_return variable_reference21 = null;
-
-
-        RewriteRuleSubtreeStream stream_value_chunk=new RewriteRuleSubtreeStream(adaptor,"rule value_chunk");
-
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:143:2: ( variable_definition | cb= key_chunk -> VT_LITERAL[$cb.start, text] )
+            int alt8=2;
+            int LA8_0 = input.LA(1);
+
+            if ( (LA8_0==LEFT_CURLY) ) {
+                alt8=1;
+            }
+            else if ( ((LA8_0>=LEFT_SQUARE && LA8_0<=LITERAL)||LA8_0==COLON) ) {
+                alt8=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 8, 0, input);
+
+                throw nvae;
+            }
+            switch (alt8) {
+                case 1 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:143:4: variable_definition
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_variable_definition_in_key_sentence551);
+                    variable_definition18=variable_definition();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, variable_definition18.getTree());
+
+                    }
+                    break;
+                case 2 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:144:4: cb= key_chunk
+                    {
+                    pushFollow(FOLLOW_key_chunk_in_key_sentence558);
+                    cb=key_chunk();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_key_chunk.add(cb.getTree());
+                    if ( state.backtracking==0 ) {
+                       text = (cb!=null?input.toString(cb.start,cb.stop):null);
+                    }
+
+
+                    // AST REWRITE
+                    // elements: 
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( state.backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 145:2: -> VT_LITERAL[$cb.start, text]
+                    {
+                        adaptor.addChild(root_0, (Object)adaptor.create(VT_LITERAL, (cb!=null?((Token)cb.start):null), text));
+
+                    }
+
+                    retval.tree = root_0;}
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "key_sentence"
+
+    public static class key_chunk_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "key_chunk"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:148:1: key_chunk : ( literal )+ ;
+    public final DSLMapParser.key_chunk_return key_chunk() throws RecognitionException {
+        DSLMapParser.key_chunk_return retval = new DSLMapParser.key_chunk_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DSLMapParser.literal_return literal19 = null;
+
+
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:149:2: ( ( literal )+ )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:149:4: ( literal )+
+            {
+            root_0 = (Object)adaptor.nil();
+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:149:4: ( literal )+
+            int cnt9=0;
+            loop9:
+            do {
+                int alt9=2;
+                int LA9_0 = input.LA(1);
+
+                if ( ((LA9_0>=LEFT_SQUARE && LA9_0<=LITERAL)||LA9_0==COLON) ) {
+                    int LA9_2 = input.LA(2);
+
+                    if ( (synpred12_DSLMap()) ) {
+                        alt9=1;
+                    }
+
+
+                }
+
+
+                switch (alt9) {
+            	case 1 :
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:0:0: literal
+            	    {
+            	    pushFollow(FOLLOW_literal_in_key_chunk579);
+            	    literal19=literal();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, literal19.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt9 >= 1 ) break loop9;
+            	    if (state.backtracking>0) {state.failed=true; return retval;}
+                        EarlyExitException eee =
+                            new EarlyExitException(9, input);
+                        throw eee;
+                }
+                cnt9++;
+            } while (true);
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "key_chunk"
+
+    public static class value_section_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "value_section"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:152:1: value_section : ( value_sentence )+ -> ^( VT_ENTRY_VAL ( value_sentence )+ ) ;
+    public final DSLMapParser.value_section_return value_section() throws RecognitionException {
+        DSLMapParser.value_section_return retval = new DSLMapParser.value_section_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DSLMapParser.value_sentence_return value_sentence20 = null;
+
+
+        RewriteRuleSubtreeStream stream_value_sentence=new RewriteRuleSubtreeStream(adaptor,"rule value_sentence");
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:153:2: ( ( value_sentence )+ -> ^( VT_ENTRY_VAL ( value_sentence )+ ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:153:4: ( value_sentence )+
+            {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:153:4: ( value_sentence )+
+            int cnt10=0;
+            loop10:
+            do {
+                int alt10=2;
+                int LA10_0 = input.LA(1);
+
+                if ( ((LA10_0>=EQUALS && LA10_0<=LEFT_CURLY)) ) {
+                    alt10=1;
+                }
+
+
+                switch (alt10) {
+            	case 1 :
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:0:0: value_sentence
+            	    {
+            	    pushFollow(FOLLOW_value_sentence_in_value_section594);
+            	    value_sentence20=value_sentence();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_value_sentence.add(value_sentence20.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt10 >= 1 ) break loop10;
+            	    if (state.backtracking>0) {state.failed=true; return retval;}
+                        EarlyExitException eee =
+                            new EarlyExitException(10, input);
+                        throw eee;
+                }
+                cnt10++;
+            } while (true);
+
+
+
+            // AST REWRITE
+            // elements: value_sentence
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 154:2: -> ^( VT_ENTRY_VAL ( value_sentence )+ )
+            {
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:154:5: ^( VT_ENTRY_VAL ( value_sentence )+ )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_ENTRY_VAL, "VT_ENTRY_VAL"), root_1);
+
+                if ( !(stream_value_sentence.hasNext()) ) {
+                    throw new RewriteEarlyExitException();
+                }
+                while ( stream_value_sentence.hasNext() ) {
+                    adaptor.addChild(root_1, stream_value_sentence.nextTree());
+
+                }
+                stream_value_sentence.reset();
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "value_section"
+
+    public static class value_sentence_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "value_sentence"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:157:1: value_sentence : ( variable_reference | vc= value_chunk -> VT_LITERAL[$vc.start, text] );
+    public final DSLMapParser.value_sentence_return value_sentence() throws RecognitionException {
+        DSLMapParser.value_sentence_return retval = new DSLMapParser.value_sentence_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DSLMapParser.value_chunk_return vc = null;
+
+        DSLMapParser.variable_reference_return variable_reference21 = null;
+
+
+        RewriteRuleSubtreeStream stream_value_chunk=new RewriteRuleSubtreeStream(adaptor,"rule value_chunk");
+        
                 String text = "";
-
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:161:4: ( variable_reference | vc= value_chunk -> VT_LITERAL[$vc.start, text] )
-            int alt11=2;
-            int LA11_0 = input.LA(1);
-
-            if ( (LA11_0==LEFT_CURLY) ) {
-                alt11=1;
-            }
-            else if ( ((LA11_0>=EQUALS && LA11_0<=COLON)) ) {
-                alt11=2;
-            }
-            else {
-                if (backtracking>0) {failed=true; return retval;}
-                NoViableAltException nvae =
-                    new NoViableAltException("157:1: value_sentence : ( variable_reference | vc= value_chunk -> VT_LITERAL[$vc.start, text] );", 11, 0, input);
-
-                throw nvae;
-            }
-            switch (alt11) {
-                case 1 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:161:4: variable_reference
-                    {
-                    root_0 = (Object)adaptor.nil();
-
-                    pushFollow(FOLLOW_variable_reference_in_value_sentence625);
-                    variable_reference21=variable_reference();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, variable_reference21.getTree());
-
-                    }
-                    break;
-                case 2 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:162:4: vc= value_chunk
-                    {
-                    pushFollow(FOLLOW_value_chunk_in_value_sentence632);
-                    vc=value_chunk();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_value_chunk.add(vc.getTree());
-                    if ( backtracking==0 ) {
-                       text = input.toString(vc.start,vc.stop); 
-                    }
-
-                    // AST REWRITE
-                    // elements: 
-                    // token labels: 
-                    // rule labels: retval
-                    // token list labels: 
-                    // rule list labels: 
-                    if ( backtracking==0 ) {
-                    retval.tree = root_0;
-                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-                    root_0 = (Object)adaptor.nil();
-                    // 163:2: -> VT_LITERAL[$vc.start, text]
-                    {
-                        adaptor.addChild(root_0, adaptor.create(VT_LITERAL, ((Token)vc.start),  text));
-
-                    }
-
-                    }
-
-                    }
-                    break;
-
-            }
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end value_sentence
-
-    public static class value_chunk_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start value_chunk
-    // src/main/resources/org/drools/lang/dsl/DSLMap.g:166:1: value_chunk : ( literal | EQUALS | COMMA )+ ;
-    public final value_chunk_return value_chunk() throws RecognitionException {
-        value_chunk_return retval = new value_chunk_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token EQUALS23=null;
-        Token COMMA24=null;
-        literal_return literal22 = null;
-
-
-        Object EQUALS23_tree=null;
-        Object COMMA24_tree=null;
-
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:167:4: ( ( literal | EQUALS | COMMA )+ )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:167:4: ( literal | EQUALS | COMMA )+
-            {
-            root_0 = (Object)adaptor.nil();
-
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:167:4: ( literal | EQUALS | COMMA )+
-            int cnt12=0;
-            loop12:
-            do {
-                int alt12=4;
-                switch ( input.LA(1) ) {
-                case LEFT_SQUARE:
-                case RIGHT_SQUARE:
-                case LITERAL:
-                case COLON:
-                    {
-                    int LA12_2 = input.LA(2);
-
-                    if ( (synpred15()) ) {
-                        alt12=1;
-                    }
-
-
-                    }
-                    break;
-                case EQUALS:
-                    {
-                    int LA12_3 = input.LA(2);
-
-                    if ( (synpred16()) ) {
-                        alt12=2;
-                    }
-
-
-                    }
-                    break;
-                case COMMA:
-                    {
-                    int LA12_4 = input.LA(2);
-
-                    if ( (synpred17()) ) {
-                        alt12=3;
-                    }
-
-
-                    }
-                    break;
-
-                }
-
-                switch (alt12) {
-            	case 1 :
-            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:167:5: literal
-            	    {
-            	    pushFollow(FOLLOW_literal_in_value_chunk654);
-            	    literal22=literal();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, literal22.getTree());
-
-            	    }
-            	    break;
-            	case 2 :
-            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:167:13: EQUALS
-            	    {
-            	    EQUALS23=(Token)input.LT(1);
-            	    match(input,EQUALS,FOLLOW_EQUALS_in_value_chunk656); if (failed) return retval;
-            	    if ( backtracking==0 ) {
-            	    EQUALS23_tree = (Object)adaptor.create(EQUALS23);
-            	    adaptor.addChild(root_0, EQUALS23_tree);
-            	    }
-
-            	    }
-            	    break;
-            	case 3 :
-            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:167:20: COMMA
-            	    {
-            	    COMMA24=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_value_chunk658); if (failed) return retval;
-            	    if ( backtracking==0 ) {
-            	    COMMA24_tree = (Object)adaptor.create(COMMA24);
-            	    adaptor.addChild(root_0, COMMA24_tree);
-            	    }
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt12 >= 1 ) break loop12;
-            	    if (backtracking>0) {failed=true; return retval;}
-                        EarlyExitException eee =
-                            new EarlyExitException(12, input);
-                        throw eee;
-                }
-                cnt12++;
-            } while (true);
-
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end value_chunk
-
-    public static class literal_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start literal
-    // src/main/resources/org/drools/lang/dsl/DSLMap.g:170:1: literal : ( LITERAL | COLON | LEFT_SQUARE | RIGHT_SQUARE ) ;
-    public final literal_return literal() throws RecognitionException {
-        literal_return retval = new literal_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token set25=null;
-
-        Object set25_tree=null;
-
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:171:4: ( ( LITERAL | COLON | LEFT_SQUARE | RIGHT_SQUARE ) )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:171:4: ( LITERAL | COLON | LEFT_SQUARE | RIGHT_SQUARE )
-            {
-            root_0 = (Object)adaptor.nil();
-
-            set25=(Token)input.LT(1);
-            if ( (input.LA(1)>=LEFT_SQUARE && input.LA(1)<=LITERAL)||input.LA(1)==COLON ) {
-                input.consume();
-                if ( backtracking==0 ) adaptor.addChild(root_0, adaptor.create(set25));
-                errorRecovery=false;failed=false;
-            }
-            else {
-                if (backtracking>0) {failed=true; return retval;}
-                MismatchedSetException mse =
-                    new MismatchedSetException(null,input);
-                recoverFromMismatchedSet(input,mse,FOLLOW_set_in_literal674);    throw mse;
-            }
-
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end literal
-
-    public static class variable_definition_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start variable_definition
-    // src/main/resources/org/drools/lang/dsl/DSLMap.g:175:1: variable_definition : lc= LEFT_CURLY name= LITERAL ( ( COLON q= LITERAL )? COLON pat= pattern )? rc= RIGHT_CURLY -> {hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) -> {!hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) -> {!hasSpaceBefore && !hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) -> {hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) VT_SPACE -> {!hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) VT_SPACE -> {hasSpaceBefore && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL!
  ( $q)? ) ) VT_SPACE -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) VT_SPACE -> ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) ;
-    public final variable_definition_return variable_definition() throws RecognitionException {
-        variable_definition_return retval = new variable_definition_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token lc=null;
-        Token name=null;
-        Token q=null;
-        Token rc=null;
-        Token COLON26=null;
-        Token COLON27=null;
-        pattern_return pat = null;
-
-
-        Object lc_tree=null;
-        Object name_tree=null;
-        Object q_tree=null;
-        Object rc_tree=null;
-        Object COLON26_tree=null;
-        Object COLON27_tree=null;
-        RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
-        RewriteRuleTokenStream stream_RIGHT_CURLY=new RewriteRuleTokenStream(adaptor,"token RIGHT_CURLY");
-        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
-        RewriteRuleTokenStream stream_LEFT_CURLY=new RewriteRuleTokenStream(adaptor,"token LEFT_CURLY");
-        RewriteRuleSubtreeStream stream_pattern=new RewriteRuleSubtreeStream(adaptor,"rule pattern");
-
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:161:2: ( variable_reference | vc= value_chunk -> VT_LITERAL[$vc.start, text] )
+            int alt11=2;
+            int LA11_0 = input.LA(1);
+
+            if ( (LA11_0==LEFT_CURLY) ) {
+                alt11=1;
+            }
+            else if ( ((LA11_0>=EQUALS && LA11_0<=COLON)) ) {
+                alt11=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 11, 0, input);
+
+                throw nvae;
+            }
+            switch (alt11) {
+                case 1 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:161:4: variable_reference
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_variable_reference_in_value_sentence625);
+                    variable_reference21=variable_reference();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, variable_reference21.getTree());
+
+                    }
+                    break;
+                case 2 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:162:4: vc= value_chunk
+                    {
+                    pushFollow(FOLLOW_value_chunk_in_value_sentence632);
+                    vc=value_chunk();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_value_chunk.add(vc.getTree());
+                    if ( state.backtracking==0 ) {
+                       text = (vc!=null?input.toString(vc.start,vc.stop):null); 
+                    }
+
+
+                    // AST REWRITE
+                    // elements: 
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( state.backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 163:2: -> VT_LITERAL[$vc.start, text]
+                    {
+                        adaptor.addChild(root_0, (Object)adaptor.create(VT_LITERAL, (vc!=null?((Token)vc.start):null), text));
+
+                    }
+
+                    retval.tree = root_0;}
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "value_sentence"
+
+    public static class value_chunk_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "value_chunk"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:166:1: value_chunk : ( literal | EQUALS | COMMA )+ ;
+    public final DSLMapParser.value_chunk_return value_chunk() throws RecognitionException {
+        DSLMapParser.value_chunk_return retval = new DSLMapParser.value_chunk_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token EQUALS23=null;
+        Token COMMA24=null;
+        DSLMapParser.literal_return literal22 = null;
+
+
+        Object EQUALS23_tree=null;
+        Object COMMA24_tree=null;
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:167:2: ( ( literal | EQUALS | COMMA )+ )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:167:4: ( literal | EQUALS | COMMA )+
+            {
+            root_0 = (Object)adaptor.nil();
+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:167:4: ( literal | EQUALS | COMMA )+
+            int cnt12=0;
+            loop12:
+            do {
+                int alt12=4;
+                switch ( input.LA(1) ) {
+                case LEFT_SQUARE:
+                case RIGHT_SQUARE:
+                case LITERAL:
+                case COLON:
+                    {
+                    int LA12_2 = input.LA(2);
+
+                    if ( (synpred15_DSLMap()) ) {
+                        alt12=1;
+                    }
+
+
+                    }
+                    break;
+                case EQUALS:
+                    {
+                    int LA12_3 = input.LA(2);
+
+                    if ( (synpred16_DSLMap()) ) {
+                        alt12=2;
+                    }
+
+
+                    }
+                    break;
+                case COMMA:
+                    {
+                    int LA12_4 = input.LA(2);
+
+                    if ( (synpred17_DSLMap()) ) {
+                        alt12=3;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt12) {
+            	case 1 :
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:167:5: literal
+            	    {
+            	    pushFollow(FOLLOW_literal_in_value_chunk654);
+            	    literal22=literal();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, literal22.getTree());
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:167:13: EQUALS
+            	    {
+            	    EQUALS23=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_value_chunk656); if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) {
+            	    EQUALS23_tree = (Object)adaptor.create(EQUALS23);
+            	    adaptor.addChild(root_0, EQUALS23_tree);
+            	    }
+
+            	    }
+            	    break;
+            	case 3 :
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:167:20: COMMA
+            	    {
+            	    COMMA24=(Token)match(input,COMMA,FOLLOW_COMMA_in_value_chunk658); if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) {
+            	    COMMA24_tree = (Object)adaptor.create(COMMA24);
+            	    adaptor.addChild(root_0, COMMA24_tree);
+            	    }
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt12 >= 1 ) break loop12;
+            	    if (state.backtracking>0) {state.failed=true; return retval;}
+                        EarlyExitException eee =
+                            new EarlyExitException(12, input);
+                        throw eee;
+                }
+                cnt12++;
+            } while (true);
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "value_chunk"
+
+    public static class literal_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "literal"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:170:1: literal : ( LITERAL | COLON | LEFT_SQUARE | RIGHT_SQUARE ) ;
+    public final DSLMapParser.literal_return literal() throws RecognitionException {
+        DSLMapParser.literal_return retval = new DSLMapParser.literal_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token set25=null;
+
+        Object set25_tree=null;
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:171:2: ( ( LITERAL | COLON | LEFT_SQUARE | RIGHT_SQUARE ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:171:4: ( LITERAL | COLON | LEFT_SQUARE | RIGHT_SQUARE )
+            {
+            root_0 = (Object)adaptor.nil();
+
+            set25=(Token)input.LT(1);
+            if ( (input.LA(1)>=LEFT_SQUARE && input.LA(1)<=LITERAL)||input.LA(1)==COLON ) {
+                input.consume();
+                if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set25));
+                state.errorRecovery=false;state.failed=false;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                throw mse;
+            }
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "literal"
+
+    public static class variable_definition_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "variable_definition"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:175:1: variable_definition : lc= LEFT_CURLY name= LITERAL ( ( COLON q= LITERAL )? COLON pat= pattern )? rc= RIGHT_CURLY -> {hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) -> {!hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) -> {!hasSpaceBefore && !hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) -> {hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) VT_SPACE -> {!hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) VT_SPACE -> {hasSpace!
 Before && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) VT_SPACE -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) VT_SPACE -> ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) ;
+    public final DSLMapParser.variable_definition_return variable_definition() throws RecognitionException {
+        DSLMapParser.variable_definition_return retval = new DSLMapParser.variable_definition_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token lc=null;
+        Token name=null;
+        Token q=null;
+        Token rc=null;
+        Token COLON26=null;
+        Token COLON27=null;
+        DSLMapParser.pattern_return pat = null;
+
+
+        Object lc_tree=null;
+        Object name_tree=null;
+        Object q_tree=null;
+        Object rc_tree=null;
+        Object COLON26_tree=null;
+        Object COLON27_tree=null;
+        RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
+        RewriteRuleTokenStream stream_RIGHT_CURLY=new RewriteRuleTokenStream(adaptor,"token RIGHT_CURLY");
+        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
+        RewriteRuleTokenStream stream_LEFT_CURLY=new RewriteRuleTokenStream(adaptor,"token LEFT_CURLY");
+        RewriteRuleSubtreeStream stream_pattern=new RewriteRuleSubtreeStream(adaptor,"rule pattern");
+        
                 String text = "";
                 boolean hasSpaceBefore = false;
                 boolean hasSpaceAfter = false;
-
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:181:4: (lc= LEFT_CURLY name= LITERAL ( ( COLON q= LITERAL )? COLON pat= pattern )? rc= RIGHT_CURLY -> {hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) -> {!hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) -> {!hasSpaceBefore && !hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) -> {hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) VT_SPACE -> {!hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) VT_SPACE -> {hasSpaceBefore && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) V!
 T_SPACE -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) VT_SPACE -> ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:181:4: lc= LEFT_CURLY name= LITERAL ( ( COLON q= LITERAL )? COLON pat= pattern )? rc= RIGHT_CURLY
-            {
-            lc=(Token)input.LT(1);
-            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_variable_definition710); if (failed) return retval;
-            if ( backtracking==0 ) stream_LEFT_CURLY.add(lc);
-
-            if ( backtracking==0 ) {
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:181:2: (lc= LEFT_CURLY name= LITERAL ( ( COLON q= LITERAL )? COLON pat= pattern )? rc= RIGHT_CURLY -> {hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) -> {!hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) -> {!hasSpaceBefore && !hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) -> {hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) VT_SPACE -> {!hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) VT_SPACE -> {hasSpaceBefore && has!
 SpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) VT_SPACE -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) VT_SPACE -> ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:181:4: lc= LEFT_CURLY name= LITERAL ( ( COLON q= LITERAL )? COLON pat= pattern )? rc= RIGHT_CURLY
+            {
+            lc=(Token)match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_variable_definition710); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_CURLY.add(lc);
+
+            if ( state.backtracking==0 ) {
                
               		CommonToken back2 =  (CommonToken)input.LT(-2);
               		if( back2!=null && back2.getStopIndex() < ((CommonToken)lc).getStartIndex() -1 ) hasSpaceBefore = true; 
-              		
-            }
-            name=(Token)input.LT(1);
-            match(input,LITERAL,FOLLOW_LITERAL_in_variable_definition721); if (failed) return retval;
-            if ( backtracking==0 ) stream_LITERAL.add(name);
-
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:186:15: ( ( COLON q= LITERAL )? COLON pat= pattern )?
-            int alt14=2;
-            int LA14_0 = input.LA(1);
-
-            if ( (LA14_0==COLON) ) {
-                alt14=1;
-            }
-            switch (alt14) {
-                case 1 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:186:17: ( COLON q= LITERAL )? COLON pat= pattern
-                    {
-                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:186:17: ( COLON q= LITERAL )?
-                    int alt13=2;
-                    int LA13_0 = input.LA(1);
-
-                    if ( (LA13_0==COLON) ) {
-                        int LA13_1 = input.LA(2);
-
-                        if ( (LA13_1==LITERAL) ) {
-                            int LA13_2 = input.LA(3);
-
-                            if ( (LA13_2==COLON) ) {
-                                int LA13_4 = input.LA(4);
-
-                                if ( (synpred21()) ) {
-                                    alt13=1;
-                                }
-                            }
-                        }
-                    }
-                    switch (alt13) {
-                        case 1 :
-                            // src/main/resources/org/drools/lang/dsl/DSLMap.g:186:18: COLON q= LITERAL
-                            {
-                            COLON26=(Token)input.LT(1);
-                            match(input,COLON,FOLLOW_COLON_in_variable_definition726); if (failed) return retval;
-                            if ( backtracking==0 ) stream_COLON.add(COLON26);
-
-                            q=(Token)input.LT(1);
-                            match(input,LITERAL,FOLLOW_LITERAL_in_variable_definition730); if (failed) return retval;
-                            if ( backtracking==0 ) stream_LITERAL.add(q);
-
-
-                            }
-                            break;
-
-                    }
-
-                    COLON27=(Token)input.LT(1);
-                    match(input,COLON,FOLLOW_COLON_in_variable_definition734); if (failed) return retval;
-                    if ( backtracking==0 ) stream_COLON.add(COLON27);
-
-                    pushFollow(FOLLOW_pattern_in_variable_definition738);
-                    pat=pattern();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_pattern.add(pat.getTree());
-                    if ( backtracking==0 ) {
-                      text = input.toString(pat.start,pat.stop);
-                    }
-
-                    }
-                    break;
-
-            }
-
-            rc=(Token)input.LT(1);
-            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_definition747); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_CURLY.add(rc);
-
-            if ( backtracking==0 ) {
-
+              		
+            }
+            name=(Token)match(input,LITERAL,FOLLOW_LITERAL_in_variable_definition721); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LITERAL.add(name);
+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:186:15: ( ( COLON q= LITERAL )? COLON pat= pattern )?
+            int alt14=2;
+            int LA14_0 = input.LA(1);
+
+            if ( (LA14_0==COLON) ) {
+                alt14=1;
+            }
+            switch (alt14) {
+                case 1 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:186:17: ( COLON q= LITERAL )? COLON pat= pattern
+                    {
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:186:17: ( COLON q= LITERAL )?
+                    int alt13=2;
+                    int LA13_0 = input.LA(1);
+
+                    if ( (LA13_0==COLON) ) {
+                        int LA13_1 = input.LA(2);
+
+                        if ( (LA13_1==LITERAL) ) {
+                            int LA13_2 = input.LA(3);
+
+                            if ( (LA13_2==COLON) ) {
+                                int LA13_4 = input.LA(4);
+
+                                if ( (synpred21_DSLMap()) ) {
+                                    alt13=1;
+                                }
+                            }
+                        }
+                    }
+                    switch (alt13) {
+                        case 1 :
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:186:18: COLON q= LITERAL
+                            {
+                            COLON26=(Token)match(input,COLON,FOLLOW_COLON_in_variable_definition726); if (state.failed) return retval; 
+                            if ( state.backtracking==0 ) stream_COLON.add(COLON26);
+
+                            q=(Token)match(input,LITERAL,FOLLOW_LITERAL_in_variable_definition730); if (state.failed) return retval; 
+                            if ( state.backtracking==0 ) stream_LITERAL.add(q);
+
+
+                            }
+                            break;
+
+                    }
+
+                    COLON27=(Token)match(input,COLON,FOLLOW_COLON_in_variable_definition734); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_COLON.add(COLON27);
+
+                    pushFollow(FOLLOW_pattern_in_variable_definition738);
+                    pat=pattern();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_pattern.add(pat.getTree());
+                    if ( state.backtracking==0 ) {
+                      text = (pat!=null?input.toString(pat.start,pat.stop):null);
+                    }
+
+                    }
+                    break;
+
+            }
+
+            rc=(Token)match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_definition747); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_CURLY.add(rc);
+
+            if ( state.backtracking==0 ) {
+              
               	CommonToken rc1 = (CommonToken)input.LT(1);
               	if(!"=".equals(rc1.getText()) && ((CommonToken)rc).getStopIndex() < rc1.getStartIndex() - 1) hasSpaceAfter = true;
-              	
-            }
-
-            // AST REWRITE
-            // elements: name, q, q, q, q, q, name, q, name, name, name, q, name, name, name, q, q, name
-            // token labels: q, name
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleTokenStream stream_q=new RewriteRuleTokenStream(adaptor,"token q",q);
-            RewriteRuleTokenStream stream_name=new RewriteRuleTokenStream(adaptor,"token name",name);
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 191:2: -> {hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] )
-            if (hasSpaceBefore && !"".equals(text) && !hasSpaceAfter) {
-                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:191:70: ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:191:89: ^( VT_QUAL ( $q)? )
-                {
-                Object root_2 = (Object)adaptor.nil();
-                root_2 = (Object)adaptor.becomeRoot(adaptor.create(VT_QUAL, "VT_QUAL"), root_2);
-
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:191:99: ( $q)?
-                if ( stream_q.hasNext() ) {
-                    adaptor.addChild(root_2, stream_q.next());
-
-                }
-                stream_q.reset();
-
-                adaptor.addChild(root_1, root_2);
-                }
-                adaptor.addChild(root_1, adaptor.create(VT_PATTERN, ((Token)pat.start),  text));
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-            else // 192:2: -> {!hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] )
-            if (!hasSpaceBefore && !"".equals(text)  && !hasSpaceAfter) {
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:192:63: ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:192:82: ^( VT_QUAL ( $q)? )
-                {
-                Object root_2 = (Object)adaptor.nil();
-                root_2 = (Object)adaptor.becomeRoot(adaptor.create(VT_QUAL, "VT_QUAL"), root_2);
-
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:192:92: ( $q)?
-                if ( stream_q.hasNext() ) {
-                    adaptor.addChild(root_2, stream_q.next());
-
-                }
-                stream_q.reset();
-
-                adaptor.addChild(root_1, root_2);
-                }
-                adaptor.addChild(root_1, adaptor.create(VT_PATTERN, ((Token)pat.start),  text));
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-            else // 193:2: -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) )
-            if (hasSpaceBefore  && !hasSpaceAfter) {
-                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:193:51: ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:193:70: ^( VT_QUAL ( $q)? )
-                {
-                Object root_2 = (Object)adaptor.nil();
-                root_2 = (Object)adaptor.becomeRoot(adaptor.create(VT_QUAL, "VT_QUAL"), root_2);
-
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:193:80: ( $q)?
-                if ( stream_q.hasNext() ) {
-                    adaptor.addChild(root_2, stream_q.next());
-
-                }
-                stream_q.reset();
-
-                adaptor.addChild(root_1, root_2);
-                }
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-            else // 194:2: -> {!hasSpaceBefore && !hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) )
-            if (!hasSpaceBefore  && !hasSpaceAfter) {
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:194:44: ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:194:63: ^( VT_QUAL ( $q)? )
-                {
-                Object root_2 = (Object)adaptor.nil();
-                root_2 = (Object)adaptor.becomeRoot(adaptor.create(VT_QUAL, "VT_QUAL"), root_2);
-
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:194:73: ( $q)?
-                if ( stream_q.hasNext() ) {
-                    adaptor.addChild(root_2, stream_q.next());
-
-                }
-                stream_q.reset();
-
-                adaptor.addChild(root_1, root_2);
-                }
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-            else // 196:2: -> {hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) VT_SPACE
-            if (hasSpaceBefore && !"".equals(text) && hasSpaceAfter) {
-                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:196:69: ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:196:88: ^( VT_QUAL ( $q)? )
-                {
-                Object root_2 = (Object)adaptor.nil();
-                root_2 = (Object)adaptor.becomeRoot(adaptor.create(VT_QUAL, "VT_QUAL"), root_2);
-
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:196:98: ( $q)?
-                if ( stream_q.hasNext() ) {
-                    adaptor.addChild(root_2, stream_q.next());
-
-                }
-                stream_q.reset();
-
-                adaptor.addChild(root_1, root_2);
-                }
-                adaptor.addChild(root_1, adaptor.create(VT_PATTERN, ((Token)pat.start),  text));
-
-                adaptor.addChild(root_0, root_1);
-                }
-                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
-
-            }
-            else // 197:2: -> {!hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) VT_SPACE
-            if (!hasSpaceBefore && !"".equals(text)  && hasSpaceAfter) {
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:197:62: ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:197:81: ^( VT_QUAL ( $q)? )
-                {
-                Object root_2 = (Object)adaptor.nil();
-                root_2 = (Object)adaptor.becomeRoot(adaptor.create(VT_QUAL, "VT_QUAL"), root_2);
-
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:197:91: ( $q)?
-                if ( stream_q.hasNext() ) {
-                    adaptor.addChild(root_2, stream_q.next());
-
-                }
-                stream_q.reset();
-
-                adaptor.addChild(root_1, root_2);
-                }
-                adaptor.addChild(root_1, adaptor.create(VT_PATTERN, ((Token)pat.start),  text));
-
-                adaptor.addChild(root_0, root_1);
-                }
-                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
-
-            }
-            else // 198:2: -> {hasSpaceBefore && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) VT_SPACE
-            if (hasSpaceBefore  && hasSpaceAfter) {
-                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:198:50: ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:198:69: ^( VT_QUAL ( $q)? )
-                {
-                Object root_2 = (Object)adaptor.nil();
-                root_2 = (Object)adaptor.becomeRoot(adaptor.create(VT_QUAL, "VT_QUAL"), root_2);
-
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:198:79: ( $q)?
-                if ( stream_q.hasNext() ) {
-                    adaptor.addChild(root_2, stream_q.next());
-
-                }
-                stream_q.reset();
-
-                adaptor.addChild(root_1, root_2);
-                }
-
-                adaptor.addChild(root_0, root_1);
-                }
-                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
-
-            }
-            else // 199:2: -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) VT_SPACE
-            if (!hasSpaceBefore  && hasSpaceAfter) {
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:199:43: ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:199:62: ^( VT_QUAL ( $q)? )
-                {
-                Object root_2 = (Object)adaptor.nil();
-                root_2 = (Object)adaptor.becomeRoot(adaptor.create(VT_QUAL, "VT_QUAL"), root_2);
-
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:199:72: ( $q)?
-                if ( stream_q.hasNext() ) {
-                    adaptor.addChild(root_2, stream_q.next());
-
-                }
-                stream_q.reset();
-
-                adaptor.addChild(root_1, root_2);
-                }
-
-                adaptor.addChild(root_0, root_1);
-                }
-                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
-
-            }
-            else // 200:2: -> ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) )
-            {
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:200:5: ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:200:24: ^( VT_QUAL ( $q)? )
-                {
-                Object root_2 = (Object)adaptor.nil();
-                root_2 = (Object)adaptor.becomeRoot(adaptor.create(VT_QUAL, "VT_QUAL"), root_2);
-
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:200:34: ( $q)?
-                if ( stream_q.hasNext() ) {
-                    adaptor.addChild(root_2, stream_q.next());
-
-                }
-                stream_q.reset();
-
-                adaptor.addChild(root_1, root_2);
-                }
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end variable_definition
-
-    public static class variable_definition2_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start variable_definition2
-    // src/main/resources/org/drools/lang/dsl/DSLMap.g:203:1: variable_definition2 : LEFT_CURLY name= LITERAL ( COLON pat= pattern )? RIGHT_CURLY -> {!\"\".equals(text)}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) -> ^( VT_VAR_DEF $name) ;
-    public final variable_definition2_return variable_definition2() throws RecognitionException {
-        variable_definition2_return retval = new variable_definition2_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token name=null;
-        Token LEFT_CURLY28=null;
-        Token COLON29=null;
-        Token RIGHT_CURLY30=null;
-        pattern_return pat = null;
-
-
-        Object name_tree=null;
-        Object LEFT_CURLY28_tree=null;
-        Object COLON29_tree=null;
-        Object RIGHT_CURLY30_tree=null;
-        RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
-        RewriteRuleTokenStream stream_RIGHT_CURLY=new RewriteRuleTokenStream(adaptor,"token RIGHT_CURLY");
-        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
-        RewriteRuleTokenStream stream_LEFT_CURLY=new RewriteRuleTokenStream(adaptor,"token LEFT_CURLY");
-        RewriteRuleSubtreeStream stream_pattern=new RewriteRuleSubtreeStream(adaptor,"rule pattern");
-
+              	
+            }
+
+
+            // AST REWRITE
+            // elements: q, name, q, name, q, q, name, name, q, name, name, name, name, q, q, q, q, name
+            // token labels: name, q
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleTokenStream stream_name=new RewriteRuleTokenStream(adaptor,"token name",name);
+            RewriteRuleTokenStream stream_q=new RewriteRuleTokenStream(adaptor,"token q",q);
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 191:2: -> {hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] )
+            if (hasSpaceBefore && !"".equals(text) && !hasSpaceAfter) {
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_SPACE, "VT_SPACE"));
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:191:70: ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.nextNode());
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:191:89: ^( VT_QUAL ( $q)? )
+                {
+                Object root_2 = (Object)adaptor.nil();
+                root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_QUAL, "VT_QUAL"), root_2);
+
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:191:99: ( $q)?
+                if ( stream_q.hasNext() ) {
+                    adaptor.addChild(root_2, stream_q.nextNode());
+
+                }
+                stream_q.reset();
+
+                adaptor.addChild(root_1, root_2);
+                }
+                adaptor.addChild(root_1, (Object)adaptor.create(VT_PATTERN, (pat!=null?((Token)pat.start):null), text));
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+            else // 192:2: -> {!hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] )
+            if (!hasSpaceBefore && !"".equals(text)  && !hasSpaceAfter) {
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:192:63: ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.nextNode());
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:192:82: ^( VT_QUAL ( $q)? )
+                {
+                Object root_2 = (Object)adaptor.nil();
+                root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_QUAL, "VT_QUAL"), root_2);
+
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:192:92: ( $q)?
+                if ( stream_q.hasNext() ) {
+                    adaptor.addChild(root_2, stream_q.nextNode());
+
+                }
+                stream_q.reset();
+
+                adaptor.addChild(root_1, root_2);
+                }
+                adaptor.addChild(root_1, (Object)adaptor.create(VT_PATTERN, (pat!=null?((Token)pat.start):null), text));
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+            else // 193:2: -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) )
+            if (hasSpaceBefore  && !hasSpaceAfter) {
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_SPACE, "VT_SPACE"));
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:193:51: ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.nextNode());
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:193:70: ^( VT_QUAL ( $q)? )
+                {
+                Object root_2 = (Object)adaptor.nil();
+                root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_QUAL, "VT_QUAL"), root_2);
+
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:193:80: ( $q)?
+                if ( stream_q.hasNext() ) {
+                    adaptor.addChild(root_2, stream_q.nextNode());
+
+                }
+                stream_q.reset();
+
+                adaptor.addChild(root_1, root_2);
+                }
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+            else // 194:2: -> {!hasSpaceBefore && !hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) )
+            if (!hasSpaceBefore  && !hasSpaceAfter) {
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:194:44: ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.nextNode());
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:194:63: ^( VT_QUAL ( $q)? )
+                {
+                Object root_2 = (Object)adaptor.nil();
+                root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_QUAL, "VT_QUAL"), root_2);
+
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:194:73: ( $q)?
+                if ( stream_q.hasNext() ) {
+                    adaptor.addChild(root_2, stream_q.nextNode());
+
+                }
+                stream_q.reset();
+
+                adaptor.addChild(root_1, root_2);
+                }
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+            else // 196:2: -> {hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) VT_SPACE
+            if (hasSpaceBefore && !"".equals(text) && hasSpaceAfter) {
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_SPACE, "VT_SPACE"));
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:196:69: ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.nextNode());
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:196:88: ^( VT_QUAL ( $q)? )
+                {
+                Object root_2 = (Object)adaptor.nil();
+                root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_QUAL, "VT_QUAL"), root_2);
+
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:196:98: ( $q)?
+                if ( stream_q.hasNext() ) {
+                    adaptor.addChild(root_2, stream_q.nextNode());
+
+                }
+                stream_q.reset();
+
+                adaptor.addChild(root_1, root_2);
+                }
+                adaptor.addChild(root_1, (Object)adaptor.create(VT_PATTERN, (pat!=null?((Token)pat.start):null), text));
+
+                adaptor.addChild(root_0, root_1);
+                }
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_SPACE, "VT_SPACE"));
+
+            }
+            else // 197:2: -> {!hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) VT_SPACE
+            if (!hasSpaceBefore && !"".equals(text)  && hasSpaceAfter) {
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:197:62: ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.nextNode());
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:197:81: ^( VT_QUAL ( $q)? )
+                {
+                Object root_2 = (Object)adaptor.nil();
+                root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_QUAL, "VT_QUAL"), root_2);
+
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:197:91: ( $q)?
+                if ( stream_q.hasNext() ) {
+                    adaptor.addChild(root_2, stream_q.nextNode());
+
+                }
+                stream_q.reset();
+
+                adaptor.addChild(root_1, root_2);
+                }
+                adaptor.addChild(root_1, (Object)adaptor.create(VT_PATTERN, (pat!=null?((Token)pat.start):null), text));
+
+                adaptor.addChild(root_0, root_1);
+                }
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_SPACE, "VT_SPACE"));
+
+            }
+            else // 198:2: -> {hasSpaceBefore && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) VT_SPACE
+            if (hasSpaceBefore  && hasSpaceAfter) {
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_SPACE, "VT_SPACE"));
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:198:50: ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.nextNode());
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:198:69: ^( VT_QUAL ( $q)? )
+                {
+                Object root_2 = (Object)adaptor.nil();
+                root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_QUAL, "VT_QUAL"), root_2);
+
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:198:79: ( $q)?
+                if ( stream_q.hasNext() ) {
+                    adaptor.addChild(root_2, stream_q.nextNode());
+
+                }
+                stream_q.reset();
+
+                adaptor.addChild(root_1, root_2);
+                }
+
+                adaptor.addChild(root_0, root_1);
+                }
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_SPACE, "VT_SPACE"));
+
+            }
+            else // 199:2: -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) VT_SPACE
+            if (!hasSpaceBefore  && hasSpaceAfter) {
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:199:43: ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.nextNode());
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:199:62: ^( VT_QUAL ( $q)? )
+                {
+                Object root_2 = (Object)adaptor.nil();
+                root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_QUAL, "VT_QUAL"), root_2);
+
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:199:72: ( $q)?
+                if ( stream_q.hasNext() ) {
+                    adaptor.addChild(root_2, stream_q.nextNode());
+
+                }
+                stream_q.reset();
+
+                adaptor.addChild(root_1, root_2);
+                }
+
+                adaptor.addChild(root_0, root_1);
+                }
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_SPACE, "VT_SPACE"));
+
+            }
+            else // 200:2: -> ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) )
+            {
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:200:5: ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.nextNode());
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:200:24: ^( VT_QUAL ( $q)? )
+                {
+                Object root_2 = (Object)adaptor.nil();
+                root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_QUAL, "VT_QUAL"), root_2);
+
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:200:34: ( $q)?
+                if ( stream_q.hasNext() ) {
+                    adaptor.addChild(root_2, stream_q.nextNode());
+
+                }
+                stream_q.reset();
+
+                adaptor.addChild(root_1, root_2);
+                }
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "variable_definition"
+
+    public static class variable_definition2_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "variable_definition2"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:203:1: variable_definition2 : LEFT_CURLY name= LITERAL ( COLON pat= pattern )? RIGHT_CURLY -> {!\"\".equals(text)}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) -> ^( VT_VAR_DEF $name) ;
+    public final DSLMapParser.variable_definition2_return variable_definition2() throws RecognitionException {
+        DSLMapParser.variable_definition2_return retval = new DSLMapParser.variable_definition2_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token name=null;
+        Token LEFT_CURLY28=null;
+        Token COLON29=null;
+        Token RIGHT_CURLY30=null;
+        DSLMapParser.pattern_return pat = null;
+
+
+        Object name_tree=null;
+        Object LEFT_CURLY28_tree=null;
+        Object COLON29_tree=null;
+        Object RIGHT_CURLY30_tree=null;
+        RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
+        RewriteRuleTokenStream stream_RIGHT_CURLY=new RewriteRuleTokenStream(adaptor,"token RIGHT_CURLY");
+        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
+        RewriteRuleTokenStream stream_LEFT_CURLY=new RewriteRuleTokenStream(adaptor,"token LEFT_CURLY");
+        RewriteRuleSubtreeStream stream_pattern=new RewriteRuleSubtreeStream(adaptor,"rule pattern");
+        
                 String text = "";
-
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:207:4: ( LEFT_CURLY name= LITERAL ( COLON pat= pattern )? RIGHT_CURLY -> {!\"\".equals(text)}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) -> ^( VT_VAR_DEF $name) )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:207:4: LEFT_CURLY name= LITERAL ( COLON pat= pattern )? RIGHT_CURLY
-            {
-            LEFT_CURLY28=(Token)input.LT(1);
-            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_variable_definition2990); if (failed) return retval;
-            if ( backtracking==0 ) stream_LEFT_CURLY.add(LEFT_CURLY28);
-
-            name=(Token)input.LT(1);
-            match(input,LITERAL,FOLLOW_LITERAL_in_variable_definition2994); if (failed) return retval;
-            if ( backtracking==0 ) stream_LITERAL.add(name);
-
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:207:28: ( COLON pat= pattern )?
-            int alt15=2;
-            int LA15_0 = input.LA(1);
-
-            if ( (LA15_0==COLON) ) {
-                alt15=1;
-            }
-            switch (alt15) {
-                case 1 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:207:30: COLON pat= pattern
-                    {
-                    COLON29=(Token)input.LT(1);
-                    match(input,COLON,FOLLOW_COLON_in_variable_definition2998); if (failed) return retval;
-                    if ( backtracking==0 ) stream_COLON.add(COLON29);
-
-                    pushFollow(FOLLOW_pattern_in_variable_definition21002);
-                    pat=pattern();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_pattern.add(pat.getTree());
-                    if ( backtracking==0 ) {
-                      text = input.toString(pat.start,pat.stop);
-                    }
-
-                    }
-                    break;
-
-            }
-
-            RIGHT_CURLY30=(Token)input.LT(1);
-            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_definition21009); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_CURLY.add(RIGHT_CURLY30);
-
-
-            // AST REWRITE
-            // elements: name, name
-            // token labels: name
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleTokenStream stream_name=new RewriteRuleTokenStream(adaptor,"token name",name);
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 208:2: -> {!\"\".equals(text)}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
-            if (!"".equals(text)) {
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:208:25: ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-                adaptor.addChild(root_1, adaptor.create(VT_PATTERN, ((Token)pat.start),  text));
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-            else // 209:2: -> ^( VT_VAR_DEF $name)
-            {
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:209:5: ^( VT_VAR_DEF $name)
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end variable_definition2
-
-    public static class pattern_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start pattern
-    // src/main/resources/org/drools/lang/dsl/DSLMap.g:213:1: pattern : ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+ ;
-    public final pattern_return pattern() throws RecognitionException {
-        pattern_return retval = new pattern_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token LEFT_CURLY32=null;
-        Token RIGHT_CURLY34=null;
-        Token LEFT_SQUARE35=null;
-        Token RIGHT_SQUARE37=null;
-        literal_return literal31 = null;
-
-        literal_return literal33 = null;
-
-        pattern_return pattern36 = null;
-
-
-        Object LEFT_CURLY32_tree=null;
-        Object RIGHT_CURLY34_tree=null;
-        Object LEFT_SQUARE35_tree=null;
-        Object RIGHT_SQUARE37_tree=null;
-
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:214:11: ( ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+ )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:214:11: ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+
-            {
-            root_0 = (Object)adaptor.nil();
-
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:214:11: ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+
-            int cnt16=0;
-            loop16:
-            do {
-                int alt16=4;
-                switch ( input.LA(1) ) {
-                case RIGHT_SQUARE:
-                    {
-                    int LA16_2 = input.LA(2);
-
-                    if ( (synpred24()) ) {
-                        alt16=1;
-                    }
-
-
-                    }
-                    break;
-                case LEFT_SQUARE:
-                    {
-                    int LA16_3 = input.LA(2);
-
-                    if ( (synpred24()) ) {
-                        alt16=1;
-                    }
-                    else if ( (synpred26()) ) {
-                        alt16=3;
-                    }
-
-
-                    }
-                    break;
-                case LEFT_CURLY:
-                    {
-                    alt16=2;
-                    }
-                    break;
-                case LITERAL:
-                case COLON:
-                    {
-                    alt16=1;
-                    }
-                    break;
-
-                }
-
-                switch (alt16) {
-            	case 1 :
-            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:214:13: literal
-            	    {
-            	    pushFollow(FOLLOW_literal_in_pattern1060);
-            	    literal31=literal();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, literal31.getTree());
-
-            	    }
-            	    break;
-            	case 2 :
-            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:215:13: LEFT_CURLY literal RIGHT_CURLY
-            	    {
-            	    LEFT_CURLY32=(Token)input.LT(1);
-            	    match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_pattern1074); if (failed) return retval;
-            	    if ( backtracking==0 ) {
-            	    LEFT_CURLY32_tree = (Object)adaptor.create(LEFT_CURLY32);
-            	    adaptor.addChild(root_0, LEFT_CURLY32_tree);
-            	    }
-            	    pushFollow(FOLLOW_literal_in_pattern1076);
-            	    literal33=literal();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, literal33.getTree());
-            	    RIGHT_CURLY34=(Token)input.LT(1);
-            	    match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_pattern1078); if (failed) return retval;
-            	    if ( backtracking==0 ) {
-            	    RIGHT_CURLY34_tree = (Object)adaptor.create(RIGHT_CURLY34);
-            	    adaptor.addChild(root_0, RIGHT_CURLY34_tree);
-            	    }
-
-            	    }
-            	    break;
-            	case 3 :
-            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:216:13: LEFT_SQUARE pattern RIGHT_SQUARE
-            	    {
-            	    LEFT_SQUARE35=(Token)input.LT(1);
-            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_pattern1092); if (failed) return retval;
-            	    if ( backtracking==0 ) {
-            	    LEFT_SQUARE35_tree = (Object)adaptor.create(LEFT_SQUARE35);
-            	    adaptor.addChild(root_0, LEFT_SQUARE35_tree);
-            	    }
-            	    pushFollow(FOLLOW_pattern_in_pattern1094);
-            	    pattern36=pattern();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, pattern36.getTree());
-            	    RIGHT_SQUARE37=(Token)input.LT(1);
-            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_pattern1096); if (failed) return retval;
-            	    if ( backtracking==0 ) {
-            	    RIGHT_SQUARE37_tree = (Object)adaptor.create(RIGHT_SQUARE37);
-            	    adaptor.addChild(root_0, RIGHT_SQUARE37_tree);
-            	    }
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt16 >= 1 ) break loop16;
-            	    if (backtracking>0) {failed=true; return retval;}
-                        EarlyExitException eee =
-                            new EarlyExitException(16, input);
-                        throw eee;
-                }
-                cnt16++;
-            } while (true);
-
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end pattern
-
-    public static class variable_reference_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start variable_reference
-    // src/main/resources/org/drools/lang/dsl/DSLMap.g:221:1: variable_reference : lc= LEFT_CURLY name= LITERAL rc= RIGHT_CURLY -> {hasSpaceBefore && hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name) VT_SPACE -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name) -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_REF $name) VT_SPACE -> ^( VT_VAR_REF $name) ;
-    public final variable_reference_return variable_reference() throws RecognitionException {
-        variable_reference_return retval = new variable_reference_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token lc=null;
-        Token name=null;
-        Token rc=null;
-
-        Object lc_tree=null;
-        Object name_tree=null;
-        Object rc_tree=null;
-        RewriteRuleTokenStream stream_RIGHT_CURLY=new RewriteRuleTokenStream(adaptor,"token RIGHT_CURLY");
-        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
-        RewriteRuleTokenStream stream_LEFT_CURLY=new RewriteRuleTokenStream(adaptor,"token LEFT_CURLY");
-
-
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:207:2: ( LEFT_CURLY name= LITERAL ( COLON pat= pattern )? RIGHT_CURLY -> {!\"\".equals(text)}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) -> ^( VT_VAR_DEF $name) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:207:4: LEFT_CURLY name= LITERAL ( COLON pat= pattern )? RIGHT_CURLY
+            {
+            LEFT_CURLY28=(Token)match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_variable_definition2990); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_CURLY.add(LEFT_CURLY28);
+
+            name=(Token)match(input,LITERAL,FOLLOW_LITERAL_in_variable_definition2994); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LITERAL.add(name);
+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:207:28: ( COLON pat= pattern )?
+            int alt15=2;
+            int LA15_0 = input.LA(1);
+
+            if ( (LA15_0==COLON) ) {
+                alt15=1;
+            }
+            switch (alt15) {
+                case 1 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:207:30: COLON pat= pattern
+                    {
+                    COLON29=(Token)match(input,COLON,FOLLOW_COLON_in_variable_definition2998); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_COLON.add(COLON29);
+
+                    pushFollow(FOLLOW_pattern_in_variable_definition21002);
+                    pat=pattern();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_pattern.add(pat.getTree());
+                    if ( state.backtracking==0 ) {
+                      text = (pat!=null?input.toString(pat.start,pat.stop):null);
+                    }
+
+                    }
+                    break;
+
+            }
+
+            RIGHT_CURLY30=(Token)match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_definition21009); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_CURLY.add(RIGHT_CURLY30);
+
+
+
+            // AST REWRITE
+            // elements: name, name
+            // token labels: name
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleTokenStream stream_name=new RewriteRuleTokenStream(adaptor,"token name",name);
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 208:2: -> {!\"\".equals(text)}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
+            if (!"".equals(text)) {
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:208:25: ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.nextNode());
+                adaptor.addChild(root_1, (Object)adaptor.create(VT_PATTERN, (pat!=null?((Token)pat.start):null), text));
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+            else // 209:2: -> ^( VT_VAR_DEF $name)
+            {
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:209:5: ^( VT_VAR_DEF $name)
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.nextNode());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "variable_definition2"
+
+    public static class pattern_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "pattern"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:213:1: pattern : ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+ ;
+    public final DSLMapParser.pattern_return pattern() throws RecognitionException {
+        DSLMapParser.pattern_return retval = new DSLMapParser.pattern_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token LEFT_CURLY32=null;
+        Token RIGHT_CURLY34=null;
+        Token LEFT_SQUARE35=null;
+        Token RIGHT_SQUARE37=null;
+        DSLMapParser.literal_return literal31 = null;
+
+        DSLMapParser.literal_return literal33 = null;
+
+        DSLMapParser.pattern_return pattern36 = null;
+
+
+        Object LEFT_CURLY32_tree=null;
+        Object RIGHT_CURLY34_tree=null;
+        Object LEFT_SQUARE35_tree=null;
+        Object RIGHT_SQUARE37_tree=null;
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:214:9: ( ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+ )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:214:11: ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+
+            {
+            root_0 = (Object)adaptor.nil();
+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:214:11: ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+
+            int cnt16=0;
+            loop16:
+            do {
+                int alt16=4;
+                switch ( input.LA(1) ) {
+                case RIGHT_SQUARE:
+                    {
+                    int LA16_2 = input.LA(2);
+
+                    if ( (synpred24_DSLMap()) ) {
+                        alt16=1;
+                    }
+
+
+                    }
+                    break;
+                case LEFT_SQUARE:
+                    {
+                    int LA16_3 = input.LA(2);
+
+                    if ( (synpred24_DSLMap()) ) {
+                        alt16=1;
+                    }
+                    else if ( (synpred26_DSLMap()) ) {
+                        alt16=3;
+                    }
+
+
+                    }
+                    break;
+                case LEFT_CURLY:
+                    {
+                    alt16=2;
+                    }
+                    break;
+                case LITERAL:
+                case COLON:
+                    {
+                    alt16=1;
+                    }
+                    break;
+
+                }
+
+                switch (alt16) {
+            	case 1 :
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:214:13: literal
+            	    {
+            	    pushFollow(FOLLOW_literal_in_pattern1060);
+            	    literal31=literal();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, literal31.getTree());
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:215:13: LEFT_CURLY literal RIGHT_CURLY
+            	    {
+            	    LEFT_CURLY32=(Token)match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_pattern1074); if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) {
+            	    LEFT_CURLY32_tree = (Object)adaptor.create(LEFT_CURLY32);
+            	    adaptor.addChild(root_0, LEFT_CURLY32_tree);
+            	    }
+            	    pushFollow(FOLLOW_literal_in_pattern1076);
+            	    literal33=literal();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, literal33.getTree());
+            	    RIGHT_CURLY34=(Token)match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_pattern1078); if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) {
+            	    RIGHT_CURLY34_tree = (Object)adaptor.create(RIGHT_CURLY34);
+            	    adaptor.addChild(root_0, RIGHT_CURLY34_tree);
+            	    }
+
+            	    }
+            	    break;
+            	case 3 :
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:216:13: LEFT_SQUARE pattern RIGHT_SQUARE
+            	    {
+            	    LEFT_SQUARE35=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_pattern1092); if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) {
+            	    LEFT_SQUARE35_tree = (Object)adaptor.create(LEFT_SQUARE35);
+            	    adaptor.addChild(root_0, LEFT_SQUARE35_tree);
+            	    }
+            	    pushFollow(FOLLOW_pattern_in_pattern1094);
+            	    pattern36=pattern();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, pattern36.getTree());
+            	    RIGHT_SQUARE37=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_pattern1096); if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) {
+            	    RIGHT_SQUARE37_tree = (Object)adaptor.create(RIGHT_SQUARE37);
+            	    adaptor.addChild(root_0, RIGHT_SQUARE37_tree);
+            	    }
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt16 >= 1 ) break loop16;
+            	    if (state.backtracking>0) {state.failed=true; return retval;}
+                        EarlyExitException eee =
+                            new EarlyExitException(16, input);
+                        throw eee;
+                }
+                cnt16++;
+            } while (true);
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "pattern"
+
+    public static class variable_reference_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "variable_reference"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:221:1: variable_reference : lc= LEFT_CURLY name= LITERAL rc= RIGHT_CURLY -> {hasSpaceBefore && hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name) VT_SPACE -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name) -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_REF $name) VT_SPACE -> ^( VT_VAR_REF $name) ;
+    public final DSLMapParser.variable_reference_return variable_reference() throws RecognitionException {
+        DSLMapParser.variable_reference_return retval = new DSLMapParser.variable_reference_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token lc=null;
+        Token name=null;
+        Token rc=null;
+
+        Object lc_tree=null;
+        Object name_tree=null;
+        Object rc_tree=null;
+        RewriteRuleTokenStream stream_RIGHT_CURLY=new RewriteRuleTokenStream(adaptor,"token RIGHT_CURLY");
+        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
+        RewriteRuleTokenStream stream_LEFT_CURLY=new RewriteRuleTokenStream(adaptor,"token LEFT_CURLY");
+
+        
                 boolean hasSpaceBefore = false;
                 boolean hasSpaceAfter = false;
-
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:226:4: (lc= LEFT_CURLY name= LITERAL rc= RIGHT_CURLY -> {hasSpaceBefore && hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name) VT_SPACE -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name) -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_REF $name) VT_SPACE -> ^( VT_VAR_REF $name) )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:226:4: lc= LEFT_CURLY name= LITERAL rc= RIGHT_CURLY
-            {
-            lc=(Token)input.LT(1);
-            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_variable_reference1131); if (failed) return retval;
-            if ( backtracking==0 ) stream_LEFT_CURLY.add(lc);
-
-            if ( backtracking==0 ) {
-
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:226:2: (lc= LEFT_CURLY name= LITERAL rc= RIGHT_CURLY -> {hasSpaceBefore && hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name) VT_SPACE -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name) -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_REF $name) VT_SPACE -> ^( VT_VAR_REF $name) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:226:4: lc= LEFT_CURLY name= LITERAL rc= RIGHT_CURLY
+            {
+            lc=(Token)match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_variable_reference1131); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_CURLY.add(lc);
+
+            if ( state.backtracking==0 ) {
+              
               		CommonToken back2 =  (CommonToken)input.LT(-2);
               		if( back2!=null && back2.getStopIndex() < ((CommonToken)lc).getStartIndex() -1 ) hasSpaceBefore = true; 
-              		
-            }
-            name=(Token)input.LT(1);
-            match(input,LITERAL,FOLLOW_LITERAL_in_variable_reference1142); if (failed) return retval;
-            if ( backtracking==0 ) stream_LITERAL.add(name);
-
-            rc=(Token)input.LT(1);
-            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_reference1146); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_CURLY.add(rc);
-
-            if ( backtracking==0 ) {
-              if(((CommonToken)rc).getStopIndex() < ((CommonToken)input.LT(1)).getStartIndex() - 1) hasSpaceAfter = true;
-            }
-
-            // AST REWRITE
-            // elements: name, name, name, name
-            // token labels: name
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleTokenStream stream_name=new RewriteRuleTokenStream(adaptor,"token name",name);
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 233:2: -> {hasSpaceBefore && hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name) VT_SPACE
-            if (hasSpaceBefore && hasSpaceAfter) {
-                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:233:49: ^( VT_VAR_REF $name)
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_REF, "VT_VAR_REF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-
-                adaptor.addChild(root_0, root_1);
-                }
-                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
-
-            }
-            else // 234:2: -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name)
-            if (hasSpaceBefore && !hasSpaceAfter) {
-                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:234:50: ^( VT_VAR_REF $name)
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_REF, "VT_VAR_REF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-            else // 235:2: -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_REF $name) VT_SPACE
-            if (!hasSpaceBefore && hasSpaceAfter) {
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:235:42: ^( VT_VAR_REF $name)
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_REF, "VT_VAR_REF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-
-                adaptor.addChild(root_0, root_1);
-                }
-                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
-
-            }
-            else // 236:2: -> ^( VT_VAR_REF $name)
-            {
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:236:6: ^( VT_VAR_REF $name)
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_REF, "VT_VAR_REF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end variable_reference
-
-    public static class variable_reference2_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start variable_reference2
-    // src/main/resources/org/drools/lang/dsl/DSLMap.g:240:1: variable_reference2 : LEFT_CURLY name= LITERAL RIGHT_CURLY -> ^( VT_VAR_REF $name) ;
-    public final variable_reference2_return variable_reference2() throws RecognitionException {
-        variable_reference2_return retval = new variable_reference2_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token name=null;
-        Token LEFT_CURLY38=null;
-        Token RIGHT_CURLY39=null;
-
-        Object name_tree=null;
-        Object LEFT_CURLY38_tree=null;
-        Object RIGHT_CURLY39_tree=null;
-        RewriteRuleTokenStream stream_RIGHT_CURLY=new RewriteRuleTokenStream(adaptor,"token RIGHT_CURLY");
-        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
-        RewriteRuleTokenStream stream_LEFT_CURLY=new RewriteRuleTokenStream(adaptor,"token LEFT_CURLY");
-
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:241:4: ( LEFT_CURLY name= LITERAL RIGHT_CURLY -> ^( VT_VAR_REF $name) )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:241:4: LEFT_CURLY name= LITERAL RIGHT_CURLY
-            {
-            LEFT_CURLY38=(Token)input.LT(1);
-            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_variable_reference21224); if (failed) return retval;
-            if ( backtracking==0 ) stream_LEFT_CURLY.add(LEFT_CURLY38);
-
-            name=(Token)input.LT(1);
-            match(input,LITERAL,FOLLOW_LITERAL_in_variable_reference21228); if (failed) return retval;
-            if ( backtracking==0 ) stream_LITERAL.add(name);
-
-            RIGHT_CURLY39=(Token)input.LT(1);
-            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_reference21230); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_CURLY.add(RIGHT_CURLY39);
-
-
-            // AST REWRITE
-            // elements: name
-            // token labels: name
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleTokenStream stream_name=new RewriteRuleTokenStream(adaptor,"token name",name);
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 242:2: -> ^( VT_VAR_REF $name)
-            {
-                // src/main/resources/org/drools/lang/dsl/DSLMap.g:242:5: ^( VT_VAR_REF $name)
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_REF, "VT_VAR_REF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end variable_reference2
-
-    public static class condition_key_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start condition_key
-    // src/main/resources/org/drools/lang/dsl/DSLMap.g:246:1: condition_key : {...}?value= LITERAL -> VT_CONDITION[$value] ;
-    public final condition_key_return condition_key() throws RecognitionException {
-        condition_key_return retval = new condition_key_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token value=null;
-
-        Object value_tree=null;
-        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
-
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:247:4: ({...}?value= LITERAL -> VT_CONDITION[$value] )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:247:4: {...}?value= LITERAL
-            {
-            if ( !(validateIdentifierKey("condition")||validateIdentifierKey("when")) ) {
-                if (backtracking>0) {failed=true; return retval;}
-                throw new FailedPredicateException(input, "condition_key", "validateIdentifierKey(\"condition\")||validateIdentifierKey(\"when\")");
-            }
-            value=(Token)input.LT(1);
-            match(input,LITERAL,FOLLOW_LITERAL_in_condition_key1259); if (failed) return retval;
-            if ( backtracking==0 ) stream_LITERAL.add(value);
-
-
-            // AST REWRITE
-            // elements: 
-            // token labels: 
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 248:2: -> VT_CONDITION[$value]
-            {
-                adaptor.addChild(root_0, adaptor.create(VT_CONDITION, value));
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end condition_key
-
-    public static class consequence_key_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start consequence_key
-    // src/main/resources/org/drools/lang/dsl/DSLMap.g:251:1: consequence_key : {...}?value= LITERAL -> VT_CONSEQUENCE[$value] ;
-    public final consequence_key_return consequence_key() throws RecognitionException {
-        consequence_key_return retval = new consequence_key_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token value=null;
-
-        Object value_tree=null;
-        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
-
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:252:4: ({...}?value= LITERAL -> VT_CONSEQUENCE[$value] )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:252:4: {...}?value= LITERAL
-            {
-            if ( !(validateIdentifierKey("consequence")||validateIdentifierKey("then")) ) {
-                if (backtracking>0) {failed=true; return retval;}
-                throw new FailedPredicateException(input, "consequence_key", "validateIdentifierKey(\"consequence\")||validateIdentifierKey(\"then\")");
-            }
-            value=(Token)input.LT(1);
-            match(input,LITERAL,FOLLOW_LITERAL_in_consequence_key1282); if (failed) return retval;
-            if ( backtracking==0 ) stream_LITERAL.add(value);
-
-
-            // AST REWRITE
-            // elements: 
-            // token labels: 
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 253:2: -> VT_CONSEQUENCE[$value]
-            {
-                adaptor.addChild(root_0, adaptor.create(VT_CONSEQUENCE, value));
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end consequence_key
-
-    public static class keyword_key_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start keyword_key
-    // src/main/resources/org/drools/lang/dsl/DSLMap.g:256:1: keyword_key : {...}?value= LITERAL -> VT_KEYWORD[$value] ;
-    public final keyword_key_return keyword_key() throws RecognitionException {
-        keyword_key_return retval = new keyword_key_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token value=null;
-
-        Object value_tree=null;
-        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
-
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:257:4: ({...}?value= LITERAL -> VT_KEYWORD[$value] )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:257:4: {...}?value= LITERAL
-            {
-            if ( !(validateIdentifierKey("keyword")) ) {
-                if (backtracking>0) {failed=true; return retval;}
-                throw new FailedPredicateException(input, "keyword_key", "validateIdentifierKey(\"keyword\")");
-            }
-            value=(Token)input.LT(1);
-            match(input,LITERAL,FOLLOW_LITERAL_in_keyword_key1305); if (failed) return retval;
-            if ( backtracking==0 ) stream_LITERAL.add(value);
-
-
-            // AST REWRITE
-            // elements: 
-            // token labels: 
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 258:2: -> VT_KEYWORD[$value]
-            {
-                adaptor.addChild(root_0, adaptor.create(VT_KEYWORD, value));
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end keyword_key
-
-    public static class any_key_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start any_key
-    // src/main/resources/org/drools/lang/dsl/DSLMap.g:261:1: any_key : {...}?value= LITERAL -> VT_ANY[$value] ;
-    public final any_key_return any_key() throws RecognitionException {
-        any_key_return retval = new any_key_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token value=null;
-
-        Object value_tree=null;
-        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
-
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:262:4: ({...}?value= LITERAL -> VT_ANY[$value] )
-            // src/main/resources/org/drools/lang/dsl/DSLMap.g:262:4: {...}?value= LITERAL
-            {
-            if ( !(validateIdentifierKey("*")) ) {
-                if (backtracking>0) {failed=true; return retval;}
-                throw new FailedPredicateException(input, "any_key", "validateIdentifierKey(\"*\")");
-            }
-            value=(Token)input.LT(1);
-            match(input,LITERAL,FOLLOW_LITERAL_in_any_key1328); if (failed) return retval;
-            if ( backtracking==0 ) stream_LITERAL.add(value);
-
-
-            // AST REWRITE
-            // elements: 
-            // token labels: 
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 263:2: -> VT_ANY[$value]
-            {
-                adaptor.addChild(root_0, adaptor.create(VT_ANY, value));
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end any_key
-
-    // $ANTLR start synpred4
-    public final void synpred4_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/dsl/DSLMap.g:104:24: ( meta_section )
-        // src/main/resources/org/drools/lang/dsl/DSLMap.g:104:24: meta_section
-        {
-        pushFollow(FOLLOW_meta_section_in_synpred4352);
-        meta_section();
-        _fsp--;
-        if (failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred4
-
-    // $ANTLR start synpred6
-    public final void synpred6_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/dsl/DSLMap.g:117:4: ( condition_key )
-        // src/main/resources/org/drools/lang/dsl/DSLMap.g:117:4: condition_key
-        {
-        pushFollow(FOLLOW_condition_key_in_synpred6418);
-        condition_key();
-        _fsp--;
-        if (failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred6
-
-    // $ANTLR start synpred7
-    public final void synpred7_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/dsl/DSLMap.g:118:5: ( consequence_key )
-        // src/main/resources/org/drools/lang/dsl/DSLMap.g:118:5: consequence_key
-        {
-        pushFollow(FOLLOW_consequence_key_in_synpred7427);
-        consequence_key();
-        _fsp--;
-        if (failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred7
-
-    // $ANTLR start synpred8
-    public final void synpred8_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/dsl/DSLMap.g:119:5: ( keyword_key )
-        // src/main/resources/org/drools/lang/dsl/DSLMap.g:119:5: keyword_key
-        {
-        pushFollow(FOLLOW_keyword_key_in_synpred8435);
-        keyword_key();
-        _fsp--;
-        if (failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred8
-
-    // $ANTLR start synpred12
-    public final void synpred12_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/dsl/DSLMap.g:149:4: ( literal )
-        // src/main/resources/org/drools/lang/dsl/DSLMap.g:149:4: literal
-        {
-        pushFollow(FOLLOW_literal_in_synpred12579);
-        literal();
-        _fsp--;
-        if (failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred12
-
-    // $ANTLR start synpred15
-    public final void synpred15_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/dsl/DSLMap.g:167:5: ( literal )
-        // src/main/resources/org/drools/lang/dsl/DSLMap.g:167:5: literal
-        {
-        pushFollow(FOLLOW_literal_in_synpred15654);
-        literal();
-        _fsp--;
-        if (failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred15
-
-    // $ANTLR start synpred16
-    public final void synpred16_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/dsl/DSLMap.g:167:13: ( EQUALS )
-        // src/main/resources/org/drools/lang/dsl/DSLMap.g:167:13: EQUALS
-        {
-        match(input,EQUALS,FOLLOW_EQUALS_in_synpred16656); if (failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred16
-
-    // $ANTLR start synpred17
-    public final void synpred17_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/dsl/DSLMap.g:167:20: ( COMMA )
-        // src/main/resources/org/drools/lang/dsl/DSLMap.g:167:20: COMMA
-        {
-        match(input,COMMA,FOLLOW_COMMA_in_synpred17658); if (failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred17
-
-    // $ANTLR start synpred21
-    public final void synpred21_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/dsl/DSLMap.g:186:18: ( COLON LITERAL )
-        // src/main/resources/org/drools/lang/dsl/DSLMap.g:186:18: COLON LITERAL
-        {
-        match(input,COLON,FOLLOW_COLON_in_synpred21726); if (failed) return ;
-        match(input,LITERAL,FOLLOW_LITERAL_in_synpred21730); if (failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred21
-
-    // $ANTLR start synpred24
-    public final void synpred24_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/dsl/DSLMap.g:214:13: ( literal )
-        // src/main/resources/org/drools/lang/dsl/DSLMap.g:214:13: literal
-        {
-        pushFollow(FOLLOW_literal_in_synpred241060);
-        literal();
-        _fsp--;
-        if (failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred24
-
-    // $ANTLR start synpred26
-    public final void synpred26_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/dsl/DSLMap.g:216:13: ( LEFT_SQUARE pattern RIGHT_SQUARE )
-        // src/main/resources/org/drools/lang/dsl/DSLMap.g:216:13: LEFT_SQUARE pattern RIGHT_SQUARE
-        {
-        match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_synpred261092); if (failed) return ;
-        pushFollow(FOLLOW_pattern_in_synpred261094);
-        pattern();
-        _fsp--;
-        if (failed) return ;
-        match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_synpred261096); if (failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred26
-
-    public final boolean synpred12() {
-        backtracking++;
-        int start = input.mark();
-        try {
-            synpred12_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !failed;
-        input.rewind(start);
-        backtracking--;
-        failed=false;
-        return success;
-    }
-    public final boolean synpred4() {
-        backtracking++;
-        int start = input.mark();
-        try {
-            synpred4_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !failed;
-        input.rewind(start);
-        backtracking--;
-        failed=false;
-        return success;
-    }
-    public final boolean synpred16() {
-        backtracking++;
-        int start = input.mark();
-        try {
-            synpred16_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !failed;
-        input.rewind(start);
-        backtracking--;
-        failed=false;
-        return success;
-    }
-    public final boolean synpred7() {
-        backtracking++;
-        int start = input.mark();
-        try {
-            synpred7_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !failed;
-        input.rewind(start);
-        backtracking--;
-        failed=false;
-        return success;
-    }
-    public final boolean synpred24() {
-        backtracking++;
-        int start = input.mark();
-        try {
-            synpred24_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !failed;
-        input.rewind(start);
-        backtracking--;
-        failed=false;
-        return success;
-    }
-    public final boolean synpred26() {
-        backtracking++;
-        int start = input.mark();
-        try {
-            synpred26_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !failed;
-        input.rewind(start);
-        backtracking--;
-        failed=false;
-        return success;
-    }
-    public final boolean synpred17() {
-        backtracking++;
-        int start = input.mark();
-        try {
-            synpred17_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !failed;
-        input.rewind(start);
-        backtracking--;
-        failed=false;
-        return success;
-    }
-    public final boolean synpred6() {
-        backtracking++;
-        int start = input.mark();
-        try {
-            synpred6_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !failed;
-        input.rewind(start);
-        backtracking--;
-        failed=false;
-        return success;
-    }
-    public final boolean synpred15() {
-        backtracking++;
-        int start = input.mark();
-        try {
-            synpred15_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !failed;
-        input.rewind(start);
-        backtracking--;
-        failed=false;
-        return success;
-    }
-    public final boolean synpred8() {
-        backtracking++;
-        int start = input.mark();
-        try {
-            synpred8_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !failed;
-        input.rewind(start);
-        backtracking--;
-        failed=false;
-        return success;
-    }
-    public final boolean synpred21() {
-        backtracking++;
-        int start = input.mark();
-        try {
-            synpred21_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !failed;
-        input.rewind(start);
-        backtracking--;
-        failed=false;
-        return success;
-    }
-
-
- 
-
-    public static final BitSet FOLLOW_statement_in_mapping_file273 = new BitSet(new long[]{0x0000000001600002L});
-    public static final BitSet FOLLOW_entry_in_statement296 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_comment_in_statement303 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EOL_in_statement309 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LINE_COMMENT_in_comment325 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_scope_section_in_entry350 = new BitSet(new long[]{0x0000000037000000L});
-    public static final BitSet FOLLOW_meta_section_in_entry352 = new BitSet(new long[]{0x0000000037000000L});
-    public static final BitSet FOLLOW_key_section_in_entry355 = new BitSet(new long[]{0x0000000000800000L});
-    public static final BitSet FOLLOW_EQUALS_in_entry357 = new BitSet(new long[]{0x000000003F800000L});
-    public static final BitSet FOLLOW_value_section_in_entry359 = new BitSet(new long[]{0x0000000000200000L});
-    public static final BitSet FOLLOW_EOL_in_entry362 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EOF_in_entry364 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_scope_section410 = new BitSet(new long[]{0x0000000004000000L});
-    public static final BitSet FOLLOW_condition_key_in_scope_section418 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_consequence_key_in_scope_section427 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_keyword_key_in_scope_section435 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_any_key_in_scope_section443 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_scope_section451 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_meta_section491 = new BitSet(new long[]{0x0000000006000000L});
-    public static final BitSet FOLLOW_LITERAL_in_meta_section493 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_meta_section496 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_key_sentence_in_key_section520 = new BitSet(new long[]{0x0000000037000002L});
-    public static final BitSet FOLLOW_variable_definition_in_key_sentence551 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_key_chunk_in_key_sentence558 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_in_key_chunk579 = new BitSet(new long[]{0x0000000017000002L});
-    public static final BitSet FOLLOW_value_sentence_in_value_section594 = new BitSet(new long[]{0x000000003F800002L});
-    public static final BitSet FOLLOW_variable_reference_in_value_sentence625 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_value_chunk_in_value_sentence632 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_in_value_chunk654 = new BitSet(new long[]{0x000000001F800002L});
-    public static final BitSet FOLLOW_EQUALS_in_value_chunk656 = new BitSet(new long[]{0x000000001F800002L});
-    public static final BitSet FOLLOW_COMMA_in_value_chunk658 = new BitSet(new long[]{0x000000001F800002L});
-    public static final BitSet FOLLOW_set_in_literal674 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_definition710 = new BitSet(new long[]{0x0000000004000000L});
-    public static final BitSet FOLLOW_LITERAL_in_variable_definition721 = new BitSet(new long[]{0x0000000050000000L});
-    public static final BitSet FOLLOW_COLON_in_variable_definition726 = new BitSet(new long[]{0x0000000004000000L});
-    public static final BitSet FOLLOW_LITERAL_in_variable_definition730 = new BitSet(new long[]{0x0000000010000000L});
-    public static final BitSet FOLLOW_COLON_in_variable_definition734 = new BitSet(new long[]{0x0000000037000000L});
-    public static final BitSet FOLLOW_pattern_in_variable_definition738 = new BitSet(new long[]{0x0000000040000000L});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_definition747 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_definition2990 = new BitSet(new long[]{0x0000000004000000L});
-    public static final BitSet FOLLOW_LITERAL_in_variable_definition2994 = new BitSet(new long[]{0x0000000050000000L});
-    public static final BitSet FOLLOW_COLON_in_variable_definition2998 = new BitSet(new long[]{0x0000000037000000L});
-    public static final BitSet FOLLOW_pattern_in_variable_definition21002 = new BitSet(new long[]{0x0000000040000000L});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_definition21009 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_in_pattern1060 = new BitSet(new long[]{0x0000000037000002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_pattern1074 = new BitSet(new long[]{0x0000000017000000L});
-    public static final BitSet FOLLOW_literal_in_pattern1076 = new BitSet(new long[]{0x0000000040000000L});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_pattern1078 = new BitSet(new long[]{0x0000000037000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_pattern1092 = new BitSet(new long[]{0x0000000037000000L});
-    public static final BitSet FOLLOW_pattern_in_pattern1094 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_pattern1096 = new BitSet(new long[]{0x0000000037000002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_reference1131 = new BitSet(new long[]{0x0000000004000000L});
-    public static final BitSet FOLLOW_LITERAL_in_variable_reference1142 = new BitSet(new long[]{0x0000000040000000L});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_reference1146 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_reference21224 = new BitSet(new long[]{0x0000000004000000L});
-    public static final BitSet FOLLOW_LITERAL_in_variable_reference21228 = new BitSet(new long[]{0x0000000040000000L});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_reference21230 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LITERAL_in_condition_key1259 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LITERAL_in_consequence_key1282 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LITERAL_in_keyword_key1305 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LITERAL_in_any_key1328 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_meta_section_in_synpred4352 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_condition_key_in_synpred6418 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_consequence_key_in_synpred7427 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_keyword_key_in_synpred8435 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_in_synpred12579 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_in_synpred15654 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EQUALS_in_synpred16656 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_COMMA_in_synpred17658 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_COLON_in_synpred21726 = new BitSet(new long[]{0x0000000004000000L});
-    public static final BitSet FOLLOW_LITERAL_in_synpred21730 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_in_synpred241060 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_synpred261092 = new BitSet(new long[]{0x0000000037000000L});
-    public static final BitSet FOLLOW_pattern_in_synpred261094 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_synpred261096 = new BitSet(new long[]{0x0000000000000002L});
-
+              		
+            }
+            name=(Token)match(input,LITERAL,FOLLOW_LITERAL_in_variable_reference1142); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LITERAL.add(name);
+
+            rc=(Token)match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_reference1146); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_CURLY.add(rc);
+
+            if ( state.backtracking==0 ) {
+              if(((CommonToken)rc).getStopIndex() < ((CommonToken)input.LT(1)).getStartIndex() - 1) hasSpaceAfter = true;
+            }
+
+
+            // AST REWRITE
+            // elements: name, name, name, name
+            // token labels: name
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleTokenStream stream_name=new RewriteRuleTokenStream(adaptor,"token name",name);
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 233:2: -> {hasSpaceBefore && hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name) VT_SPACE
+            if (hasSpaceBefore && hasSpaceAfter) {
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_SPACE, "VT_SPACE"));
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:233:49: ^( VT_VAR_REF $name)
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_VAR_REF, "VT_VAR_REF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.nextNode());
+
+                adaptor.addChild(root_0, root_1);
+                }
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_SPACE, "VT_SPACE"));
+
+            }
+            else // 234:2: -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name)
+            if (hasSpaceBefore && !hasSpaceAfter) {
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_SPACE, "VT_SPACE"));
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:234:50: ^( VT_VAR_REF $name)
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_VAR_REF, "VT_VAR_REF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.nextNode());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+            else // 235:2: -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_REF $name) VT_SPACE
+            if (!hasSpaceBefore && hasSpaceAfter) {
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:235:42: ^( VT_VAR_REF $name)
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_VAR_REF, "VT_VAR_REF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.nextNode());
+
+                adaptor.addChild(root_0, root_1);
+                }
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_SPACE, "VT_SPACE"));
+
+            }
+            else // 236:2: -> ^( VT_VAR_REF $name)
+            {
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:236:6: ^( VT_VAR_REF $name)
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_VAR_REF, "VT_VAR_REF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.nextNode());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "variable_reference"
+
+    public static class variable_reference2_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "variable_reference2"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:240:1: variable_reference2 : LEFT_CURLY name= LITERAL RIGHT_CURLY -> ^( VT_VAR_REF $name) ;
+    public final DSLMapParser.variable_reference2_return variable_reference2() throws RecognitionException {
+        DSLMapParser.variable_reference2_return retval = new DSLMapParser.variable_reference2_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token name=null;
+        Token LEFT_CURLY38=null;
+        Token RIGHT_CURLY39=null;
+
+        Object name_tree=null;
+        Object LEFT_CURLY38_tree=null;
+        Object RIGHT_CURLY39_tree=null;
+        RewriteRuleTokenStream stream_RIGHT_CURLY=new RewriteRuleTokenStream(adaptor,"token RIGHT_CURLY");
+        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
+        RewriteRuleTokenStream stream_LEFT_CURLY=new RewriteRuleTokenStream(adaptor,"token LEFT_CURLY");
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:241:2: ( LEFT_CURLY name= LITERAL RIGHT_CURLY -> ^( VT_VAR_REF $name) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:241:4: LEFT_CURLY name= LITERAL RIGHT_CURLY
+            {
+            LEFT_CURLY38=(Token)match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_variable_reference21224); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_CURLY.add(LEFT_CURLY38);
+
+            name=(Token)match(input,LITERAL,FOLLOW_LITERAL_in_variable_reference21228); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LITERAL.add(name);
+
+            RIGHT_CURLY39=(Token)match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_reference21230); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_CURLY.add(RIGHT_CURLY39);
+
+
+
+            // AST REWRITE
+            // elements: name
+            // token labels: name
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleTokenStream stream_name=new RewriteRuleTokenStream(adaptor,"token name",name);
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 242:2: -> ^( VT_VAR_REF $name)
+            {
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:242:5: ^( VT_VAR_REF $name)
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_VAR_REF, "VT_VAR_REF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.nextNode());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "variable_reference2"
+
+    public static class condition_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "condition_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:246:1: condition_key : {...}?value= LITERAL -> VT_CONDITION[$value] ;
+    public final DSLMapParser.condition_key_return condition_key() throws RecognitionException {
+        DSLMapParser.condition_key_return retval = new DSLMapParser.condition_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token value=null;
+
+        Object value_tree=null;
+        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:247:2: ({...}?value= LITERAL -> VT_CONDITION[$value] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:247:4: {...}?value= LITERAL
+            {
+            if ( !((validateIdentifierKey("condition")||validateIdentifierKey("when"))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "condition_key", "validateIdentifierKey(\"condition\")||validateIdentifierKey(\"when\")");
+            }
+            value=(Token)match(input,LITERAL,FOLLOW_LITERAL_in_condition_key1259); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LITERAL.add(value);
+
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 248:2: -> VT_CONDITION[$value]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_CONDITION, value));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "condition_key"
+
+    public static class consequence_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "consequence_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:251:1: consequence_key : {...}?value= LITERAL -> VT_CONSEQUENCE[$value] ;
+    public final DSLMapParser.consequence_key_return consequence_key() throws RecognitionException {
+        DSLMapParser.consequence_key_return retval = new DSLMapParser.consequence_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token value=null;
+
+        Object value_tree=null;
+        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:252:2: ({...}?value= LITERAL -> VT_CONSEQUENCE[$value] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:252:4: {...}?value= LITERAL
+            {
+            if ( !((validateIdentifierKey("consequence")||validateIdentifierKey("then"))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "consequence_key", "validateIdentifierKey(\"consequence\")||validateIdentifierKey(\"then\")");
+            }
+            value=(Token)match(input,LITERAL,FOLLOW_LITERAL_in_consequence_key1282); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LITERAL.add(value);
+
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 253:2: -> VT_CONSEQUENCE[$value]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_CONSEQUENCE, value));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "consequence_key"
+
+    public static class keyword_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "keyword_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:256:1: keyword_key : {...}?value= LITERAL -> VT_KEYWORD[$value] ;
+    public final DSLMapParser.keyword_key_return keyword_key() throws RecognitionException {
+        DSLMapParser.keyword_key_return retval = new DSLMapParser.keyword_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token value=null;
+
+        Object value_tree=null;
+        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:257:2: ({...}?value= LITERAL -> VT_KEYWORD[$value] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:257:4: {...}?value= LITERAL
+            {
+            if ( !((validateIdentifierKey("keyword"))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "keyword_key", "validateIdentifierKey(\"keyword\")");
+            }
+            value=(Token)match(input,LITERAL,FOLLOW_LITERAL_in_keyword_key1305); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LITERAL.add(value);
+
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 258:2: -> VT_KEYWORD[$value]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_KEYWORD, value));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "keyword_key"
+
+    public static class any_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "any_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:261:1: any_key : {...}?value= LITERAL -> VT_ANY[$value] ;
+    public final DSLMapParser.any_key_return any_key() throws RecognitionException {
+        DSLMapParser.any_key_return retval = new DSLMapParser.any_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token value=null;
+
+        Object value_tree=null;
+        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:262:2: ({...}?value= LITERAL -> VT_ANY[$value] )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:262:4: {...}?value= LITERAL
+            {
+            if ( !((validateIdentifierKey("*"))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "any_key", "validateIdentifierKey(\"*\")");
+            }
+            value=(Token)match(input,LITERAL,FOLLOW_LITERAL_in_any_key1328); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LITERAL.add(value);
+
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 263:2: -> VT_ANY[$value]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_ANY, value));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "any_key"
+
+    // $ANTLR start synpred4_DSLMap
+    public final void synpred4_DSLMap_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:104:24: ( meta_section )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:104:24: meta_section
+        {
+        pushFollow(FOLLOW_meta_section_in_synpred4_DSLMap352);
+        meta_section();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred4_DSLMap
+
+    // $ANTLR start synpred6_DSLMap
+    public final void synpred6_DSLMap_fragment() throws RecognitionException {   
+        DSLMapParser.condition_key_return value1 = null;
+
+
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:117:4: (value1= condition_key )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:117:4: value1= condition_key
+        {
+        pushFollow(FOLLOW_condition_key_in_synpred6_DSLMap418);
+        value1=condition_key();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred6_DSLMap
+
+    // $ANTLR start synpred7_DSLMap
+    public final void synpred7_DSLMap_fragment() throws RecognitionException {   
+        DSLMapParser.consequence_key_return value2 = null;
+
+
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:118:5: (value2= consequence_key )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:118:5: value2= consequence_key
+        {
+        pushFollow(FOLLOW_consequence_key_in_synpred7_DSLMap427);
+        value2=consequence_key();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred7_DSLMap
+
+    // $ANTLR start synpred8_DSLMap
+    public final void synpred8_DSLMap_fragment() throws RecognitionException {   
+        DSLMapParser.keyword_key_return value3 = null;
+
+
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:119:5: (value3= keyword_key )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:119:5: value3= keyword_key
+        {
+        pushFollow(FOLLOW_keyword_key_in_synpred8_DSLMap435);
+        value3=keyword_key();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred8_DSLMap
+
+    // $ANTLR start synpred12_DSLMap
+    public final void synpred12_DSLMap_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:149:4: ( literal )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:149:4: literal
+        {
+        pushFollow(FOLLOW_literal_in_synpred12_DSLMap579);
+        literal();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred12_DSLMap
+
+    // $ANTLR start synpred15_DSLMap
+    public final void synpred15_DSLMap_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:167:5: ( literal )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:167:5: literal
+        {
+        pushFollow(FOLLOW_literal_in_synpred15_DSLMap654);
+        literal();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred15_DSLMap
+
+    // $ANTLR start synpred16_DSLMap
+    public final void synpred16_DSLMap_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:167:13: ( EQUALS )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:167:13: EQUALS
+        {
+        match(input,EQUALS,FOLLOW_EQUALS_in_synpred16_DSLMap656); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred16_DSLMap
+
+    // $ANTLR start synpred17_DSLMap
+    public final void synpred17_DSLMap_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:167:20: ( COMMA )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:167:20: COMMA
+        {
+        match(input,COMMA,FOLLOW_COMMA_in_synpred17_DSLMap658); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred17_DSLMap
+
+    // $ANTLR start synpred21_DSLMap
+    public final void synpred21_DSLMap_fragment() throws RecognitionException {   
+        Token q=null;
+
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:186:18: ( COLON q= LITERAL )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:186:18: COLON q= LITERAL
+        {
+        match(input,COLON,FOLLOW_COLON_in_synpred21_DSLMap726); if (state.failed) return ;
+        q=(Token)match(input,LITERAL,FOLLOW_LITERAL_in_synpred21_DSLMap730); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred21_DSLMap
+
+    // $ANTLR start synpred24_DSLMap
+    public final void synpred24_DSLMap_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:214:13: ( literal )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:214:13: literal
+        {
+        pushFollow(FOLLOW_literal_in_synpred24_DSLMap1060);
+        literal();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred24_DSLMap
+
+    // $ANTLR start synpred26_DSLMap
+    public final void synpred26_DSLMap_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:216:13: ( LEFT_SQUARE pattern RIGHT_SQUARE )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:216:13: LEFT_SQUARE pattern RIGHT_SQUARE
+        {
+        match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_synpred26_DSLMap1092); if (state.failed) return ;
+        pushFollow(FOLLOW_pattern_in_synpred26_DSLMap1094);
+        pattern();
+
+        state._fsp--;
+        if (state.failed) return ;
+        match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_synpred26_DSLMap1096); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred26_DSLMap
+
+    // Delegated rules
+
+    public final boolean synpred21_DSLMap() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred21_DSLMap_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred15_DSLMap() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred15_DSLMap_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred12_DSLMap() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred12_DSLMap_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred24_DSLMap() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred24_DSLMap_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred7_DSLMap() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred7_DSLMap_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred6_DSLMap() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred6_DSLMap_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred17_DSLMap() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred17_DSLMap_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred8_DSLMap() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred8_DSLMap_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred26_DSLMap() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred26_DSLMap_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred4_DSLMap() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred4_DSLMap_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred16_DSLMap() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred16_DSLMap_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+
+
+ 
+
+    public static final BitSet FOLLOW_statement_in_mapping_file273 = new BitSet(new long[]{0x0000000001600002L});
+    public static final BitSet FOLLOW_entry_in_statement296 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_comment_in_statement303 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EOL_in_statement309 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LINE_COMMENT_in_comment325 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_scope_section_in_entry350 = new BitSet(new long[]{0x0000000037000000L});
+    public static final BitSet FOLLOW_meta_section_in_entry352 = new BitSet(new long[]{0x0000000037000000L});
+    public static final BitSet FOLLOW_key_section_in_entry355 = new BitSet(new long[]{0x0000000000800000L});
+    public static final BitSet FOLLOW_EQUALS_in_entry357 = new BitSet(new long[]{0x000000003F800000L});
+    public static final BitSet FOLLOW_value_section_in_entry359 = new BitSet(new long[]{0x0000000000200000L});
+    public static final BitSet FOLLOW_EOL_in_entry362 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EOF_in_entry364 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_scope_section410 = new BitSet(new long[]{0x0000000004000000L});
+    public static final BitSet FOLLOW_condition_key_in_scope_section418 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_consequence_key_in_scope_section427 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_keyword_key_in_scope_section435 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_any_key_in_scope_section443 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_scope_section451 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_meta_section491 = new BitSet(new long[]{0x0000000006000000L});
+    public static final BitSet FOLLOW_LITERAL_in_meta_section493 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_meta_section496 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_key_sentence_in_key_section520 = new BitSet(new long[]{0x0000000037000002L});
+    public static final BitSet FOLLOW_variable_definition_in_key_sentence551 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_key_chunk_in_key_sentence558 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_in_key_chunk579 = new BitSet(new long[]{0x0000000037000002L});
+    public static final BitSet FOLLOW_value_sentence_in_value_section594 = new BitSet(new long[]{0x000000003F800002L});
+    public static final BitSet FOLLOW_variable_reference_in_value_sentence625 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_value_chunk_in_value_sentence632 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_in_value_chunk654 = new BitSet(new long[]{0x000000003F800002L});
+    public static final BitSet FOLLOW_EQUALS_in_value_chunk656 = new BitSet(new long[]{0x000000003F800002L});
+    public static final BitSet FOLLOW_COMMA_in_value_chunk658 = new BitSet(new long[]{0x000000003F800002L});
+    public static final BitSet FOLLOW_set_in_literal674 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_definition710 = new BitSet(new long[]{0x0000000004000000L});
+    public static final BitSet FOLLOW_LITERAL_in_variable_definition721 = new BitSet(new long[]{0x0000000050000000L});
+    public static final BitSet FOLLOW_COLON_in_variable_definition726 = new BitSet(new long[]{0x0000000004000000L});
+    public static final BitSet FOLLOW_LITERAL_in_variable_definition730 = new BitSet(new long[]{0x0000000010000000L});
+    public static final BitSet FOLLOW_COLON_in_variable_definition734 = new BitSet(new long[]{0x0000000037000000L});
+    public static final BitSet FOLLOW_pattern_in_variable_definition738 = new BitSet(new long[]{0x0000000040000000L});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_definition747 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_definition2990 = new BitSet(new long[]{0x0000000004000000L});
+    public static final BitSet FOLLOW_LITERAL_in_variable_definition2994 = new BitSet(new long[]{0x0000000050000000L});
+    public static final BitSet FOLLOW_COLON_in_variable_definition2998 = new BitSet(new long[]{0x0000000037000000L});
+    public static final BitSet FOLLOW_pattern_in_variable_definition21002 = new BitSet(new long[]{0x0000000040000000L});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_definition21009 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_in_pattern1060 = new BitSet(new long[]{0x0000000037000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_pattern1074 = new BitSet(new long[]{0x0000000037000000L});
+    public static final BitSet FOLLOW_literal_in_pattern1076 = new BitSet(new long[]{0x0000000040000000L});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_pattern1078 = new BitSet(new long[]{0x0000000037000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_pattern1092 = new BitSet(new long[]{0x0000000037000000L});
+    public static final BitSet FOLLOW_pattern_in_pattern1094 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_pattern1096 = new BitSet(new long[]{0x0000000037000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_reference1131 = new BitSet(new long[]{0x0000000004000000L});
+    public static final BitSet FOLLOW_LITERAL_in_variable_reference1142 = new BitSet(new long[]{0x0000000040000000L});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_reference1146 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_reference21224 = new BitSet(new long[]{0x0000000004000000L});
+    public static final BitSet FOLLOW_LITERAL_in_variable_reference21228 = new BitSet(new long[]{0x0000000040000000L});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_reference21230 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LITERAL_in_condition_key1259 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LITERAL_in_consequence_key1282 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LITERAL_in_keyword_key1305 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LITERAL_in_any_key1328 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_meta_section_in_synpred4_DSLMap352 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_condition_key_in_synpred6_DSLMap418 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_consequence_key_in_synpred7_DSLMap427 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_keyword_key_in_synpred8_DSLMap435 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_in_synpred12_DSLMap579 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_in_synpred15_DSLMap654 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EQUALS_in_synpred16_DSLMap656 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_COMMA_in_synpred17_DSLMap658 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_COLON_in_synpred21_DSLMap726 = new BitSet(new long[]{0x0000000004000000L});
+    public static final BitSet FOLLOW_LITERAL_in_synpred21_DSLMap730 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_in_synpred24_DSLMap1060 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_synpred26_DSLMap1092 = new BitSet(new long[]{0x0000000037000000L});
+    public static final BitSet FOLLOW_pattern_in_synpred26_DSLMap1094 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_synpred26_DSLMap1096 = new BitSet(new long[]{0x0000000000000002L});
+
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapWalker.java
===================================================================
--- labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapWalker.java	2008-11-13 00:09:49 UTC (rev 23848)
+++ labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapWalker.java	2008-11-13 03:06:09 UTC (rev 23849)
@@ -1,1040 +1,1050 @@
-// $ANTLR 3.0 src/main/resources/org/drools/lang/dsl/DSLMapWalker.g 2008-10-22 23:57:51
+// $ANTLR 3.1.1 /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g 2008-11-13 00:53:55
 
 	package org.drools.lang.dsl;
 	
+	import java.util.Map;
 	import java.util.HashMap;
-import java.util.Map;
-import java.util.Stack;
-
-import org.antlr.runtime.BitSet;
-import org.antlr.runtime.EarlyExitException;
-import org.antlr.runtime.NoViableAltException;
-import org.antlr.runtime.RecognitionException;
-import org.antlr.runtime.Token;
-import org.antlr.runtime.tree.CommonTree;
-import org.antlr.runtime.tree.TreeNodeStream;
-import org.antlr.runtime.tree.TreeParser;
-
-public class DSLMapWalker extends TreeParser {
-    public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "VT_DSL_GRAMMAR", "VT_COMMENT", "VT_ENTRY", "VT_SCOPE", "VT_CONDITION", "VT_CONSEQUENCE", "VT_KEYWORD", "VT_ANY", "VT_META", "VT_ENTRY_KEY", "VT_ENTRY_VAL", "VT_VAR_DEF", "VT_VAR_REF", "VT_LITERAL", "VT_PATTERN", "VT_QUAL", "VT_SPACE", "EOL", "LINE_COMMENT", "EQUALS", "LEFT_SQUARE", "RIGHT_SQUARE", "LITERAL", "COMMA", "COLON", "LEFT_CURLY", "RIGHT_CURLY", "WS", "EscapeSequence", "DOT", "POUND", "MISC"
-    };
-    public static final int COMMA=27;
-    public static final int RIGHT_CURLY=30;
-    public static final int VT_ENTRY_VAL=14;
-    public static final int WS=31;
-    public static final int MISC=35;
-    public static final int VT_META=12;
-    public static final int VT_CONSEQUENCE=9;
-    public static final int VT_SPACE=20;
-    public static final int LINE_COMMENT=22;
-    public static final int VT_ANY=11;
-    public static final int VT_LITERAL=17;
-    public static final int DOT=33;
-    public static final int EQUALS=23;
-    public static final int VT_DSL_GRAMMAR=4;
-    public static final int VT_CONDITION=8;
-    public static final int VT_VAR_DEF=15;
-    public static final int VT_ENTRY=6;
-    public static final int VT_PATTERN=18;
-    public static final int LITERAL=26;
-    public static final int EscapeSequence=32;
-    public static final int VT_COMMENT=5;
-    public static final int EOF=-1;
-    public static final int EOL=21;
-    public static final int LEFT_SQUARE=24;
-    public static final int VT_ENTRY_KEY=13;
-    public static final int VT_SCOPE=7;
-    public static final int COLON=28;
-    public static final int VT_KEYWORD=10;
-    public static final int VT_QUAL=19;
-    public static final int VT_VAR_REF=16;
-    public static final int LEFT_CURLY=29;
-    public static final int POUND=34;
-    public static final int RIGHT_SQUARE=25;
-
-        public DSLMapWalker(TreeNodeStream input) {
-            super(input);
-        }
+	
+
+
+import org.antlr.runtime.*;
+import org.antlr.runtime.tree.*;import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+public class DSLMapWalker extends TreeParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "VT_DSL_GRAMMAR", "VT_COMMENT", "VT_ENTRY", "VT_SCOPE", "VT_CONDITION", "VT_CONSEQUENCE", "VT_KEYWORD", "VT_ANY", "VT_META", "VT_ENTRY_KEY", "VT_ENTRY_VAL", "VT_VAR_DEF", "VT_VAR_REF", "VT_LITERAL", "VT_PATTERN", "VT_QUAL", "VT_SPACE", "EOL", "LINE_COMMENT", "EQUALS", "LEFT_SQUARE", "RIGHT_SQUARE", "LITERAL", "COMMA", "COLON", "LEFT_CURLY", "RIGHT_CURLY", "WS", "EscapeSequence", "DOT", "POUND", "MISC"
+    };
+    public static final int COMMA=27;
+    public static final int RIGHT_CURLY=30;
+    public static final int VT_ENTRY_VAL=14;
+    public static final int WS=31;
+    public static final int MISC=35;
+    public static final int VT_META=12;
+    public static final int VT_CONSEQUENCE=9;
+    public static final int VT_SPACE=20;
+    public static final int LINE_COMMENT=22;
+    public static final int VT_ANY=11;
+    public static final int VT_LITERAL=17;
+    public static final int DOT=33;
+    public static final int EQUALS=23;
+    public static final int VT_DSL_GRAMMAR=4;
+    public static final int VT_CONDITION=8;
+    public static final int VT_VAR_DEF=15;
+    public static final int VT_ENTRY=6;
+    public static final int VT_PATTERN=18;
+    public static final int LITERAL=26;
+    public static final int EscapeSequence=32;
+    public static final int VT_COMMENT=5;
+    public static final int EOF=-1;
+    public static final int EOL=21;
+    public static final int LEFT_SQUARE=24;
+    public static final int VT_ENTRY_KEY=13;
+    public static final int VT_SCOPE=7;
+    public static final int COLON=28;
+    public static final int VT_KEYWORD=10;
+    public static final int VT_QUAL=19;
+    public static final int VT_VAR_REF=16;
+    public static final int LEFT_CURLY=29;
+    public static final int POUND=34;
+    public static final int RIGHT_SQUARE=25;
+
+    // delegates
+    // delegators
+
+
+        public DSLMapWalker(TreeNodeStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public DSLMapWalker(TreeNodeStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return DSLMapWalker.tokenNames; }
+    public String getGrammarFileName() { return "/Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g"; }
+
+
+    protected static class mapping_file_scope {
+        DSLMapping retval;
+    }
+    protected Stack mapping_file_stack = new Stack();
+
+
+    // $ANTLR start "mapping_file"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:17:1: mapping_file returns [DSLMapping mapping] : ^( VT_DSL_GRAMMAR ( valid_entry )* ) ;
+    public final DSLMapping mapping_file() throws RecognitionException {
+        mapping_file_stack.push(new mapping_file_scope());
+        DSLMapping mapping = null;
+
         
-
-    public String[] getTokenNames() { return tokenNames; }
-    public String getGrammarFileName() { return "src/main/resources/org/drools/lang/dsl/DSLMapWalker.g"; }
-
-
-    protected static class mapping_file_scope {
-        DSLMapping retval;
-    }
-    protected Stack mapping_file_stack = new Stack();
-
-
-    // $ANTLR start mapping_file
-    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:17:1: mapping_file returns [DSLMapping mapping] : ^( VT_DSL_GRAMMAR ( valid_entry )* ) ;
-    public final DSLMapping mapping_file() throws RecognitionException {
-        mapping_file_stack.push(new mapping_file_scope());
-        DSLMapping mapping = null;
-
-
         	((mapping_file_scope)mapping_file_stack.peek()).retval = new DefaultDSLMapping() ;
-
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:24:4: ( ^( VT_DSL_GRAMMAR ( valid_entry )* ) )
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:24:4: ^( VT_DSL_GRAMMAR ( valid_entry )* )
-            {
-            match(input,VT_DSL_GRAMMAR,FOLLOW_VT_DSL_GRAMMAR_in_mapping_file54); 
-
-            if ( input.LA(1)==Token.DOWN ) {
-                match(input, Token.DOWN, null); 
-                // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:24:21: ( valid_entry )*
-                loop1:
-                do {
-                    int alt1=2;
-                    int LA1_0 = input.LA(1);
-
-                    if ( ((LA1_0>=VT_COMMENT && LA1_0<=VT_ENTRY)) ) {
-                        alt1=1;
-                    }
-
-
-                    switch (alt1) {
-                	case 1 :
-                	    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:24:21: valid_entry
-                	    {
-                	    pushFollow(FOLLOW_valid_entry_in_mapping_file56);
-                	    valid_entry();
-                	    _fsp--;
-
-
-                	    }
-                	    break;
-
-                	default :
-                	    break loop1;
-                    }
-                } while (true);
-
-
-                match(input, Token.UP, null); 
-            }
-
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:24:2: ( ^( VT_DSL_GRAMMAR ( valid_entry )* ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:24:4: ^( VT_DSL_GRAMMAR ( valid_entry )* )
+            {
+            match(input,VT_DSL_GRAMMAR,FOLLOW_VT_DSL_GRAMMAR_in_mapping_file54); 
+
+            if ( input.LA(1)==Token.DOWN ) {
+                match(input, Token.DOWN, null); 
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:24:21: ( valid_entry )*
+                loop1:
+                do {
+                    int alt1=2;
+                    int LA1_0 = input.LA(1);
+
+                    if ( ((LA1_0>=VT_COMMENT && LA1_0<=VT_ENTRY)) ) {
+                        alt1=1;
+                    }
+
+
+                    switch (alt1) {
+                	case 1 :
+                	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:24:21: valid_entry
+                	    {
+                	    pushFollow(FOLLOW_valid_entry_in_mapping_file56);
+                	    valid_entry();
+
+                	    state._fsp--;
+
+
+                	    }
+                	    break;
+
+                	default :
+                	    break loop1;
+                    }
+                } while (true);
+
+
+                match(input, Token.UP, null); 
+            }
+            
             		mapping = ((mapping_file_scope)mapping_file_stack.peek()).retval;
-            	
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            mapping_file_stack.pop();
-        }
-        return mapping;
-    }
-    // $ANTLR end mapping_file
-
-
-    // $ANTLR start valid_entry
-    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:30:1: valid_entry returns [DSLMappingEntry mappingEntry] : (ent= entry | ^( VT_COMMENT lc= LINE_COMMENT ) );
-    public final DSLMappingEntry valid_entry() throws RecognitionException {
-        DSLMappingEntry mappingEntry = null;
-
-        CommonTree lc=null;
-        DSLMappingEntry ent = null;
-
-
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:31:4: (ent= entry | ^( VT_COMMENT lc= LINE_COMMENT ) )
-            int alt2=2;
-            int LA2_0 = input.LA(1);
-
-            if ( (LA2_0==VT_ENTRY) ) {
-                alt2=1;
-            }
-            else if ( (LA2_0==VT_COMMENT) ) {
-                alt2=2;
-            }
-            else {
-                NoViableAltException nvae =
-                    new NoViableAltException("30:1: valid_entry returns [DSLMappingEntry mappingEntry] : (ent= entry | ^( VT_COMMENT lc= LINE_COMMENT ) );", 2, 0, input);
-
-                throw nvae;
-            }
-            switch (alt2) {
-                case 1 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:31:4: ent= entry
-                    {
-                    pushFollow(FOLLOW_entry_in_valid_entry78);
-                    ent=entry();
-                    _fsp--;
-
-                    mappingEntry = ent; 
-
-                    }
-                    break;
-                case 2 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:32:4: ^( VT_COMMENT lc= LINE_COMMENT )
-                    {
-                    match(input,VT_COMMENT,FOLLOW_VT_COMMENT_in_valid_entry86); 
-
-                    match(input, Token.DOWN, null); 
-                    lc=(CommonTree)input.LT(1);
-                    match(input,LINE_COMMENT,FOLLOW_LINE_COMMENT_in_valid_entry90); 
-
-                    match(input, Token.UP, null); 
-                    mappingEntry = null;
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return mappingEntry;
-    }
-    // $ANTLR end valid_entry
-
-    protected static class entry_scope {
-        Map variables;
-        AntlrDSLMappingEntry retval;
-        int counter;
-        StringBuffer keybuffer;
-        StringBuffer valuebuffer;
-        StringBuffer sentencebuffer;
-    }
-    protected Stack entry_stack = new Stack();
-
-
-    // $ANTLR start entry
-    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:36:1: entry returns [DSLMappingEntry mappingEntry] : ^( VT_ENTRY scope_section ( meta_section )? key_section value_section ) ;
-    public final DSLMappingEntry entry() throws RecognitionException {
-        entry_stack.push(new entry_scope());
-        DSLMappingEntry mappingEntry = null;
-
-
+            	
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            mapping_file_stack.pop();
+        }
+        return mapping;
+    }
+    // $ANTLR end "mapping_file"
+
+
+    // $ANTLR start "valid_entry"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:30:1: valid_entry returns [DSLMappingEntry mappingEntry] : (ent= entry | ^( VT_COMMENT lc= LINE_COMMENT ) );
+    public final DSLMappingEntry valid_entry() throws RecognitionException {
+        DSLMappingEntry mappingEntry = null;
+
+        CommonTree lc=null;
+        DSLMappingEntry ent = null;
+
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:31:2: (ent= entry | ^( VT_COMMENT lc= LINE_COMMENT ) )
+            int alt2=2;
+            int LA2_0 = input.LA(1);
+
+            if ( (LA2_0==VT_ENTRY) ) {
+                alt2=1;
+            }
+            else if ( (LA2_0==VT_COMMENT) ) {
+                alt2=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 2, 0, input);
+
+                throw nvae;
+            }
+            switch (alt2) {
+                case 1 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:31:4: ent= entry
+                    {
+                    pushFollow(FOLLOW_entry_in_valid_entry78);
+                    ent=entry();
+
+                    state._fsp--;
+
+                    mappingEntry = ent; 
+
+                    }
+                    break;
+                case 2 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:32:4: ^( VT_COMMENT lc= LINE_COMMENT )
+                    {
+                    match(input,VT_COMMENT,FOLLOW_VT_COMMENT_in_valid_entry86); 
+
+                    match(input, Token.DOWN, null); 
+                    lc=(CommonTree)match(input,LINE_COMMENT,FOLLOW_LINE_COMMENT_in_valid_entry90); 
+
+                    match(input, Token.UP, null); 
+                    mappingEntry = null;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return mappingEntry;
+    }
+    // $ANTLR end "valid_entry"
+
+    protected static class entry_scope {
+        Map variables;
+        AntlrDSLMappingEntry retval;
+        int counter;
+        StringBuffer keybuffer;
+        StringBuffer valuebuffer;
+        StringBuffer sentencebuffer;
+    }
+    protected Stack entry_stack = new Stack();
+
+
+    // $ANTLR start "entry"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:36:1: entry returns [DSLMappingEntry mappingEntry] : ^( VT_ENTRY scope_section ( meta_section )? key_section value_section ) ;
+    public final DSLMappingEntry entry() throws RecognitionException {
+        entry_stack.push(new entry_scope());
+        DSLMappingEntry mappingEntry = null;
+
+        
         	((entry_scope)entry_stack.peek()).retval = new AntlrDSLMappingEntry() ;
         	((entry_scope)entry_stack.peek()).variables = new HashMap();
         	((entry_scope)entry_stack.peek()).keybuffer = new StringBuffer();
         	((entry_scope)entry_stack.peek()).valuebuffer = new StringBuffer();
         	((entry_scope)entry_stack.peek()).sentencebuffer = new StringBuffer();
-
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:52:4: ( ^( VT_ENTRY scope_section ( meta_section )? key_section value_section ) )
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:52:4: ^( VT_ENTRY scope_section ( meta_section )? key_section value_section )
-            {
-            match(input,VT_ENTRY,FOLLOW_VT_ENTRY_in_entry119); 
-
-            match(input, Token.DOWN, null); 
-            pushFollow(FOLLOW_scope_section_in_entry121);
-            scope_section();
-            _fsp--;
-
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:52:29: ( meta_section )?
-            int alt3=2;
-            int LA3_0 = input.LA(1);
-
-            if ( (LA3_0==VT_META) ) {
-                alt3=1;
-            }
-            switch (alt3) {
-                case 1 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:52:29: meta_section
-                    {
-                    pushFollow(FOLLOW_meta_section_in_entry123);
-                    meta_section();
-                    _fsp--;
-
-
-                    }
-                    break;
-
-            }
-
-            pushFollow(FOLLOW_key_section_in_entry126);
-            key_section();
-            _fsp--;
-
-            ((entry_scope)entry_stack.peek()).retval.variables = ((entry_scope)entry_stack.peek()).variables; ((entry_scope)entry_stack.peek()).retval.setMappingKey(((entry_scope)entry_stack.peek()).keybuffer.toString());((entry_scope)entry_stack.peek()).retval.setSentence(((entry_scope)entry_stack.peek()).sentencebuffer.toString());
-            pushFollow(FOLLOW_value_section_in_entry132);
-            value_section();
-            _fsp--;
-
-
-            match(input, Token.UP, null); 
-
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:52:2: ( ^( VT_ENTRY scope_section ( meta_section )? key_section value_section ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:52:4: ^( VT_ENTRY scope_section ( meta_section )? key_section value_section )
+            {
+            match(input,VT_ENTRY,FOLLOW_VT_ENTRY_in_entry119); 
+
+            match(input, Token.DOWN, null); 
+            pushFollow(FOLLOW_scope_section_in_entry121);
+            scope_section();
+
+            state._fsp--;
+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:52:29: ( meta_section )?
+            int alt3=2;
+            int LA3_0 = input.LA(1);
+
+            if ( (LA3_0==VT_META) ) {
+                alt3=1;
+            }
+            switch (alt3) {
+                case 1 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:52:29: meta_section
+                    {
+                    pushFollow(FOLLOW_meta_section_in_entry123);
+                    meta_section();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+            pushFollow(FOLLOW_key_section_in_entry126);
+            key_section();
+
+            state._fsp--;
+
+            ((entry_scope)entry_stack.peek()).retval.variables = ((entry_scope)entry_stack.peek()).variables; ((entry_scope)entry_stack.peek()).retval.setMappingKey(((entry_scope)entry_stack.peek()).keybuffer.toString());((entry_scope)entry_stack.peek()).retval.setSentence(((entry_scope)entry_stack.peek()).sentencebuffer.toString());
+            pushFollow(FOLLOW_value_section_in_entry132);
+            value_section();
+
+            state._fsp--;
+
+
+            match(input, Token.UP, null); 
+            
             		((entry_scope)entry_stack.peek()).retval.setMappingValue(((entry_scope)entry_stack.peek()).valuebuffer.toString());
             		mappingEntry = ((entry_scope)entry_stack.peek()).retval;
             		((mapping_file_scope)mapping_file_stack.peek()).retval.addEntry(mappingEntry);
-            	
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            entry_stack.pop();
-        }
-        return mappingEntry;
-    }
-    // $ANTLR end entry
-
-
-    // $ANTLR start scope_section
-    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:62:1: scope_section : ^(thescope= VT_SCOPE ( condition_key )? ( consequence_key )? ( keyword_key )? ( any_key )? ) ;
-    public final void scope_section() throws RecognitionException {
-        CommonTree thescope=null;
-
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:4: ( ^(thescope= VT_SCOPE ( condition_key )? ( consequence_key )? ( keyword_key )? ( any_key )? ) )
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:4: ^(thescope= VT_SCOPE ( condition_key )? ( consequence_key )? ( keyword_key )? ( any_key )? )
-            {
-            thescope=(CommonTree)input.LT(1);
-            match(input,VT_SCOPE,FOLLOW_VT_SCOPE_in_scope_section152); 
-
-            if ( input.LA(1)==Token.DOWN ) {
-                match(input, Token.DOWN, null); 
-                // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:24: ( condition_key )?
-                int alt4=2;
-                int LA4_0 = input.LA(1);
-
-                if ( (LA4_0==VT_CONDITION) ) {
-                    alt4=1;
-                }
-                switch (alt4) {
-                    case 1 :
-                        // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:24: condition_key
-                        {
-                        pushFollow(FOLLOW_condition_key_in_scope_section154);
-                        condition_key();
-                        _fsp--;
-
-
-                        }
-                        break;
-
-                }
-
-                // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:39: ( consequence_key )?
-                int alt5=2;
-                int LA5_0 = input.LA(1);
-
-                if ( (LA5_0==VT_CONSEQUENCE) ) {
-                    alt5=1;
-                }
-                switch (alt5) {
-                    case 1 :
-                        // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:39: consequence_key
-                        {
-                        pushFollow(FOLLOW_consequence_key_in_scope_section157);
-                        consequence_key();
-                        _fsp--;
-
-
-                        }
-                        break;
-
-                }
-
-                // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:56: ( keyword_key )?
-                int alt6=2;
-                int LA6_0 = input.LA(1);
-
-                if ( (LA6_0==VT_KEYWORD) ) {
-                    alt6=1;
-                }
-                switch (alt6) {
-                    case 1 :
-                        // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:56: keyword_key
-                        {
-                        pushFollow(FOLLOW_keyword_key_in_scope_section160);
-                        keyword_key();
-                        _fsp--;
-
-
-                        }
-                        break;
-
-                }
-
-                // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:69: ( any_key )?
-                int alt7=2;
-                int LA7_0 = input.LA(1);
-
-                if ( (LA7_0==VT_ANY) ) {
-                    alt7=1;
-                }
-                switch (alt7) {
-                    case 1 :
-                        // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:69: any_key
-                        {
-                        pushFollow(FOLLOW_any_key_in_scope_section163);
-                        any_key();
-                        _fsp--;
-
-
-                        }
-                        break;
-
-                }
-
-
-                match(input, Token.UP, null); 
-            }
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end scope_section
-
-
-    // $ANTLR start meta_section
-    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:68:1: meta_section : ^( VT_META (metalit= LITERAL )? ) ;
-    public final void meta_section() throws RecognitionException {
-        CommonTree metalit=null;
-
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:69:4: ( ^( VT_META (metalit= LITERAL )? ) )
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:69:4: ^( VT_META (metalit= LITERAL )? )
-            {
-            match(input,VT_META,FOLLOW_VT_META_in_meta_section180); 
-
-            if ( input.LA(1)==Token.DOWN ) {
-                match(input, Token.DOWN, null); 
-                // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:69:21: (metalit= LITERAL )?
-                int alt8=2;
-                int LA8_0 = input.LA(1);
-
-                if ( (LA8_0==LITERAL) ) {
-                    alt8=1;
-                }
-                switch (alt8) {
-                    case 1 :
-                        // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:69:21: metalit= LITERAL
-                        {
-                        metalit=(CommonTree)input.LT(1);
-                        match(input,LITERAL,FOLLOW_LITERAL_in_meta_section184); 
-
-                        }
-                        break;
-
-                }
-
-
-                match(input, Token.UP, null); 
-            }
-
-            		if ( metalit == null || metalit.getText() == null || metalit.getText().length() == 0 ) {
+            	
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            entry_stack.pop();
+        }
+        return mappingEntry;
+    }
+    // $ANTLR end "entry"
+
+
+    // $ANTLR start "scope_section"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:62:1: scope_section : ^(thescope= VT_SCOPE ( condition_key )? ( consequence_key )? ( keyword_key )? ( any_key )? ) ;
+    public final void scope_section() throws RecognitionException {
+        CommonTree thescope=null;
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:2: ( ^(thescope= VT_SCOPE ( condition_key )? ( consequence_key )? ( keyword_key )? ( any_key )? ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:4: ^(thescope= VT_SCOPE ( condition_key )? ( consequence_key )? ( keyword_key )? ( any_key )? )
+            {
+            thescope=(CommonTree)match(input,VT_SCOPE,FOLLOW_VT_SCOPE_in_scope_section152); 
+
+            if ( input.LA(1)==Token.DOWN ) {
+                match(input, Token.DOWN, null); 
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:24: ( condition_key )?
+                int alt4=2;
+                int LA4_0 = input.LA(1);
+
+                if ( (LA4_0==VT_CONDITION) ) {
+                    alt4=1;
+                }
+                switch (alt4) {
+                    case 1 :
+                        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:24: condition_key
+                        {
+                        pushFollow(FOLLOW_condition_key_in_scope_section154);
+                        condition_key();
+
+                        state._fsp--;
+
+
+                        }
+                        break;
+
+                }
+
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:39: ( consequence_key )?
+                int alt5=2;
+                int LA5_0 = input.LA(1);
+
+                if ( (LA5_0==VT_CONSEQUENCE) ) {
+                    alt5=1;
+                }
+                switch (alt5) {
+                    case 1 :
+                        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:39: consequence_key
+                        {
+                        pushFollow(FOLLOW_consequence_key_in_scope_section157);
+                        consequence_key();
+
+                        state._fsp--;
+
+
+                        }
+                        break;
+
+                }
+
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:56: ( keyword_key )?
+                int alt6=2;
+                int LA6_0 = input.LA(1);
+
+                if ( (LA6_0==VT_KEYWORD) ) {
+                    alt6=1;
+                }
+                switch (alt6) {
+                    case 1 :
+                        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:56: keyword_key
+                        {
+                        pushFollow(FOLLOW_keyword_key_in_scope_section160);
+                        keyword_key();
+
+                        state._fsp--;
+
+
+                        }
+                        break;
+
+                }
+
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:69: ( any_key )?
+                int alt7=2;
+                int LA7_0 = input.LA(1);
+
+                if ( (LA7_0==VT_ANY) ) {
+                    alt7=1;
+                }
+                switch (alt7) {
+                    case 1 :
+                        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:69: any_key
+                        {
+                        pushFollow(FOLLOW_any_key_in_scope_section163);
+                        any_key();
+
+                        state._fsp--;
+
+
+                        }
+                        break;
+
+                }
+
+
+                match(input, Token.UP, null); 
+            }
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "scope_section"
+
+
+    // $ANTLR start "meta_section"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:68:1: meta_section : ^( VT_META (metalit= LITERAL )? ) ;
+    public final void meta_section() throws RecognitionException {
+        CommonTree metalit=null;
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:69:2: ( ^( VT_META (metalit= LITERAL )? ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:69:4: ^( VT_META (metalit= LITERAL )? )
+            {
+            match(input,VT_META,FOLLOW_VT_META_in_meta_section180); 
+
+            if ( input.LA(1)==Token.DOWN ) {
+                match(input, Token.DOWN, null); 
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:69:21: (metalit= LITERAL )?
+                int alt8=2;
+                int LA8_0 = input.LA(1);
+
+                if ( (LA8_0==LITERAL) ) {
+                    alt8=1;
+                }
+                switch (alt8) {
+                    case 1 :
+                        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:69:21: metalit= LITERAL
+                        {
+                        metalit=(CommonTree)match(input,LITERAL,FOLLOW_LITERAL_in_meta_section184); 
+
+                        }
+                        break;
+
+                }
+
+
+                match(input, Token.UP, null); 
+            }
+            
+            		if ( metalit == null || (metalit!=null?metalit.getText():null) == null || (metalit!=null?metalit.getText():null).length() == 0 ) {
             			((entry_scope)entry_stack.peek()).retval.setMetaData(DSLMappingEntry.EMPTY_METADATA);
             		} else {
-                    		((entry_scope)entry_stack.peek()).retval.setMetaData(new DSLMappingEntry.DefaultDSLEntryMetaData( metalit.getText() ));
+                    		((entry_scope)entry_stack.peek()).retval.setMetaData(new DSLMappingEntry.DefaultDSLEntryMetaData( (metalit!=null?metalit.getText():null) ));
             	        }
-            	
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end meta_section
-
-
-    // $ANTLR start key_section
-    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:79:1: key_section : ^( VT_ENTRY_KEY ( key_sentence )+ ) ;
-    public final void key_section() throws RecognitionException {
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:80:4: ( ^( VT_ENTRY_KEY ( key_sentence )+ ) )
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:80:4: ^( VT_ENTRY_KEY ( key_sentence )+ )
-            {
-            match(input,VT_ENTRY_KEY,FOLLOW_VT_ENTRY_KEY_in_key_section201); 
-
-            match(input, Token.DOWN, null); 
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:80:19: ( key_sentence )+
-            int cnt9=0;
-            loop9:
-            do {
-                int alt9=2;
-                int LA9_0 = input.LA(1);
-
-                if ( (LA9_0==VT_VAR_DEF||LA9_0==VT_LITERAL||LA9_0==VT_SPACE) ) {
-                    alt9=1;
-                }
-
-
-                switch (alt9) {
-            	case 1 :
-            	    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:80:19: key_sentence
-            	    {
-            	    pushFollow(FOLLOW_key_sentence_in_key_section203);
-            	    key_sentence();
-            	    _fsp--;
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt9 >= 1 ) break loop9;
-                        EarlyExitException eee =
-                            new EarlyExitException(9, input);
-                        throw eee;
-                }
-                cnt9++;
-            } while (true);
-
-
-            match(input, Token.UP, null); 
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end key_section
-
-
-    // $ANTLR start key_sentence
-    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:83:1: key_sentence : ( variable_definition | vtl= VT_LITERAL | VT_SPACE );
-    public final void key_sentence() throws RecognitionException {
-        CommonTree vtl=null;
-
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:84:4: ( variable_definition | vtl= VT_LITERAL | VT_SPACE )
-            int alt10=3;
-            switch ( input.LA(1) ) {
-            case VT_VAR_DEF:
-                {
-                alt10=1;
-                }
-                break;
-            case VT_LITERAL:
-                {
-                alt10=2;
-                }
-                break;
-            case VT_SPACE:
-                {
-                alt10=3;
-                }
-                break;
-            default:
-                NoViableAltException nvae =
-                    new NoViableAltException("83:1: key_sentence : ( variable_definition | vtl= VT_LITERAL | VT_SPACE );", 10, 0, input);
-
-                throw nvae;
-            }
-
-            switch (alt10) {
-                case 1 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:84:4: variable_definition
-                    {
-                    pushFollow(FOLLOW_variable_definition_in_key_sentence218);
-                    variable_definition();
-                    _fsp--;
-
-
-                    }
-                    break;
-                case 2 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:85:4: vtl= VT_LITERAL
-                    {
-                    vtl=(CommonTree)input.LT(1);
-                    match(input,VT_LITERAL,FOLLOW_VT_LITERAL_in_key_sentence225); 
-
-                    		((entry_scope)entry_stack.peek()).keybuffer.append(vtl.getText());
-                    		((entry_scope)entry_stack.peek()).sentencebuffer.append(vtl.getText());
-                    	
-
-                    }
-                    break;
-                case 3 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:90:4: VT_SPACE
-                    {
-                    match(input,VT_SPACE,FOLLOW_VT_SPACE_in_key_sentence234); 
-
+            	
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "meta_section"
+
+
+    // $ANTLR start "key_section"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:79:1: key_section : ^( VT_ENTRY_KEY ( key_sentence )+ ) ;
+    public final void key_section() throws RecognitionException {
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:80:2: ( ^( VT_ENTRY_KEY ( key_sentence )+ ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:80:4: ^( VT_ENTRY_KEY ( key_sentence )+ )
+            {
+            match(input,VT_ENTRY_KEY,FOLLOW_VT_ENTRY_KEY_in_key_section201); 
+
+            match(input, Token.DOWN, null); 
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:80:19: ( key_sentence )+
+            int cnt9=0;
+            loop9:
+            do {
+                int alt9=2;
+                int LA9_0 = input.LA(1);
+
+                if ( (LA9_0==VT_VAR_DEF||LA9_0==VT_LITERAL||LA9_0==VT_SPACE) ) {
+                    alt9=1;
+                }
+
+
+                switch (alt9) {
+            	case 1 :
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:80:19: key_sentence
+            	    {
+            	    pushFollow(FOLLOW_key_sentence_in_key_section203);
+            	    key_sentence();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt9 >= 1 ) break loop9;
+                        EarlyExitException eee =
+                            new EarlyExitException(9, input);
+                        throw eee;
+                }
+                cnt9++;
+            } while (true);
+
+
+            match(input, Token.UP, null); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "key_section"
+
+
+    // $ANTLR start "key_sentence"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:83:1: key_sentence : ( variable_definition | vtl= VT_LITERAL | VT_SPACE );
+    public final void key_sentence() throws RecognitionException {
+        CommonTree vtl=null;
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:84:2: ( variable_definition | vtl= VT_LITERAL | VT_SPACE )
+            int alt10=3;
+            switch ( input.LA(1) ) {
+            case VT_VAR_DEF:
+                {
+                alt10=1;
+                }
+                break;
+            case VT_LITERAL:
+                {
+                alt10=2;
+                }
+                break;
+            case VT_SPACE:
+                {
+                alt10=3;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 10, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt10) {
+                case 1 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:84:4: variable_definition
+                    {
+                    pushFollow(FOLLOW_variable_definition_in_key_sentence218);
+                    variable_definition();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+                case 2 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:85:4: vtl= VT_LITERAL
+                    {
+                    vtl=(CommonTree)match(input,VT_LITERAL,FOLLOW_VT_LITERAL_in_key_sentence225); 
+                    
+                    		((entry_scope)entry_stack.peek()).keybuffer.append((vtl!=null?vtl.getText():null));
+                    		((entry_scope)entry_stack.peek()).sentencebuffer.append((vtl!=null?vtl.getText():null));
+                    	
+
+                    }
+                    break;
+                case 3 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:90:4: VT_SPACE
+                    {
+                    match(input,VT_SPACE,FOLLOW_VT_SPACE_in_key_sentence234); 
+                    
                     		((entry_scope)entry_stack.peek()).keybuffer.append("\\s+");
                     		((entry_scope)entry_stack.peek()).sentencebuffer.append(" ");
-                    	
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end key_sentence
-
-
-    // $ANTLR start value_section
-    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:97:1: value_section : ^( VT_ENTRY_VAL ( value_sentence )+ ) ;
-    public final void value_section() throws RecognitionException {
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:101:4: ( ^( VT_ENTRY_VAL ( value_sentence )+ ) )
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:101:4: ^( VT_ENTRY_VAL ( value_sentence )+ )
-            {
-            match(input,VT_ENTRY_VAL,FOLLOW_VT_ENTRY_VAL_in_value_section255); 
-
-            match(input, Token.DOWN, null); 
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:101:19: ( value_sentence )+
-            int cnt11=0;
-            loop11:
-            do {
-                int alt11=2;
-                int LA11_0 = input.LA(1);
-
-                if ( ((LA11_0>=VT_VAR_REF && LA11_0<=VT_LITERAL)||LA11_0==VT_SPACE) ) {
-                    alt11=1;
-                }
-
-
-                switch (alt11) {
-            	case 1 :
-            	    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:101:19: value_sentence
-            	    {
-            	    pushFollow(FOLLOW_value_sentence_in_value_section257);
-            	    value_sentence();
-            	    _fsp--;
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt11 >= 1 ) break loop11;
-                        EarlyExitException eee =
-                            new EarlyExitException(11, input);
-                        throw eee;
-                }
-                cnt11++;
-            } while (true);
-
-
-            match(input, Token.UP, null); 
-
-            }
-
-
+                    	
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "key_sentence"
+
+
+    // $ANTLR start "value_section"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:97:1: value_section : ^( VT_ENTRY_VAL ( value_sentence )+ ) ;
+    public final void value_section() throws RecognitionException {
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:101:2: ( ^( VT_ENTRY_VAL ( value_sentence )+ ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:101:4: ^( VT_ENTRY_VAL ( value_sentence )+ )
+            {
+            match(input,VT_ENTRY_VAL,FOLLOW_VT_ENTRY_VAL_in_value_section255); 
+
+            match(input, Token.DOWN, null); 
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:101:19: ( value_sentence )+
+            int cnt11=0;
+            loop11:
+            do {
+                int alt11=2;
+                int LA11_0 = input.LA(1);
+
+                if ( ((LA11_0>=VT_VAR_REF && LA11_0<=VT_LITERAL)||LA11_0==VT_SPACE) ) {
+                    alt11=1;
+                }
+
+
+                switch (alt11) {
+            	case 1 :
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:101:19: value_sentence
+            	    {
+            	    pushFollow(FOLLOW_value_sentence_in_value_section257);
+            	    value_sentence();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt11 >= 1 ) break loop11;
+                        EarlyExitException eee =
+                            new EarlyExitException(11, input);
+                        throw eee;
+                }
+                cnt11++;
+            } while (true);
+
+
+            match(input, Token.UP, null); 
+
+            }
+
+            
             	((entry_scope)entry_stack.peek()).valuebuffer.append(" ");
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end value_section
-
-
-    // $ANTLR start value_sentence
-    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:104:1: value_sentence : ( variable_reference | vtl= VT_LITERAL | VT_SPACE );
-    public final void value_sentence() throws RecognitionException {
-        CommonTree vtl=null;
-
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:105:4: ( variable_reference | vtl= VT_LITERAL | VT_SPACE )
-            int alt12=3;
-            switch ( input.LA(1) ) {
-            case VT_VAR_REF:
-                {
-                alt12=1;
-                }
-                break;
-            case VT_LITERAL:
-                {
-                alt12=2;
-                }
-                break;
-            case VT_SPACE:
-                {
-                alt12=3;
-                }
-                break;
-            default:
-                NoViableAltException nvae =
-                    new NoViableAltException("104:1: value_sentence : ( variable_reference | vtl= VT_LITERAL | VT_SPACE );", 12, 0, input);
-
-                throw nvae;
-            }
-
-            switch (alt12) {
-                case 1 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:105:4: variable_reference
-                    {
-                    pushFollow(FOLLOW_variable_reference_in_value_sentence274);
-                    variable_reference();
-                    _fsp--;
-
-
-                    }
-                    break;
-                case 2 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:106:4: vtl= VT_LITERAL
-                    {
-                    vtl=(CommonTree)input.LT(1);
-                    match(input,VT_LITERAL,FOLLOW_VT_LITERAL_in_value_sentence281); 
-
-                    		((entry_scope)entry_stack.peek()).valuebuffer.append(vtl.getText().replaceAll("\\$", "\\\\\\$"));
-                    	
-
-                    }
-                    break;
-                case 3 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:110:4: VT_SPACE
-                    {
-                    match(input,VT_SPACE,FOLLOW_VT_SPACE_in_value_sentence289); 
-
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "value_section"
+
+
+    // $ANTLR start "value_sentence"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:104:1: value_sentence : ( variable_reference | vtl= VT_LITERAL | VT_SPACE );
+    public final void value_sentence() throws RecognitionException {
+        CommonTree vtl=null;
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:105:2: ( variable_reference | vtl= VT_LITERAL | VT_SPACE )
+            int alt12=3;
+            switch ( input.LA(1) ) {
+            case VT_VAR_REF:
+                {
+                alt12=1;
+                }
+                break;
+            case VT_LITERAL:
+                {
+                alt12=2;
+                }
+                break;
+            case VT_SPACE:
+                {
+                alt12=3;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 12, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt12) {
+                case 1 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:105:4: variable_reference
+                    {
+                    pushFollow(FOLLOW_variable_reference_in_value_sentence274);
+                    variable_reference();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+                case 2 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:106:4: vtl= VT_LITERAL
+                    {
+                    vtl=(CommonTree)match(input,VT_LITERAL,FOLLOW_VT_LITERAL_in_value_sentence281); 
+                    
+                    		((entry_scope)entry_stack.peek()).valuebuffer.append((vtl!=null?vtl.getText():null).replaceAll("\\$", "\\\\\\$"));
+                    	
+
+                    }
+                    break;
+                case 3 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:110:4: VT_SPACE
+                    {
+                    match(input,VT_SPACE,FOLLOW_VT_SPACE_in_value_sentence289); 
+                    
                     		((entry_scope)entry_stack.peek()).valuebuffer.append(" ");
-                    	
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end value_sentence
-
-
-    // $ANTLR start literal
-    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:116:1: literal : theliteral= VT_LITERAL ;
-    public final void literal() throws RecognitionException {
-        CommonTree theliteral=null;
-
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:117:4: (theliteral= VT_LITERAL )
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:117:4: theliteral= VT_LITERAL
-            {
-            theliteral=(CommonTree)input.LT(1);
-            match(input,VT_LITERAL,FOLLOW_VT_LITERAL_in_literal307); 
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end literal
-
-
-    // $ANTLR start variable_definition
-    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:120:1: variable_definition : ^( VT_VAR_DEF varname= LITERAL ^( VT_QUAL (q= LITERAL )? ) (pattern= VT_PATTERN )? ) ;
-    public final void variable_definition() throws RecognitionException {
-        CommonTree varname=null;
-        CommonTree q=null;
-        CommonTree pattern=null;
-
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:121:6: ( ^( VT_VAR_DEF varname= LITERAL ^( VT_QUAL (q= LITERAL )? ) (pattern= VT_PATTERN )? ) )
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:121:6: ^( VT_VAR_DEF varname= LITERAL ^( VT_QUAL (q= LITERAL )? ) (pattern= VT_PATTERN )? )
-            {
-            match(input,VT_VAR_DEF,FOLLOW_VT_VAR_DEF_in_variable_definition323); 
-
-            match(input, Token.DOWN, null); 
-            varname=(CommonTree)input.LT(1);
-            match(input,LITERAL,FOLLOW_LITERAL_in_variable_definition327); 
-            match(input,VT_QUAL,FOLLOW_VT_QUAL_in_variable_definition331); 
-
-            if ( input.LA(1)==Token.DOWN ) {
-                match(input, Token.DOWN, null); 
-                // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:121:47: (q= LITERAL )?
-                int alt13=2;
-                int LA13_0 = input.LA(1);
-
-                if ( (LA13_0==LITERAL) ) {
-                    alt13=1;
-                }
-                switch (alt13) {
-                    case 1 :
-                        // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:121:47: q= LITERAL
-                        {
-                        q=(CommonTree)input.LT(1);
-                        match(input,LITERAL,FOLLOW_LITERAL_in_variable_definition335); 
-
-                        }
-                        break;
-
-                }
-
-
-                match(input, Token.UP, null); 
-            }
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:121:65: (pattern= VT_PATTERN )?
-            int alt14=2;
-            int LA14_0 = input.LA(1);
-
-            if ( (LA14_0==VT_PATTERN) ) {
-                alt14=1;
-            }
-            switch (alt14) {
-                case 1 :
-                    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:121:65: pattern= VT_PATTERN
-                    {
-                    pattern=(CommonTree)input.LT(1);
-                    match(input,VT_PATTERN,FOLLOW_VT_PATTERN_in_variable_definition341); 
-
-                    }
-                    break;
-
-            }
-
-
-            match(input, Token.UP, null); 
-
+                    	
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "value_sentence"
+
+
+    // $ANTLR start "literal"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:116:1: literal : theliteral= VT_LITERAL ;
+    public final void literal() throws RecognitionException {
+        CommonTree theliteral=null;
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:117:2: (theliteral= VT_LITERAL )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:117:4: theliteral= VT_LITERAL
+            {
+            theliteral=(CommonTree)match(input,VT_LITERAL,FOLLOW_VT_LITERAL_in_literal307); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "literal"
+
+
+    // $ANTLR start "variable_definition"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:120:1: variable_definition : ^( VT_VAR_DEF varname= LITERAL ^( VT_QUAL (q= LITERAL )? ) (pattern= VT_PATTERN )? ) ;
+    public final void variable_definition() throws RecognitionException {
+        CommonTree varname=null;
+        CommonTree q=null;
+        CommonTree pattern=null;
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:121:2: ( ^( VT_VAR_DEF varname= LITERAL ^( VT_QUAL (q= LITERAL )? ) (pattern= VT_PATTERN )? ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:121:6: ^( VT_VAR_DEF varname= LITERAL ^( VT_QUAL (q= LITERAL )? ) (pattern= VT_PATTERN )? )
+            {
+            match(input,VT_VAR_DEF,FOLLOW_VT_VAR_DEF_in_variable_definition323); 
+
+            match(input, Token.DOWN, null); 
+            varname=(CommonTree)match(input,LITERAL,FOLLOW_LITERAL_in_variable_definition327); 
+            match(input,VT_QUAL,FOLLOW_VT_QUAL_in_variable_definition331); 
+
+            if ( input.LA(1)==Token.DOWN ) {
+                match(input, Token.DOWN, null); 
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:121:47: (q= LITERAL )?
+                int alt13=2;
+                int LA13_0 = input.LA(1);
+
+                if ( (LA13_0==LITERAL) ) {
+                    alt13=1;
+                }
+                switch (alt13) {
+                    case 1 :
+                        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:121:47: q= LITERAL
+                        {
+                        q=(CommonTree)match(input,LITERAL,FOLLOW_LITERAL_in_variable_definition335); 
+
+                        }
+                        break;
+
+                }
+
+
+                match(input, Token.UP, null); 
+            }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:121:65: (pattern= VT_PATTERN )?
+            int alt14=2;
+            int LA14_0 = input.LA(1);
+
+            if ( (LA14_0==VT_PATTERN) ) {
+                alt14=1;
+            }
+            switch (alt14) {
+                case 1 :
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:121:65: pattern= VT_PATTERN
+                    {
+                    pattern=(CommonTree)match(input,VT_PATTERN,FOLLOW_VT_PATTERN_in_variable_definition341); 
+
+                    }
+                    break;
+
+            }
+
+
+            match(input, Token.UP, null); 
+            
             		((entry_scope)entry_stack.peek()).counter++;
-            		((entry_scope)entry_stack.peek()).variables.put(varname.getText(), new Integer(((entry_scope)entry_stack.peek()).counter));
+            		((entry_scope)entry_stack.peek()).variables.put((varname!=null?varname.getText():null), new Integer(((entry_scope)entry_stack.peek()).counter));
             		
             		if(q!=null && pattern!=null){
-            			((entry_scope)entry_stack.peek()).sentencebuffer.append("{"+varname.getText()+":"+q.getText()+":"+pattern.getText()+"}");
+            			((entry_scope)entry_stack.peek()).sentencebuffer.append("{"+(varname!=null?varname.getText():null)+":"+(q!=null?q.getText():null)+":"+(pattern!=null?pattern.getText():null)+"}");
             		}else if(q==null && pattern!=null){
-            			((entry_scope)entry_stack.peek()).sentencebuffer.append("{"+varname.getText()+":"+pattern.getText()+"}");
+            			((entry_scope)entry_stack.peek()).sentencebuffer.append("{"+(varname!=null?varname.getText():null)+":"+(pattern!=null?pattern.getText():null)+"}");
             		}else{
-            			((entry_scope)entry_stack.peek()).sentencebuffer.append("{"+varname.getText()+"}");
+            			((entry_scope)entry_stack.peek()).sentencebuffer.append("{"+(varname!=null?varname.getText():null)+"}");
             		}
             		
             		if(q == null || (!q.getText().equals("ENUM") && !q.getText().equals("DATE") && !q.getText().equals("BOOLEAN"))){
-            			((entry_scope)entry_stack.peek()).keybuffer.append(pattern != null? "(" + pattern.getText() + ")" : "(.*?)");
+            			((entry_scope)entry_stack.peek()).keybuffer.append(pattern != null? "(" + (pattern!=null?pattern.getText():null) + ")" : "(.*?)");
             		}else{
             			((entry_scope)entry_stack.peek()).keybuffer.append("(.*?)");
             			
             		}
-            	
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end variable_definition
-
-
-    // $ANTLR start variable_reference
-    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:144:1: variable_reference : ^(varref= VT_VAR_REF lit= LITERAL ) ;
-    public final void variable_reference() throws RecognitionException {
-        CommonTree varref=null;
-        CommonTree lit=null;
-
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:145:4: ( ^(varref= VT_VAR_REF lit= LITERAL ) )
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:145:4: ^(varref= VT_VAR_REF lit= LITERAL )
-            {
-            varref=(CommonTree)input.LT(1);
-            match(input,VT_VAR_REF,FOLLOW_VT_VAR_REF_in_variable_reference363); 
-
-            match(input, Token.DOWN, null); 
-            lit=(CommonTree)input.LT(1);
-            match(input,LITERAL,FOLLOW_LITERAL_in_variable_reference367); 
-
-            match(input, Token.UP, null); 
-
-            		((entry_scope)entry_stack.peek()).valuebuffer.append("$" + ((entry_scope)entry_stack.peek()).variables.get(lit.getText()));
-            	
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end variable_reference
-
-
-    // $ANTLR start condition_key
-    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:151:1: condition_key : VT_CONDITION ;
-    public final void condition_key() throws RecognitionException {
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:152:4: ( VT_CONDITION )
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:152:4: VT_CONDITION
-            {
-            match(input,VT_CONDITION,FOLLOW_VT_CONDITION_in_condition_key385); 
-            ((entry_scope)entry_stack.peek()).retval.setSection(DSLMappingEntry.CONDITION);
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end condition_key
-
-
-    // $ANTLR start consequence_key
-    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:156:1: consequence_key : VT_CONSEQUENCE ;
-    public final void consequence_key() throws RecognitionException {
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:157:4: ( VT_CONSEQUENCE )
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:157:4: VT_CONSEQUENCE
-            {
-            match(input,VT_CONSEQUENCE,FOLLOW_VT_CONSEQUENCE_in_consequence_key400); 
-            ((entry_scope)entry_stack.peek()).retval.setSection(DSLMappingEntry.CONSEQUENCE);
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end consequence_key
-
-
-    // $ANTLR start keyword_key
-    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:161:1: keyword_key : VT_KEYWORD ;
-    public final void keyword_key() throws RecognitionException {
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:162:4: ( VT_KEYWORD )
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:162:4: VT_KEYWORD
-            {
-            match(input,VT_KEYWORD,FOLLOW_VT_KEYWORD_in_keyword_key415); 
-            ((entry_scope)entry_stack.peek()).retval.setSection(DSLMappingEntry.KEYWORD);
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end keyword_key
-
-
-    // $ANTLR start any_key
-    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:166:1: any_key : VT_ANY ;
-    public final void any_key() throws RecognitionException {
-        try {
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:167:4: ( VT_ANY )
-            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:167:4: VT_ANY
-            {
-            match(input,VT_ANY,FOLLOW_VT_ANY_in_any_key430); 
-            ((entry_scope)entry_stack.peek()).retval.setSection(DSLMappingEntry.ANY);
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end any_key
-
-
- 
-
-    public static final BitSet FOLLOW_VT_DSL_GRAMMAR_in_mapping_file54 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_valid_entry_in_mapping_file56 = new BitSet(new long[]{0x0000000000000068L});
-    public static final BitSet FOLLOW_entry_in_valid_entry78 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_COMMENT_in_valid_entry86 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_LINE_COMMENT_in_valid_entry90 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_ENTRY_in_entry119 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_scope_section_in_entry121 = new BitSet(new long[]{0x0000000000003000L});
-    public static final BitSet FOLLOW_meta_section_in_entry123 = new BitSet(new long[]{0x0000000000002000L});
-    public static final BitSet FOLLOW_key_section_in_entry126 = new BitSet(new long[]{0x0000000000004000L});
-    public static final BitSet FOLLOW_value_section_in_entry132 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_SCOPE_in_scope_section152 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_condition_key_in_scope_section154 = new BitSet(new long[]{0x0000000000000E08L});
-    public static final BitSet FOLLOW_consequence_key_in_scope_section157 = new BitSet(new long[]{0x0000000000000C08L});
-    public static final BitSet FOLLOW_keyword_key_in_scope_section160 = new BitSet(new long[]{0x0000000000000808L});
-    public static final BitSet FOLLOW_any_key_in_scope_section163 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_META_in_meta_section180 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_LITERAL_in_meta_section184 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_ENTRY_KEY_in_key_section201 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_key_sentence_in_key_section203 = new BitSet(new long[]{0x0000000000128008L});
-    public static final BitSet FOLLOW_variable_definition_in_key_sentence218 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_LITERAL_in_key_sentence225 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_SPACE_in_key_sentence234 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_ENTRY_VAL_in_value_section255 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_value_sentence_in_value_section257 = new BitSet(new long[]{0x0000000000130008L});
-    public static final BitSet FOLLOW_variable_reference_in_value_sentence274 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_LITERAL_in_value_sentence281 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_SPACE_in_value_sentence289 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_LITERAL_in_literal307 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_VAR_DEF_in_variable_definition323 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_LITERAL_in_variable_definition327 = new BitSet(new long[]{0x0000000000080000L});
-    public static final BitSet FOLLOW_VT_QUAL_in_variable_definition331 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_LITERAL_in_variable_definition335 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_PATTERN_in_variable_definition341 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_VAR_REF_in_variable_reference363 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_LITERAL_in_variable_reference367 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_CONDITION_in_condition_key385 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_CONSEQUENCE_in_consequence_key400 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_KEYWORD_in_keyword_key415 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_ANY_in_any_key430 = new BitSet(new long[]{0x0000000000000002L});
-
+            	
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "variable_definition"
+
+
+    // $ANTLR start "variable_reference"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:144:1: variable_reference : ^(varref= VT_VAR_REF lit= LITERAL ) ;
+    public final void variable_reference() throws RecognitionException {
+        CommonTree varref=null;
+        CommonTree lit=null;
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:145:2: ( ^(varref= VT_VAR_REF lit= LITERAL ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:145:4: ^(varref= VT_VAR_REF lit= LITERAL )
+            {
+            varref=(CommonTree)match(input,VT_VAR_REF,FOLLOW_VT_VAR_REF_in_variable_reference363); 
+
+            match(input, Token.DOWN, null); 
+            lit=(CommonTree)match(input,LITERAL,FOLLOW_LITERAL_in_variable_reference367); 
+
+            match(input, Token.UP, null); 
+            
+            		((entry_scope)entry_stack.peek()).valuebuffer.append("$" + ((entry_scope)entry_stack.peek()).variables.get((lit!=null?lit.getText():null)));
+            	
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "variable_reference"
+
+
+    // $ANTLR start "condition_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:151:1: condition_key : VT_CONDITION ;
+    public final void condition_key() throws RecognitionException {
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:152:2: ( VT_CONDITION )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:152:4: VT_CONDITION
+            {
+            match(input,VT_CONDITION,FOLLOW_VT_CONDITION_in_condition_key385); 
+            ((entry_scope)entry_stack.peek()).retval.setSection(DSLMappingEntry.CONDITION);
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "condition_key"
+
+
+    // $ANTLR start "consequence_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:156:1: consequence_key : VT_CONSEQUENCE ;
+    public final void consequence_key() throws RecognitionException {
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:157:2: ( VT_CONSEQUENCE )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:157:4: VT_CONSEQUENCE
+            {
+            match(input,VT_CONSEQUENCE,FOLLOW_VT_CONSEQUENCE_in_consequence_key400); 
+            ((entry_scope)entry_stack.peek()).retval.setSection(DSLMappingEntry.CONSEQUENCE);
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "consequence_key"
+
+
+    // $ANTLR start "keyword_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:161:1: keyword_key : VT_KEYWORD ;
+    public final void keyword_key() throws RecognitionException {
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:162:2: ( VT_KEYWORD )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:162:4: VT_KEYWORD
+            {
+            match(input,VT_KEYWORD,FOLLOW_VT_KEYWORD_in_keyword_key415); 
+            ((entry_scope)entry_stack.peek()).retval.setSection(DSLMappingEntry.KEYWORD);
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "keyword_key"
+
+
+    // $ANTLR start "any_key"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:166:1: any_key : VT_ANY ;
+    public final void any_key() throws RecognitionException {
+        try {
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:167:2: ( VT_ANY )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:167:4: VT_ANY
+            {
+            match(input,VT_ANY,FOLLOW_VT_ANY_in_any_key430); 
+            ((entry_scope)entry_stack.peek()).retval.setSection(DSLMappingEntry.ANY);
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "any_key"
+
+    // Delegated rules
+
+
+ 
+
+    public static final BitSet FOLLOW_VT_DSL_GRAMMAR_in_mapping_file54 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_valid_entry_in_mapping_file56 = new BitSet(new long[]{0x0000000000000068L});
+    public static final BitSet FOLLOW_entry_in_valid_entry78 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_COMMENT_in_valid_entry86 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_LINE_COMMENT_in_valid_entry90 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_ENTRY_in_entry119 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_scope_section_in_entry121 = new BitSet(new long[]{0x0000000000003000L});
+    public static final BitSet FOLLOW_meta_section_in_entry123 = new BitSet(new long[]{0x0000000000003000L});
+    public static final BitSet FOLLOW_key_section_in_entry126 = new BitSet(new long[]{0x0000000000004000L});
+    public static final BitSet FOLLOW_value_section_in_entry132 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_SCOPE_in_scope_section152 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_condition_key_in_scope_section154 = new BitSet(new long[]{0x0000000000000E08L});
+    public static final BitSet FOLLOW_consequence_key_in_scope_section157 = new BitSet(new long[]{0x0000000000000C08L});
+    public static final BitSet FOLLOW_keyword_key_in_scope_section160 = new BitSet(new long[]{0x0000000000000808L});
+    public static final BitSet FOLLOW_any_key_in_scope_section163 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_META_in_meta_section180 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_LITERAL_in_meta_section184 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_ENTRY_KEY_in_key_section201 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_key_sentence_in_key_section203 = new BitSet(new long[]{0x0000000000128008L});
+    public static final BitSet FOLLOW_variable_definition_in_key_sentence218 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_LITERAL_in_key_sentence225 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_SPACE_in_key_sentence234 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_ENTRY_VAL_in_value_section255 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_value_sentence_in_value_section257 = new BitSet(new long[]{0x0000000000130008L});
+    public static final BitSet FOLLOW_variable_reference_in_value_sentence274 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_LITERAL_in_value_sentence281 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_SPACE_in_value_sentence289 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_LITERAL_in_literal307 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_VAR_DEF_in_variable_definition323 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_LITERAL_in_variable_definition327 = new BitSet(new long[]{0x0000000000080000L});
+    public static final BitSet FOLLOW_VT_QUAL_in_variable_definition331 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_LITERAL_in_variable_definition335 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_PATTERN_in_variable_definition341 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_VAR_REF_in_variable_reference363 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_LITERAL_in_variable_reference367 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_CONDITION_in_condition_key385 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_CONSEQUENCE_in_consequence_key400 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_KEYWORD_in_keyword_key415 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_ANY_in_any_key430 = new BitSet(new long[]{0x0000000000000002L});
+
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaLexer.java
===================================================================
--- labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaLexer.java	2008-11-13 00:09:49 UTC (rev 23848)
+++ labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaLexer.java	2008-11-13 03:06:09 UTC (rev 23849)
@@ -1,1852 +1,2037 @@
-// $ANTLR 3.0.1 /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g 2007-12-19 16:46:02
+// $ANTLR 3.1.1 /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g 2008-11-13 00:55:22
 
 	package org.drools.rule.builder.dialect.java.parser;
 
 
-import org.antlr.runtime.BaseRecognizer;
-import org.antlr.runtime.CharStream;
-import org.antlr.runtime.CommonToken;
-import org.antlr.runtime.DFA;
-import org.antlr.runtime.EarlyExitException;
-import org.antlr.runtime.Lexer;
-import org.antlr.runtime.MismatchedSetException;
-import org.antlr.runtime.NoViableAltException;
-import org.antlr.runtime.RecognitionException;
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
 
 public class JavaLexer extends Lexer {
-    public static final int T29=29;
+    public static final int T__42=42;
     public static final int HexDigit=12;
-    public static final int T70=70;
-    public static final int T74=74;
-    public static final int T85=85;
-    public static final int T102=102;
+    public static final int T__109=109;
+    public static final int T__47=47;
+    public static final int T__73=73;
+    public static final int T__72=72;
+    public static final int T__70=70;
+    public static final int T__39=39;
     public static final int Letter=19;
-    public static final int T114=114;
-    public static final int T103=103;
-    public static final int T32=32;
-    public static final int T81=81;
-    public static final int T41=41;
-    public static final int T24=24;
+    public static final int T__30=30;
+    public static final int T__46=46;
+    public static final int T__96=96;
+    public static final int T__49=49;
+    public static final int T__112=112;
+    public static final int T__108=108;
+    public static final int T__48=48;
+    public static final int T__54=54;
     public static final int FloatTypeSuffix=15;
-    public static final int T113=113;
-    public static final int T62=62;
-    public static final int T109=109;
+    public static final int T__113=113;
     public static final int IntegerTypeSuffix=13;
-    public static final int T68=68;
-    public static final int T73=73;
-    public static final int T84=84;
-    public static final int T33=33;
+    public static final int T__89=89;
     public static final int Identifier=4;
-    public static final int T78=78;
     public static final int WS=21;
-    public static final int T42=42;
-    public static final int T96=96;
-    public static final int T71=71;
+    public static final int T__79=79;
+    public static final int T__64=64;
+    public static final int T__44=44;
+    public static final int T__66=66;
+    public static final int T__92=92;
+    public static final int T__88=88;
     public static final int LINE_COMMENT=23;
-    public static final int T72=72;
-    public static final int T94=94;
-    public static final int T76=76;
+    public static final int T__90=90;
     public static final int UnicodeEscape=17;
     public static final int HexLiteral=9;
-    public static final int T75=75;
-    public static final int T89=89;
+    public static final int T__63=63;
+    public static final int T__114=114;
+    public static final int T__110=110;
+    public static final int T__91=91;
+    public static final int T__43=43;
+    public static final int T__40=40;
     public static final int DecimalLiteral=11;
-    public static final int T67=67;
-    public static final int T31=31;
-    public static final int T60=60;
-    public static final int T82=82;
-    public static final int T100=100;
-    public static final int T49=49;
-    public static final int T30=30;
-    public static final int T79=79;
+    public static final int T__85=85;
+    public static final int T__26=26;
+    public static final int T__25=25;
+    public static final int T__60=60;
+    public static final int T__41=41;
+    public static final int T__93=93;
+    public static final int T__86=86;
+    public static final int T__28=28;
     public static final int OctalLiteral=10;
-    public static final int T36=36;
-    public static final int T58=58;
-    public static final int T93=93;
-    public static final int T35=35;
-    public static final int T107=107;
-    public static final int T83=83;
-    public static final int T61=61;
-    public static final int T45=45;
-    public static final int T34=34;
-    public static final int T101=101;
-    public static final int T64=64;
-    public static final int T25=25;
-    public static final int T91=91;
-    public static final int T105=105;
-    public static final int T37=37;
-    public static final int T86=86;
+    public static final int T__57=57;
+    public static final int T__94=94;
+    public static final int T__51=51;
+    public static final int T__80=80;
+    public static final int T__100=100;
+    public static final int T__69=69;
+    public static final int T__95=95;
+    public static final int T__50=50;
+    public static final int T__65=65;
+    public static final int T__101=101;
+    public static final int T__104=104;
+    public static final int T__107=107;
+    public static final int T__67=67;
+    public static final int T__87=87;
+    public static final int T__106=106;
+    public static final int T__74=74;
+    public static final int T__52=52;
+    public static final int T__68=68;
+    public static final int T__62=62;
     public static final int EscapeSequence=16;
-    public static final int T26=26;
-    public static final int T51=51;
-    public static final int T111=111;
-    public static final int T46=46;
-    public static final int T77=77;
-    public static final int T38=38;
+    public static final int T__27=27;
+    public static final int T__24=24;
+    public static final int T__61=61;
+    public static final int T__59=59;
+    public static final int T__34=34;
     public static final int FloatingPointLiteral=6;
-    public static final int T106=106;
-    public static final int T112=112;
-    public static final int T69=69;
-    public static final int T39=39;
+    public static final int T__98=98;
+    public static final int T__56=56;
     public static final int ENUM=5;
-    public static final int T44=44;
-    public static final int T55=55;
+    public static final int T__35=35;
     public static final int Exponent=14;
-    public static final int T95=95;
-    public static final int T50=50;
-    public static final int T110=110;
-    public static final int T108=108;
+    public static final int T__78=78;
+    public static final int T__36=36;
     public static final int CharacterLiteral=7;
-    public static final int T92=92;
-    public static final int T43=43;
-    public static final int T28=28;
-    public static final int T40=40;
-    public static final int T66=66;
+    public static final int T__58=58;
     public static final int COMMENT=22;
-    public static final int T88=88;
+    public static final int T__99=99;
     public static final int StringLiteral=8;
-    public static final int T63=63;
-    public static final int T57=57;
-    public static final int T65=65;
-    public static final int T98=98;
-    public static final int T56=56;
-    public static final int T87=87;
-    public static final int T80=80;
+    public static final int T__33=33;
+    public static final int T__77=77;
+    public static final int T__29=29;
+    public static final int T__45=45;
+    public static final int T__55=55;
+    public static final int T__103=103;
+    public static final int T__84=84;
     public static final int JavaIDDigit=20;
-    public static final int T59=59;
-    public static final int T97=97;
-    public static final int T48=48;
-    public static final int T54=54;
+    public static final int T__97=97;
+    public static final int T__111=111;
+    public static final int T__105=105;
+    public static final int T__75=75;
+    public static final int T__31=31;
     public static final int EOF=-1;
-    public static final int T104=104;
-    public static final int T47=47;
-    public static final int Tokens=115;
-    public static final int T53=53;
+    public static final int T__53=53;
+    public static final int T__32=32;
+    public static final int T__38=38;
+    public static final int T__76=76;
+    public static final int T__37=37;
+    public static final int T__82=82;
     public static final int OctalEscape=18;
-    public static final int T99=99;
-    public static final int T27=27;
-    public static final int T52=52;
-    public static final int T90=90;
+    public static final int T__81=81;
+    public static final int T__83=83;
+    public static final int T__71=71;
+    public static final int T__102=102;
 
     	public static final CommonToken IGNORE_TOKEN = new CommonToken(null,0,99,0,0);
     	protected boolean enumIsKeyword = true;
 
+
+    // delegates
+    // delegators
+
     public JavaLexer() {;} 
     public JavaLexer(CharStream input) {
-        super(input);
+        this(input, new RecognizerSharedState());
     }
-    public String getGrammarFileName() { return "/home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g"; }
+    public JavaLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
 
-    // $ANTLR start T24
-    public final void mT24() throws RecognitionException {
+    }
+    public String getGrammarFileName() { return "/Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g"; }
+
+    // $ANTLR start "T__24"
+    public final void mT__24() throws RecognitionException {
         try {
-            int _type = T24;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:10:5: ( 'package' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:10:7: 'package'
+            int _type = T__24;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:11:7: ( 'package' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:11:9: 'package'
             {
             match("package"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T24
+    // $ANTLR end "T__24"
 
-    // $ANTLR start T25
-    public final void mT25() throws RecognitionException {
+    // $ANTLR start "T__25"
+    public final void mT__25() throws RecognitionException {
         try {
-            int _type = T25;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:11:5: ( ';' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:11:7: ';'
+            int _type = T__25;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:12:7: ( ';' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:12:9: ';'
             {
             match(';'); 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T25
+    // $ANTLR end "T__25"
 
-    // $ANTLR start T26
-    public final void mT26() throws RecognitionException {
+    // $ANTLR start "T__26"
+    public final void mT__26() throws RecognitionException {
         try {
-            int _type = T26;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:12:5: ( 'import' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:12:7: 'import'
+            int _type = T__26;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:13:7: ( 'import' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:13:9: 'import'
             {
             match("import"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T26
+    // $ANTLR end "T__26"
 
-    // $ANTLR start T27
-    public final void mT27() throws RecognitionException {
+    // $ANTLR start "T__27"
+    public final void mT__27() throws RecognitionException {
         try {
-            int _type = T27;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:13:5: ( 'static' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:13:7: 'static'
+            int _type = T__27;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:14:7: ( 'static' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:14:9: 'static'
             {
             match("static"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T27
+    // $ANTLR end "T__27"
 
-    // $ANTLR start T28
-    public final void mT28() throws RecognitionException {
+    // $ANTLR start "T__28"
+    public final void mT__28() throws RecognitionException {
         try {
-            int _type = T28;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:14:5: ( '.' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:14:7: '.'
+            int _type = T__28;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:15:7: ( '.' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:15:9: '.'
             {
             match('.'); 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T28
+    // $ANTLR end "T__28"
 
-    // $ANTLR start T29
-    public final void mT29() throws RecognitionException {
+    // $ANTLR start "T__29"
+    public final void mT__29() throws RecognitionException {
         try {
-            int _type = T29;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:15:5: ( '*' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:15:7: '*'
+            int _type = T__29;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:16:7: ( '*' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:16:9: '*'
             {
             match('*'); 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T29
+    // $ANTLR end "T__29"
 
-    // $ANTLR start T30
-    public final void mT30() throws RecognitionException {
+    // $ANTLR start "T__30"
+    public final void mT__30() throws RecognitionException {
         try {
-            int _type = T30;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:16:5: ( 'class' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:16:7: 'class'
+            int _type = T__30;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:17:7: ( 'class' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:17:9: 'class'
             {
             match("class"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T30
+    // $ANTLR end "T__30"
 
-    // $ANTLR start T31
-    public final void mT31() throws RecognitionException {
+    // $ANTLR start "T__31"
+    public final void mT__31() throws RecognitionException {
         try {
-            int _type = T31;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:17:5: ( 'extends' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:17:7: 'extends'
+            int _type = T__31;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:18:7: ( 'extends' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:18:9: 'extends'
             {
             match("extends"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T31
+    // $ANTLR end "T__31"
 
-    // $ANTLR start T32
-    public final void mT32() throws RecognitionException {
+    // $ANTLR start "T__32"
+    public final void mT__32() throws RecognitionException {
         try {
-            int _type = T32;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:18:5: ( 'implements' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:18:7: 'implements'
+            int _type = T__32;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:19:7: ( 'implements' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:19:9: 'implements'
             {
             match("implements"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T32
+    // $ANTLR end "T__32"
 
-    // $ANTLR start T33
-    public final void mT33() throws RecognitionException {
+    // $ANTLR start "T__33"
+    public final void mT__33() throws RecognitionException {
         try {
-            int _type = T33;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:19:5: ( '<' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:19:7: '<'
+            int _type = T__33;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:20:7: ( '<' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:20:9: '<'
             {
             match('<'); 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T33
+    // $ANTLR end "T__33"
 
-    // $ANTLR start T34
-    public final void mT34() throws RecognitionException {
+    // $ANTLR start "T__34"
+    public final void mT__34() throws RecognitionException {
         try {
-            int _type = T34;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:20:5: ( ',' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:20:7: ','
+            int _type = T__34;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:21:7: ( ',' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:21:9: ','
             {
             match(','); 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T34
+    // $ANTLR end "T__34"
 
-    // $ANTLR start T35
-    public final void mT35() throws RecognitionException {
+    // $ANTLR start "T__35"
+    public final void mT__35() throws RecognitionException {
         try {
-            int _type = T35;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:21:5: ( '>' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:21:7: '>'
+            int _type = T__35;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:22:7: ( '>' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:22:9: '>'
             {
             match('>'); 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T35
+    // $ANTLR end "T__35"
 
-    // $ANTLR start T36
-    public final void mT36() throws RecognitionException {
+    // $ANTLR start "T__36"
+    public final void mT__36() throws RecognitionException {
         try {
-            int _type = T36;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:22:5: ( '&' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:22:7: '&'
+            int _type = T__36;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:23:7: ( '&' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:23:9: '&'
             {
             match('&'); 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T36
+    // $ANTLR end "T__36"
 
-    // $ANTLR start T37
-    public final void mT37() throws RecognitionException {
+    // $ANTLR start "T__37"
+    public final void mT__37() throws RecognitionException {
         try {
-            int _type = T37;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:23:5: ( '{' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:23:7: '{'
+            int _type = T__37;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:24:7: ( '{' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:24:9: '{'
             {
             match('{'); 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T37
+    // $ANTLR end "T__37"
 
-    // $ANTLR start T38
-    public final void mT38() throws RecognitionException {
+    // $ANTLR start "T__38"
+    public final void mT__38() throws RecognitionException {
         try {
-            int _type = T38;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:24:5: ( '}' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:24:7: '}'
+            int _type = T__38;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:25:7: ( '}' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:25:9: '}'
             {
             match('}'); 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T38
+    // $ANTLR end "T__38"
 
-    // $ANTLR start T39
-    public final void mT39() throws RecognitionException {
+    // $ANTLR start "T__39"
+    public final void mT__39() throws RecognitionException {
         try {
-            int _type = T39;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:25:5: ( 'interface' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:25:7: 'interface'
+            int _type = T__39;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:26:7: ( 'interface' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:26:9: 'interface'
             {
             match("interface"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T39
+    // $ANTLR end "T__39"
 
-    // $ANTLR start T40
-    public final void mT40() throws RecognitionException {
+    // $ANTLR start "T__40"
+    public final void mT__40() throws RecognitionException {
         try {
-            int _type = T40;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:26:5: ( 'void' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:26:7: 'void'
+            int _type = T__40;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:27:7: ( 'void' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:27:9: 'void'
             {
             match("void"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T40
+    // $ANTLR end "T__40"
 
-    // $ANTLR start T41
-    public final void mT41() throws RecognitionException {
+    // $ANTLR start "T__41"
+    public final void mT__41() throws RecognitionException {
         try {
-            int _type = T41;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:27:5: ( '[' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:27:7: '['
+            int _type = T__41;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:28:7: ( '[' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:28:9: '['
             {
             match('['); 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T41
+    // $ANTLR end "T__41"
 
-    // $ANTLR start T42
-    public final void mT42() throws RecognitionException {
+    // $ANTLR start "T__42"
+    public final void mT__42() throws RecognitionException {
         try {
-            int _type = T42;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:28:5: ( ']' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:28:7: ']'
+            int _type = T__42;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:29:7: ( ']' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:29:9: ']'
             {
             match(']'); 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T42
+    // $ANTLR end "T__42"
 
-    // $ANTLR start T43
-    public final void mT43() throws RecognitionException {
+    // $ANTLR start "T__43"
+    public final void mT__43() throws RecognitionException {
         try {
-            int _type = T43;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:29:5: ( 'throws' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:29:7: 'throws'
+            int _type = T__43;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:30:7: ( 'throws' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:30:9: 'throws'
             {
             match("throws"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T43
+    // $ANTLR end "T__43"
 
-    // $ANTLR start T44
-    public final void mT44() throws RecognitionException {
+    // $ANTLR start "T__44"
+    public final void mT__44() throws RecognitionException {
         try {
-            int _type = T44;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:30:5: ( '=' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:30:7: '='
+            int _type = T__44;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:31:7: ( '=' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:31:9: '='
             {
             match('='); 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T44
+    // $ANTLR end "T__44"
 
-    // $ANTLR start T45
-    public final void mT45() throws RecognitionException {
+    // $ANTLR start "T__45"
+    public final void mT__45() throws RecognitionException {
         try {
-            int _type = T45;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:31:5: ( 'public' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:31:7: 'public'
+            int _type = T__45;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:32:7: ( 'public' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:32:9: 'public'
             {
             match("public"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T45
+    // $ANTLR end "T__45"
 
-    // $ANTLR start T46
-    public final void mT46() throws RecognitionException {
+    // $ANTLR start "T__46"
+    public final void mT__46() throws RecognitionException {
         try {
-            int _type = T46;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:32:5: ( 'protected' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:32:7: 'protected'
+            int _type = T__46;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:33:7: ( 'protected' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:33:9: 'protected'
             {
             match("protected"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T46
+    // $ANTLR end "T__46"
 
-    // $ANTLR start T47
-    public final void mT47() throws RecognitionException {
+    // $ANTLR start "T__47"
+    public final void mT__47() throws RecognitionException {
         try {
-            int _type = T47;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:33:5: ( 'private' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:33:7: 'private'
+            int _type = T__47;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:34:7: ( 'private' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:34:9: 'private'
             {
             match("private"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T47
+    // $ANTLR end "T__47"
 
-    // $ANTLR start T48
-    public final void mT48() throws RecognitionException {
+    // $ANTLR start "T__48"
+    public final void mT__48() throws RecognitionException {
         try {
-            int _type = T48;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:34:5: ( 'abstract' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:34:7: 'abstract'
+            int _type = T__48;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:35:7: ( 'abstract' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:35:9: 'abstract'
             {
             match("abstract"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T48
+    // $ANTLR end "T__48"
 
-    // $ANTLR start T49
-    public final void mT49() throws RecognitionException {
+    // $ANTLR start "T__49"
+    public final void mT__49() throws RecognitionException {
         try {
-            int _type = T49;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:35:5: ( 'final' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:35:7: 'final'
+            int _type = T__49;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:36:7: ( 'final' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:36:9: 'final'
             {
             match("final"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T49
+    // $ANTLR end "T__49"
 
-    // $ANTLR start T50
-    public final void mT50() throws RecognitionException {
+    // $ANTLR start "T__50"
+    public final void mT__50() throws RecognitionException {
         try {
-            int _type = T50;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:36:5: ( 'native' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:36:7: 'native'
+            int _type = T__50;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:37:7: ( 'native' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:37:9: 'native'
             {
             match("native"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T50
+    // $ANTLR end "T__50"
 
-    // $ANTLR start T51
-    public final void mT51() throws RecognitionException {
+    // $ANTLR start "T__51"
+    public final void mT__51() throws RecognitionException {
         try {
-            int _type = T51;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:37:5: ( 'synchronized' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:37:7: 'synchronized'
+            int _type = T__51;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:38:7: ( 'synchronized' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:38:9: 'synchronized'
             {
             match("synchronized"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T51
+    // $ANTLR end "T__51"
 
-    // $ANTLR start T52
-    public final void mT52() throws RecognitionException {
+    // $ANTLR start "T__52"
+    public final void mT__52() throws RecognitionException {
         try {
-            int _type = T52;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:38:5: ( 'transient' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:38:7: 'transient'
+            int _type = T__52;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:39:7: ( 'transient' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:39:9: 'transient'
             {
             match("transient"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T52
+    // $ANTLR end "T__52"
 
-    // $ANTLR start T53
-    public final void mT53() throws RecognitionException {
+    // $ANTLR start "T__53"
+    public final void mT__53() throws RecognitionException {
         try {
-            int _type = T53;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:39:5: ( 'volatile' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:39:7: 'volatile'
+            int _type = T__53;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:40:7: ( 'volatile' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:40:9: 'volatile'
             {
             match("volatile"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T53
+    // $ANTLR end "T__53"
 
-    // $ANTLR start T54
-    public final void mT54() throws RecognitionException {
+    // $ANTLR start "T__54"
+    public final void mT__54() throws RecognitionException {
         try {
-            int _type = T54;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:40:5: ( 'strictfp' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:40:7: 'strictfp'
+            int _type = T__54;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:41:7: ( 'strictfp' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:41:9: 'strictfp'
             {
             match("strictfp"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T54
+    // $ANTLR end "T__54"
 
-    // $ANTLR start T55
-    public final void mT55() throws RecognitionException {
+    // $ANTLR start "T__55"
+    public final void mT__55() throws RecognitionException {
         try {
-            int _type = T55;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:41:5: ( 'boolean' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:41:7: 'boolean'
+            int _type = T__55;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:42:7: ( 'boolean' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:42:9: 'boolean'
             {
             match("boolean"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T55
+    // $ANTLR end "T__55"
 
-    // $ANTLR start T56
-    public final void mT56() throws RecognitionException {
+    // $ANTLR start "T__56"
+    public final void mT__56() throws RecognitionException {
         try {
-            int _type = T56;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:42:5: ( 'char' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:42:7: 'char'
+            int _type = T__56;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:43:7: ( 'char' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:43:9: 'char'
             {
             match("char"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T56
+    // $ANTLR end "T__56"
 
-    // $ANTLR start T57
-    public final void mT57() throws RecognitionException {
+    // $ANTLR start "T__57"
+    public final void mT__57() throws RecognitionException {
         try {
-            int _type = T57;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:43:5: ( 'byte' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:43:7: 'byte'
+            int _type = T__57;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:44:7: ( 'byte' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:44:9: 'byte'
             {
             match("byte"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T57
+    // $ANTLR end "T__57"
 
-    // $ANTLR start T58
-    public final void mT58() throws RecognitionException {
+    // $ANTLR start "T__58"
+    public final void mT__58() throws RecognitionException {
         try {
-            int _type = T58;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:44:5: ( 'short' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:44:7: 'short'
+            int _type = T__58;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:45:7: ( 'short' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:45:9: 'short'
             {
             match("short"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T58
+    // $ANTLR end "T__58"
 
-    // $ANTLR start T59
-    public final void mT59() throws RecognitionException {
+    // $ANTLR start "T__59"
+    public final void mT__59() throws RecognitionException {
         try {
-            int _type = T59;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:45:5: ( 'int' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:45:7: 'int'
+            int _type = T__59;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:46:7: ( 'int' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:46:9: 'int'
             {
             match("int"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T59
+    // $ANTLR end "T__59"
 
-    // $ANTLR start T60
-    public final void mT60() throws RecognitionException {
+    // $ANTLR start "T__60"
+    public final void mT__60() throws RecognitionException {
         try {
-            int _type = T60;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:46:5: ( 'long' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:46:7: 'long'
+            int _type = T__60;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:47:7: ( 'long' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:47:9: 'long'
             {
             match("long"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T60
+    // $ANTLR end "T__60"
 
-    // $ANTLR start T61
-    public final void mT61() throws RecognitionException {
+    // $ANTLR start "T__61"
+    public final void mT__61() throws RecognitionException {
         try {
-            int _type = T61;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:47:5: ( 'float' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:47:7: 'float'
+            int _type = T__61;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:48:7: ( 'float' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:48:9: 'float'
             {
             match("float"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T61
+    // $ANTLR end "T__61"
 
-    // $ANTLR start T62
-    public final void mT62() throws RecognitionException {
+    // $ANTLR start "T__62"
+    public final void mT__62() throws RecognitionException {
         try {
-            int _type = T62;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:48:5: ( 'double' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:48:7: 'double'
+            int _type = T__62;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:49:7: ( 'double' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:49:9: 'double'
             {
             match("double"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T62
+    // $ANTLR end "T__62"
 
-    // $ANTLR start T63
-    public final void mT63() throws RecognitionException {
+    // $ANTLR start "T__63"
+    public final void mT__63() throws RecognitionException {
         try {
-            int _type = T63;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:49:5: ( '?' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:49:7: '?'
+            int _type = T__63;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:50:7: ( '?' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:50:9: '?'
             {
             match('?'); 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T63
+    // $ANTLR end "T__63"
 
-    // $ANTLR start T64
-    public final void mT64() throws RecognitionException {
+    // $ANTLR start "T__64"
+    public final void mT__64() throws RecognitionException {
         try {
-            int _type = T64;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:50:5: ( 'super' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:50:7: 'super'
+            int _type = T__64;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:51:7: ( 'super' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:51:9: 'super'
             {
             match("super"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T64
+    // $ANTLR end "T__64"
 
-    // $ANTLR start T65
-    public final void mT65() throws RecognitionException {
+    // $ANTLR start "T__65"
+    public final void mT__65() throws RecognitionException {
         try {
-            int _type = T65;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:51:5: ( '(' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:51:7: '('
+            int _type = T__65;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:52:7: ( '(' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:52:9: '('
             {
             match('('); 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T65
+    // $ANTLR end "T__65"
 
-    // $ANTLR start T66
-    public final void mT66() throws RecognitionException {
+    // $ANTLR start "T__66"
+    public final void mT__66() throws RecognitionException {
         try {
-            int _type = T66;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:52:5: ( ')' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:52:7: ')'
+            int _type = T__66;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:53:7: ( ')' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:53:9: ')'
             {
             match(')'); 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T66
+    // $ANTLR end "T__66"
 
-    // $ANTLR start T67
-    public final void mT67() throws RecognitionException {
+    // $ANTLR start "T__67"
+    public final void mT__67() throws RecognitionException {
         try {
-            int _type = T67;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:53:5: ( '...' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:53:7: '...'
+            int _type = T__67;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:54:7: ( '...' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:54:9: '...'
             {
             match("..."); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T67
+    // $ANTLR end "T__67"
 
-    // $ANTLR start T68
-    public final void mT68() throws RecognitionException {
+    // $ANTLR start "T__68"
+    public final void mT__68() throws RecognitionException {
         try {
-            int _type = T68;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:54:5: ( 'null' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:54:7: 'null'
+            int _type = T__68;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:55:7: ( 'null' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:55:9: 'null'
             {
             match("null"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T68
+    // $ANTLR end "T__68"
 
-    // $ANTLR start T69
-    public final void mT69() throws RecognitionException {
+    // $ANTLR start "T__69"
+    public final void mT__69() throws RecognitionException {
         try {
-            int _type = T69;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:55:5: ( 'true' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:55:7: 'true'
+            int _type = T__69;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:56:7: ( 'true' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:56:9: 'true'
             {
             match("true"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T69
+    // $ANTLR end "T__69"
 
-    // $ANTLR start T70
-    public final void mT70() throws RecognitionException {
+    // $ANTLR start "T__70"
+    public final void mT__70() throws RecognitionException {
         try {
-            int _type = T70;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:56:5: ( 'false' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:56:7: 'false'
+            int _type = T__70;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:57:7: ( 'false' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:57:9: 'false'
             {
             match("false"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T70
+    // $ANTLR end "T__70"
 
-    // $ANTLR start T71
-    public final void mT71() throws RecognitionException {
+    // $ANTLR start "T__71"
+    public final void mT__71() throws RecognitionException {
         try {
-            int _type = T71;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:57:5: ( '@' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:57:7: '@'
+            int _type = T__71;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:58:7: ( '@' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:58:9: '@'
             {
             match('@'); 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T71
+    // $ANTLR end "T__71"
 
-    // $ANTLR start T72
-    public final void mT72() throws RecognitionException {
+    // $ANTLR start "T__72"
+    public final void mT__72() throws RecognitionException {
         try {
-            int _type = T72;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:58:5: ( 'default' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:58:7: 'default'
+            int _type = T__72;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:59:7: ( 'default' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:59:9: 'default'
             {
             match("default"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T72
+    // $ANTLR end "T__72"
 
-    // $ANTLR start T73
-    public final void mT73() throws RecognitionException {
+    // $ANTLR start "T__73"
+    public final void mT__73() throws RecognitionException {
         try {
-            int _type = T73;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:59:5: ( 'assert' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:59:7: 'assert'
+            int _type = T__73;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:60:7: ( 'assert' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:60:9: 'assert'
             {
             match("assert"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T73
+    // $ANTLR end "T__73"
 
-    // $ANTLR start T74
-    public final void mT74() throws RecognitionException {
+    // $ANTLR start "T__74"
+    public final void mT__74() throws RecognitionException {
         try {
-            int _type = T74;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:60:5: ( ':' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:60:7: ':'
+            int _type = T__74;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:61:7: ( ':' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:61:9: ':'
             {
             match(':'); 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T74
+    // $ANTLR end "T__74"
 
-    // $ANTLR start T75
-    public final void mT75() throws RecognitionException {
+    // $ANTLR start "T__75"
+    public final void mT__75() throws RecognitionException {
         try {
-            int _type = T75;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:61:5: ( 'if' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:61:7: 'if'
+            int _type = T__75;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:62:7: ( 'if' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:62:9: 'if'
             {
             match("if"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T75
+    // $ANTLR end "T__75"
 
-    // $ANTLR start T76
-    public final void mT76() throws RecognitionException {
+    // $ANTLR start "T__76"
+    public final void mT__76() throws RecognitionException {
         try {
-            int _type = T76;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:62:5: ( 'else' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:62:7: 'else'
+            int _type = T__76;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:63:7: ( 'else' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:63:9: 'else'
             {
             match("else"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T76
+    // $ANTLR end "T__76"
 
-    // $ANTLR start T77
-    public final void mT77() throws RecognitionException {
+    // $ANTLR start "T__77"
+    public final void mT__77() throws RecognitionException {
         try {
-            int _type = T77;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:63:5: ( 'for' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:63:7: 'for'
+            int _type = T__77;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:64:7: ( 'for' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:64:9: 'for'
             {
             match("for"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T77
+    // $ANTLR end "T__77"
 
-    // $ANTLR start T78
-    public final void mT78() throws RecognitionException {
+    // $ANTLR start "T__78"
+    public final void mT__78() throws RecognitionException {
         try {
-            int _type = T78;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:64:5: ( 'while' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:64:7: 'while'
+            int _type = T__78;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:65:7: ( 'while' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:65:9: 'while'
             {
             match("while"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T78
+    // $ANTLR end "T__78"
 
-    // $ANTLR start T79
-    public final void mT79() throws RecognitionException {
+    // $ANTLR start "T__79"
+    public final void mT__79() throws RecognitionException {
         try {
-            int _type = T79;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:65:5: ( 'do' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:65:7: 'do'
+            int _type = T__79;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:66:7: ( 'do' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:66:9: 'do'
             {
             match("do"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T79
+    // $ANTLR end "T__79"
 
-    // $ANTLR start T80
-    public final void mT80() throws RecognitionException {
+    // $ANTLR start "T__80"
+    public final void mT__80() throws RecognitionException {
         try {
-            int _type = T80;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:66:5: ( 'try' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:66:7: 'try'
+            int _type = T__80;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:67:7: ( 'try' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:67:9: 'try'
             {
             match("try"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T80
+    // $ANTLR end "T__80"
 
-    // $ANTLR start T81
-    public final void mT81() throws RecognitionException {
+    // $ANTLR start "T__81"
+    public final void mT__81() throws RecognitionException {
         try {
-            int _type = T81;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:67:5: ( 'finally' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:67:7: 'finally'
+            int _type = T__81;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:68:7: ( 'finally' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:68:9: 'finally'
             {
             match("finally"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T81
+    // $ANTLR end "T__81"
 
-    // $ANTLR start T82
-    public final void mT82() throws RecognitionException {
+    // $ANTLR start "T__82"
+    public final void mT__82() throws RecognitionException {
         try {
-            int _type = T82;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:68:5: ( 'switch' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:68:7: 'switch'
+            int _type = T__82;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:69:7: ( 'switch' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:69:9: 'switch'
             {
             match("switch"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T82
+    // $ANTLR end "T__82"
 
-    // $ANTLR start T83
-    public final void mT83() throws RecognitionException {
+    // $ANTLR start "T__83"
+    public final void mT__83() throws RecognitionException {
         try {
-            int _type = T83;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:69:5: ( 'return' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:69:7: 'return'
+            int _type = T__83;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:70:7: ( 'return' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:70:9: 'return'
             {
             match("return"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T83
+    // $ANTLR end "T__83"
 
-    // $ANTLR start T84
-    public final void mT84() throws RecognitionException {
+    // $ANTLR start "T__84"
+    public final void mT__84() throws RecognitionException {
         try {
-            int _type = T84;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:70:5: ( 'throw' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:70:7: 'throw'
+            int _type = T__84;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:71:7: ( 'throw' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:71:9: 'throw'
             {
             match("throw"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T84
+    // $ANTLR end "T__84"
 
-    // $ANTLR start T85
-    public final void mT85() throws RecognitionException {
+    // $ANTLR start "T__85"
+    public final void mT__85() throws RecognitionException {
         try {
-            int _type = T85;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:71:5: ( 'break' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:71:7: 'break'
+            int _type = T__85;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:72:7: ( 'break' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:72:9: 'break'
             {
             match("break"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T85
+    // $ANTLR end "T__85"
 
-    // $ANTLR start T86
-    public final void mT86() throws RecognitionException {
+    // $ANTLR start "T__86"
+    public final void mT__86() throws RecognitionException {
         try {
-            int _type = T86;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:72:5: ( 'continue' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:72:7: 'continue'
+            int _type = T__86;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:73:7: ( 'continue' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:73:9: 'continue'
             {
             match("continue"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T86
+    // $ANTLR end "T__86"
 
-    // $ANTLR start T87
-    public final void mT87() throws RecognitionException {
+    // $ANTLR start "T__87"
+    public final void mT__87() throws RecognitionException {
         try {
-            int _type = T87;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:73:5: ( 'modify' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:73:7: 'modify'
+            int _type = T__87;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:74:7: ( 'modify' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:74:9: 'modify'
             {
             match("modify"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T87
+    // $ANTLR end "T__87"
 
-    // $ANTLR start T88
-    public final void mT88() throws RecognitionException {
+    // $ANTLR start "T__88"
+    public final void mT__88() throws RecognitionException {
         try {
-            int _type = T88;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:74:5: ( 'catch' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:74:7: 'catch'
+            int _type = T__88;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:75:7: ( 'catch' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:75:9: 'catch'
             {
             match("catch"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T88
+    // $ANTLR end "T__88"
 
-    // $ANTLR start T89
-    public final void mT89() throws RecognitionException {
+    // $ANTLR start "T__89"
+    public final void mT__89() throws RecognitionException {
         try {
-            int _type = T89;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:75:5: ( 'case' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:75:7: 'case'
+            int _type = T__89;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:76:7: ( 'case' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:76:9: 'case'
             {
             match("case"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T89
+    // $ANTLR end "T__89"
 
-    // $ANTLR start T90
-    public final void mT90() throws RecognitionException {
+    // $ANTLR start "T__90"
+    public final void mT__90() throws RecognitionException {
         try {
-            int _type = T90;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:76:5: ( '+=' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:76:7: '+='
+            int _type = T__90;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:77:7: ( '+=' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:77:9: '+='
             {
             match("+="); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T90
+    // $ANTLR end "T__90"
 
-    // $ANTLR start T91
-    public final void mT91() throws RecognitionException {
+    // $ANTLR start "T__91"
+    public final void mT__91() throws RecognitionException {
         try {
-            int _type = T91;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:77:5: ( '-=' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:77:7: '-='
+            int _type = T__91;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:78:7: ( '-=' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:78:9: '-='
             {
             match("-="); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T91
+    // $ANTLR end "T__91"
 
-    // $ANTLR start T92
-    public final void mT92() throws RecognitionException {
+    // $ANTLR start "T__92"
+    public final void mT__92() throws RecognitionException {
         try {
-            int _type = T92;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:78:5: ( '*=' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:78:7: '*='
+            int _type = T__92;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:79:7: ( '*=' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:79:9: '*='
             {
             match("*="); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T92
+    // $ANTLR end "T__92"
 
-    // $ANTLR start T93
-    public final void mT93() throws RecognitionException {
+    // $ANTLR start "T__93"
+    public final void mT__93() throws RecognitionException {
         try {
-            int _type = T93;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:79:5: ( '/=' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:79:7: '/='
+            int _type = T__93;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:80:7: ( '/=' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:80:9: '/='
             {
             match("/="); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T93
+    // $ANTLR end "T__93"
 
-    // $ANTLR start T94
-    public final void mT94() throws RecognitionException {
+    // $ANTLR start "T__94"
+    public final void mT__94() throws RecognitionException {
         try {
-            int _type = T94;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:80:5: ( '&=' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:80:7: '&='
+            int _type = T__94;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:81:7: ( '&=' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:81:9: '&='
             {
             match("&="); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T94
+    // $ANTLR end "T__94"
 
-    // $ANTLR start T95
-    public final void mT95() throws RecognitionException {
+    // $ANTLR start "T__95"
+    public final void mT__95() throws RecognitionException {
         try {
-            int _type = T95;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:81:5: ( '|=' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:81:7: '|='
+            int _type = T__95;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:82:7: ( '|=' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:82:9: '|='
             {
             match("|="); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T95
+    // $ANTLR end "T__95"
 
-    // $ANTLR start T96
-    public final void mT96() throws RecognitionException {
+    // $ANTLR start "T__96"
+    public final void mT__96() throws RecognitionException {
         try {
-            int _type = T96;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:82:5: ( '^=' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:82:7: '^='
+            int _type = T__96;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:83:7: ( '^=' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:83:9: '^='
             {
             match("^="); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T96
+    // $ANTLR end "T__96"
 
-    // $ANTLR start T97
-    public final void mT97() throws RecognitionException {
+    // $ANTLR start "T__97"
+    public final void mT__97() throws RecognitionException {
         try {
-            int _type = T97;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:83:5: ( '%=' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:83:7: '%='
+            int _type = T__97;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:84:7: ( '%=' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:84:9: '%='
             {
             match("%="); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T97
+    // $ANTLR end "T__97"
 
-    // $ANTLR start T98
-    public final void mT98() throws RecognitionException {
+    // $ANTLR start "T__98"
+    public final void mT__98() throws RecognitionException {
         try {
-            int _type = T98;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:84:5: ( '||' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:84:7: '||'
+            int _type = T__98;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:85:7: ( '||' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:85:9: '||'
             {
             match("||"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T98
+    // $ANTLR end "T__98"
 
-    // $ANTLR start T99
-    public final void mT99() throws RecognitionException {
+    // $ANTLR start "T__99"
+    public final void mT__99() throws RecognitionException {
         try {
-            int _type = T99;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:85:5: ( '&&' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:85:7: '&&'
+            int _type = T__99;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:86:7: ( '&&' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:86:9: '&&'
             {
             match("&&"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T99
+    // $ANTLR end "T__99"
 
-    // $ANTLR start T100
-    public final void mT100() throws RecognitionException {
+    // $ANTLR start "T__100"
+    public final void mT__100() throws RecognitionException {
         try {
-            int _type = T100;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:86:6: ( '|' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:86:8: '|'
+            int _type = T__100;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:87:8: ( '|' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:87:10: '|'
             {
             match('|'); 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T100
+    // $ANTLR end "T__100"
 
-    // $ANTLR start T101
-    public final void mT101() throws RecognitionException {
+    // $ANTLR start "T__101"
+    public final void mT__101() throws RecognitionException {
         try {
-            int _type = T101;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:87:6: ( '^' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:87:8: '^'
+            int _type = T__101;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:88:8: ( '^' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:88:10: '^'
             {
             match('^'); 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T101
+    // $ANTLR end "T__101"
 
-    // $ANTLR start T102
-    public final void mT102() throws RecognitionException {
+    // $ANTLR start "T__102"
+    public final void mT__102() throws RecognitionException {
         try {
-            int _type = T102;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:88:6: ( '==' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:88:8: '=='
+            int _type = T__102;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:89:8: ( '==' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:89:10: '=='
             {
             match("=="); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T102
+    // $ANTLR end "T__102"
 
-    // $ANTLR start T103
-    public final void mT103() throws RecognitionException {
+    // $ANTLR start "T__103"
+    public final void mT__103() throws RecognitionException {
         try {
-            int _type = T103;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:89:6: ( '!=' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:89:8: '!='
+            int _type = T__103;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:90:8: ( '!=' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:90:10: '!='
             {
             match("!="); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T103
+    // $ANTLR end "T__103"
 
-    // $ANTLR start T104
-    public final void mT104() throws RecognitionException {
+    // $ANTLR start "T__104"
+    public final void mT__104() throws RecognitionException {
         try {
-            int _type = T104;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:90:6: ( 'instanceof' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:90:8: 'instanceof'
+            int _type = T__104;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:91:8: ( 'instanceof' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:91:10: 'instanceof'
             {
             match("instanceof"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T104
+    // $ANTLR end "T__104"
 
-    // $ANTLR start T105
-    public final void mT105() throws RecognitionException {
+    // $ANTLR start "T__105"
+    public final void mT__105() throws RecognitionException {
         try {
-            int _type = T105;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:91:6: ( '+' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:91:8: '+'
+            int _type = T__105;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:92:8: ( '+' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:92:10: '+'
             {
             match('+'); 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T105
+    // $ANTLR end "T__105"
 
-    // $ANTLR start T106
-    public final void mT106() throws RecognitionException {
+    // $ANTLR start "T__106"
+    public final void mT__106() throws RecognitionException {
         try {
-            int _type = T106;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:92:6: ( '-' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:92:8: '-'
+            int _type = T__106;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:93:8: ( '-' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:93:10: '-'
             {
             match('-'); 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T106
+    // $ANTLR end "T__106"
 
-    // $ANTLR start T107
-    public final void mT107() throws RecognitionException {
+    // $ANTLR start "T__107"
+    public final void mT__107() throws RecognitionException {
         try {
-            int _type = T107;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:93:6: ( '/' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:93:8: '/'
+            int _type = T__107;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:94:8: ( '/' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:94:10: '/'
             {
             match('/'); 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T107
+    // $ANTLR end "T__107"
 
-    // $ANTLR start T108
-    public final void mT108() throws RecognitionException {
+    // $ANTLR start "T__108"
+    public final void mT__108() throws RecognitionException {
         try {
-            int _type = T108;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:94:6: ( '%' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:94:8: '%'
+            int _type = T__108;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:95:8: ( '%' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:95:10: '%'
             {
             match('%'); 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T108
+    // $ANTLR end "T__108"
 
-    // $ANTLR start T109
-    public final void mT109() throws RecognitionException {
+    // $ANTLR start "T__109"
+    public final void mT__109() throws RecognitionException {
         try {
-            int _type = T109;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:95:6: ( '++' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:95:8: '++'
+            int _type = T__109;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:96:8: ( '++' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:96:10: '++'
             {
             match("++"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T109
+    // $ANTLR end "T__109"
 
-    // $ANTLR start T110
-    public final void mT110() throws RecognitionException {
+    // $ANTLR start "T__110"
+    public final void mT__110() throws RecognitionException {
         try {
-            int _type = T110;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:96:6: ( '--' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:96:8: '--'
+            int _type = T__110;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:97:8: ( '--' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:97:10: '--'
             {
             match("--"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T110
+    // $ANTLR end "T__110"
 
-    // $ANTLR start T111
-    public final void mT111() throws RecognitionException {
+    // $ANTLR start "T__111"
+    public final void mT__111() throws RecognitionException {
         try {
-            int _type = T111;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:97:6: ( '~' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:97:8: '~'
+            int _type = T__111;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:98:8: ( '~' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:98:10: '~'
             {
             match('~'); 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T111
+    // $ANTLR end "T__111"
 
-    // $ANTLR start T112
-    public final void mT112() throws RecognitionException {
+    // $ANTLR start "T__112"
+    public final void mT__112() throws RecognitionException {
         try {
-            int _type = T112;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:98:6: ( '!' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:98:8: '!'
+            int _type = T__112;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:99:8: ( '!' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:99:10: '!'
             {
             match('!'); 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T112
+    // $ANTLR end "T__112"
 
-    // $ANTLR start T113
-    public final void mT113() throws RecognitionException {
+    // $ANTLR start "T__113"
+    public final void mT__113() throws RecognitionException {
         try {
-            int _type = T113;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:99:6: ( 'this' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:99:8: 'this'
+            int _type = T__113;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:100:8: ( 'this' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:100:10: 'this'
             {
             match("this"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T113
+    // $ANTLR end "T__113"
 
-    // $ANTLR start T114
-    public final void mT114() throws RecognitionException {
+    // $ANTLR start "T__114"
+    public final void mT__114() throws RecognitionException {
         try {
-            int _type = T114;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:100:6: ( 'new' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:100:8: 'new'
+            int _type = T__114;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:101:8: ( 'new' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:101:10: 'new'
             {
             match("new"); 
 
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end T114
+    // $ANTLR end "T__114"
 
-    // $ANTLR start HexLiteral
+    // $ANTLR start "HexLiteral"
     public final void mHexLiteral() throws RecognitionException {
         try {
             int _type = HexLiteral;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:960:12: ( '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )? )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:960:14: '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )?
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:960:12: ( '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )? )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:960:14: '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )?
             {
             match('0'); 
             if ( input.LA(1)=='X'||input.LA(1)=='x' ) {
@@ -1854,12 +2039,11 @@
 
             }
             else {
-                MismatchedSetException mse =
-                    new MismatchedSetException(null,input);
-                recover(mse);    throw mse;
-            }
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:960:28: ( HexDigit )+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:960:28: ( HexDigit )+
             int cnt1=0;
             loop1:
             do {
@@ -1873,7 +2057,7 @@
 
                 switch (alt1) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:960:28: HexDigit
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:960:28: HexDigit
             	    {
             	    mHexDigit(); 
 
@@ -1889,7 +2073,7 @@
                 cnt1++;
             } while (true);
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:960:38: ( IntegerTypeSuffix )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:960:38: ( IntegerTypeSuffix )?
             int alt2=2;
             int LA2_0 = input.LA(1);
 
@@ -1898,7 +2082,7 @@
             }
             switch (alt2) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:960:38: IntegerTypeSuffix
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:960:38: IntegerTypeSuffix
                     {
                     mIntegerTypeSuffix(); 
 
@@ -1910,21 +2094,23 @@
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end HexLiteral
+    // $ANTLR end "HexLiteral"
 
-    // $ANTLR start DecimalLiteral
+    // $ANTLR start "DecimalLiteral"
     public final void mDecimalLiteral() throws RecognitionException {
         try {
             int _type = DecimalLiteral;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:962:16: ( ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )? )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:962:18: ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )?
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:962:16: ( ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )? )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:962:18: ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )?
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:962:18: ( '0' | '1' .. '9' ( '0' .. '9' )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:962:18: ( '0' | '1' .. '9' ( '0' .. '9' )* )
             int alt4=2;
             int LA4_0 = input.LA(1);
 
@@ -1936,23 +2122,23 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("962:18: ( '0' | '1' .. '9' ( '0' .. '9' )* )", 4, 0, input);
+                    new NoViableAltException("", 4, 0, input);
 
                 throw nvae;
             }
             switch (alt4) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:962:19: '0'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:962:19: '0'
                     {
                     match('0'); 
 
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:962:25: '1' .. '9' ( '0' .. '9' )*
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:962:25: '1' .. '9' ( '0' .. '9' )*
                     {
                     matchRange('1','9'); 
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:962:34: ( '0' .. '9' )*
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:962:34: ( '0' .. '9' )*
                     loop3:
                     do {
                         int alt3=2;
@@ -1965,7 +2151,7 @@
 
                         switch (alt3) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:962:34: '0' .. '9'
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:962:34: '0' .. '9'
                     	    {
                     	    matchRange('0','9'); 
 
@@ -1983,7 +2169,7 @@
 
             }
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:962:45: ( IntegerTypeSuffix )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:962:45: ( IntegerTypeSuffix )?
             int alt5=2;
             int LA5_0 = input.LA(1);
 
@@ -1992,7 +2178,7 @@
             }
             switch (alt5) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:962:45: IntegerTypeSuffix
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:962:45: IntegerTypeSuffix
                     {
                     mIntegerTypeSuffix(); 
 
@@ -2004,22 +2190,24 @@
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end DecimalLiteral
+    // $ANTLR end "DecimalLiteral"
 
-    // $ANTLR start OctalLiteral
+    // $ANTLR start "OctalLiteral"
     public final void mOctalLiteral() throws RecognitionException {
         try {
             int _type = OctalLiteral;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:964:14: ( '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )? )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:964:16: '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )?
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:964:14: ( '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )? )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:964:16: '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )?
             {
             match('0'); 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:964:20: ( '0' .. '7' )+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:964:20: ( '0' .. '7' )+
             int cnt6=0;
             loop6:
             do {
@@ -2033,7 +2221,7 @@
 
                 switch (alt6) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:964:21: '0' .. '7'
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:964:21: '0' .. '7'
             	    {
             	    matchRange('0','7'); 
 
@@ -2049,7 +2237,7 @@
                 cnt6++;
             } while (true);
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:964:32: ( IntegerTypeSuffix )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:964:32: ( IntegerTypeSuffix )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -2058,7 +2246,7 @@
             }
             switch (alt7) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:964:32: IntegerTypeSuffix
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:964:32: IntegerTypeSuffix
                     {
                     mIntegerTypeSuffix(); 
 
@@ -2070,28 +2258,28 @@
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end OctalLiteral
+    // $ANTLR end "OctalLiteral"
 
-    // $ANTLR start HexDigit
+    // $ANTLR start "HexDigit"
     public final void mHexDigit() throws RecognitionException {
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:967:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:967:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:967:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:967: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();
 
             }
             else {
-                MismatchedSetException mse =
-                    new MismatchedSetException(null,input);
-                recover(mse);    throw mse;
-            }
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
 
 
             }
@@ -2100,23 +2288,22 @@
         finally {
         }
     }
-    // $ANTLR end HexDigit
+    // $ANTLR end "HexDigit"
 
-    // $ANTLR start IntegerTypeSuffix
+    // $ANTLR start "IntegerTypeSuffix"
     public final void mIntegerTypeSuffix() throws RecognitionException {
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:970:19: ( ( 'l' | 'L' ) )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:970:21: ( 'l' | 'L' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:970:19: ( ( 'l' | 'L' ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:970:21: ( 'l' | 'L' )
             {
             if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
                 input.consume();
 
             }
             else {
-                MismatchedSetException mse =
-                    new MismatchedSetException(null,input);
-                recover(mse);    throw mse;
-            }
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
 
 
             }
@@ -2125,20 +2312,21 @@
         finally {
         }
     }
-    // $ANTLR end IntegerTypeSuffix
+    // $ANTLR end "IntegerTypeSuffix"
 
-    // $ANTLR start FloatingPointLiteral
+    // $ANTLR start "FloatingPointLiteral"
     public final void mFloatingPointLiteral() throws RecognitionException {
         try {
             int _type = FloatingPointLiteral;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:973:5: ( ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )? | '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )? | ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )? | ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix )
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:973:5: ( ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )? | '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )? | ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )? | ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix )
             int alt19=4;
             alt19 = dfa19.predict(input);
             switch (alt19) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:973:9: ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:973:9: ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )?
                     {
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:973:9: ( '0' .. '9' )+
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:973:9: ( '0' .. '9' )+
                     int cnt8=0;
                     loop8:
                     do {
@@ -2152,7 +2340,7 @@
 
                         switch (alt8) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:973:10: '0' .. '9'
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:973:10: '0' .. '9'
                     	    {
                     	    matchRange('0','9'); 
 
@@ -2169,7 +2357,7 @@
                     } while (true);
 
                     match('.'); 
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:973:25: ( '0' .. '9' )*
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:973:25: ( '0' .. '9' )*
                     loop9:
                     do {
                         int alt9=2;
@@ -2182,7 +2370,7 @@
 
                         switch (alt9) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:973:26: '0' .. '9'
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:973:26: '0' .. '9'
                     	    {
                     	    matchRange('0','9'); 
 
@@ -2194,7 +2382,7 @@
                         }
                     } while (true);
 
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:973:37: ( Exponent )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:973:37: ( Exponent )?
                     int alt10=2;
                     int LA10_0 = input.LA(1);
 
@@ -2203,7 +2391,7 @@
                     }
                     switch (alt10) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:973:37: Exponent
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:973:37: Exponent
                             {
                             mExponent(); 
 
@@ -2212,7 +2400,7 @@
 
                     }
 
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:973:47: ( FloatTypeSuffix )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:973:47: ( FloatTypeSuffix )?
                     int alt11=2;
                     int LA11_0 = input.LA(1);
 
@@ -2221,7 +2409,7 @@
                     }
                     switch (alt11) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:973:47: FloatTypeSuffix
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:973:47: FloatTypeSuffix
                             {
                             mFloatTypeSuffix(); 
 
@@ -2234,10 +2422,10 @@
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:974:9: '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:974:9: '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )?
                     {
                     match('.'); 
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:974:13: ( '0' .. '9' )+
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:974:13: ( '0' .. '9' )+
                     int cnt12=0;
                     loop12:
                     do {
@@ -2251,7 +2439,7 @@
 
                         switch (alt12) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:974:14: '0' .. '9'
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:974:14: '0' .. '9'
                     	    {
                     	    matchRange('0','9'); 
 
@@ -2267,7 +2455,7 @@
                         cnt12++;
                     } while (true);
 
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:974:25: ( Exponent )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:974:25: ( Exponent )?
                     int alt13=2;
                     int LA13_0 = input.LA(1);
 
@@ -2276,7 +2464,7 @@
                     }
                     switch (alt13) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:974:25: Exponent
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:974:25: Exponent
                             {
                             mExponent(); 
 
@@ -2285,7 +2473,7 @@
 
                     }
 
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:974:35: ( FloatTypeSuffix )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:974:35: ( FloatTypeSuffix )?
                     int alt14=2;
                     int LA14_0 = input.LA(1);
 
@@ -2294,7 +2482,7 @@
                     }
                     switch (alt14) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:974:35: FloatTypeSuffix
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:974:35: FloatTypeSuffix
                             {
                             mFloatTypeSuffix(); 
 
@@ -2307,9 +2495,9 @@
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:975:9: ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:975:9: ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )?
                     {
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:975:9: ( '0' .. '9' )+
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:975:9: ( '0' .. '9' )+
                     int cnt15=0;
                     loop15:
                     do {
@@ -2323,7 +2511,7 @@
 
                         switch (alt15) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:975:10: '0' .. '9'
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:975:10: '0' .. '9'
                     	    {
                     	    matchRange('0','9'); 
 
@@ -2340,7 +2528,7 @@
                     } while (true);
 
                     mExponent(); 
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:975:30: ( FloatTypeSuffix )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:975:30: ( FloatTypeSuffix )?
                     int alt16=2;
                     int LA16_0 = input.LA(1);
 
@@ -2349,7 +2537,7 @@
                     }
                     switch (alt16) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:975:30: FloatTypeSuffix
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:975:30: FloatTypeSuffix
                             {
                             mFloatTypeSuffix(); 
 
@@ -2362,9 +2550,9 @@
                     }
                     break;
                 case 4 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:976:9: ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:976:9: ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix
                     {
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:976:9: ( '0' .. '9' )+
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:976:9: ( '0' .. '9' )+
                     int cnt17=0;
                     loop17:
                     do {
@@ -2378,7 +2566,7 @@
 
                         switch (alt17) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:976:10: '0' .. '9'
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:976:10: '0' .. '9'
                     	    {
                     	    matchRange('0','9'); 
 
@@ -2394,7 +2582,7 @@
                         cnt17++;
                     } while (true);
 
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:976:21: ( Exponent )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:976:21: ( Exponent )?
                     int alt18=2;
                     int LA18_0 = input.LA(1);
 
@@ -2403,7 +2591,7 @@
                     }
                     switch (alt18) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:976:21: Exponent
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:976:21: Exponent
                             {
                             mExponent(); 
 
@@ -2418,30 +2606,30 @@
                     break;
 
             }
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end FloatingPointLiteral
+    // $ANTLR end "FloatingPointLiteral"
 
-    // $ANTLR start Exponent
+    // $ANTLR start "Exponent"
     public final void mExponent() throws RecognitionException {
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:980:10: ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:980:12: ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:980:10: ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:980:12: ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+
             {
             if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
                 input.consume();
 
             }
             else {
-                MismatchedSetException mse =
-                    new MismatchedSetException(null,input);
-                recover(mse);    throw mse;
-            }
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:980:22: ( '+' | '-' )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:980:22: ( '+' | '-' )?
             int alt20=2;
             int LA20_0 = input.LA(1);
 
@@ -2450,17 +2638,16 @@
             }
             switch (alt20) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:
                     {
                     if ( input.LA(1)=='+'||input.LA(1)=='-' ) {
                         input.consume();
 
                     }
                     else {
-                        MismatchedSetException mse =
-                            new MismatchedSetException(null,input);
-                        recover(mse);    throw mse;
-                    }
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;}
 
 
                     }
@@ -2468,7 +2655,7 @@
 
             }
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:980:33: ( '0' .. '9' )+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:980:33: ( '0' .. '9' )+
             int cnt21=0;
             loop21:
             do {
@@ -2482,7 +2669,7 @@
 
                 switch (alt21) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:980:34: '0' .. '9'
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:980:34: '0' .. '9'
             	    {
             	    matchRange('0','9'); 
 
@@ -2505,23 +2692,22 @@
         finally {
         }
     }
-    // $ANTLR end Exponent
+    // $ANTLR end "Exponent"
 
-    // $ANTLR start FloatTypeSuffix
+    // $ANTLR start "FloatTypeSuffix"
     public final void mFloatTypeSuffix() throws RecognitionException {
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:983:17: ( ( 'f' | 'F' | 'd' | 'D' ) )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:983:19: ( 'f' | 'F' | 'd' | 'D' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:983:17: ( ( 'f' | 'F' | 'd' | 'D' ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:983:19: ( 'f' | 'F' | 'd' | 'D' )
             {
             if ( input.LA(1)=='D'||input.LA(1)=='F'||input.LA(1)=='d'||input.LA(1)=='f' ) {
                 input.consume();
 
             }
             else {
-                MismatchedSetException mse =
-                    new MismatchedSetException(null,input);
-                recover(mse);    throw mse;
-            }
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
 
 
             }
@@ -2530,52 +2716,52 @@
         finally {
         }
     }
-    // $ANTLR end FloatTypeSuffix
+    // $ANTLR end "FloatTypeSuffix"
 
-    // $ANTLR start CharacterLiteral
+    // $ANTLR start "CharacterLiteral"
     public final void mCharacterLiteral() throws RecognitionException {
         try {
             int _type = CharacterLiteral;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:986:5: ( '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\'' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:986:9: '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\''
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:986:5: ( '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\'' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:986:9: '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\''
             {
             match('\''); 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:986:14: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:986:14: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )
             int alt22=2;
             int LA22_0 = input.LA(1);
 
             if ( (LA22_0=='\\') ) {
                 alt22=1;
             }
-            else if ( ((LA22_0>='\u0000' && LA22_0<='&')||(LA22_0>='(' && LA22_0<='[')||(LA22_0>=']' && LA22_0<='\uFFFE')) ) {
+            else if ( ((LA22_0>='\u0000' && LA22_0<='&')||(LA22_0>='(' && LA22_0<='[')||(LA22_0>=']' && LA22_0<='\uFFFF')) ) {
                 alt22=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("986:14: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )", 22, 0, input);
+                    new NoViableAltException("", 22, 0, input);
 
                 throw nvae;
             }
             switch (alt22) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:986:16: EscapeSequence
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:986:16: EscapeSequence
                     {
                     mEscapeSequence(); 
 
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:986:33: ~ ( '\\'' | '\\\\' )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:986:33: ~ ( '\\'' | '\\\\' )
                     {
-                    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
+                    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                         input.consume();
 
                     }
                     else {
-                        MismatchedSetException mse =
-                            new MismatchedSetException(null,input);
-                        recover(mse);    throw mse;
-                    }
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;}
 
 
                     }
@@ -2587,22 +2773,24 @@
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end CharacterLiteral
+    // $ANTLR end "CharacterLiteral"
 
-    // $ANTLR start StringLiteral
+    // $ANTLR start "StringLiteral"
     public final void mStringLiteral() throws RecognitionException {
         try {
             int _type = StringLiteral;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:990:5: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:990:8: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:990:5: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:990:8: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
             {
             match('\"'); 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:990:12: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:990:12: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
             loop23:
             do {
                 int alt23=3;
@@ -2611,31 +2799,30 @@
                 if ( (LA23_0=='\\') ) {
                     alt23=1;
                 }
-                else if ( ((LA23_0>='\u0000' && LA23_0<='!')||(LA23_0>='#' && LA23_0<='[')||(LA23_0>=']' && LA23_0<='\uFFFE')) ) {
+                else if ( ((LA23_0>='\u0000' && LA23_0<='!')||(LA23_0>='#' && LA23_0<='[')||(LA23_0>=']' && LA23_0<='\uFFFF')) ) {
                     alt23=2;
                 }
 
 
                 switch (alt23) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:990:14: EscapeSequence
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:990:14: EscapeSequence
             	    {
             	    mEscapeSequence(); 
 
             	    }
             	    break;
             	case 2 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:990:31: ~ ( '\\\\' | '\"' )
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:990:31: ~ ( '\\\\' | '\"' )
             	    {
-            	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
+            	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
             	        input.consume();
 
             	    }
             	    else {
-            	        MismatchedSetException mse =
-            	            new MismatchedSetException(null,input);
-            	        recover(mse);    throw mse;
-            	    }
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
 
 
             	    }
@@ -2650,27 +2837,23 @@
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end StringLiteral
+    // $ANTLR end "StringLiteral"
 
-    // $ANTLR start EscapeSequence
+    // $ANTLR start "EscapeSequence"
     public final void mEscapeSequence() throws RecognitionException {
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:995:5: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | UnicodeEscape | OctalEscape )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:995:5: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | UnicodeEscape | OctalEscape )
             int alt24=3;
             int LA24_0 = input.LA(1);
 
             if ( (LA24_0=='\\') ) {
                 switch ( input.LA(2) ) {
-                case 'u':
-                    {
-                    alt24=2;
-                    }
-                    break;
                 case '\"':
                 case '\'':
                 case '\\':
@@ -2683,6 +2866,11 @@
                     alt24=1;
                     }
                     break;
+                case 'u':
+                    {
+                    alt24=2;
+                    }
+                    break;
                 case '0':
                 case '1':
                 case '2':
@@ -2697,7 +2885,7 @@
                     break;
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("993:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | UnicodeEscape | OctalEscape );", 24, 1, input);
+                        new NoViableAltException("", 24, 1, input);
 
                     throw nvae;
                 }
@@ -2705,13 +2893,13 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("993:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | UnicodeEscape | OctalEscape );", 24, 0, input);
+                    new NoViableAltException("", 24, 0, input);
 
                 throw nvae;
             }
             switch (alt24) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:995:9: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:995:9: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' )
                     {
                     match('\\'); 
                     if ( 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' ) {
@@ -2719,23 +2907,22 @@
 
                     }
                     else {
-                        MismatchedSetException mse =
-                            new MismatchedSetException(null,input);
-                        recover(mse);    throw mse;
-                    }
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;}
 
 
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:996:9: UnicodeEscape
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:996:9: UnicodeEscape
                     {
                     mUnicodeEscape(); 
 
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:997:9: OctalEscape
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:997:9: OctalEscape
                     {
                     mOctalEscape(); 
 
@@ -2747,12 +2934,12 @@
         finally {
         }
     }
-    // $ANTLR end EscapeSequence
+    // $ANTLR end "EscapeSequence"
 
-    // $ANTLR start OctalEscape
+    // $ANTLR start "OctalEscape"
     public final void mOctalEscape() throws RecognitionException {
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1002:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1002:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
             int alt25=3;
             int LA25_0 = input.LA(1);
 
@@ -2785,38 +2972,38 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("1000:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 25, 1, input);
+                        new NoViableAltException("", 25, 1, input);
 
                     throw nvae;
                 }
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1000:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 25, 0, input);
+                    new NoViableAltException("", 25, 0, input);
 
                 throw nvae;
             }
             switch (alt25) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1002:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1002:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
                     {
                     match('\\'); 
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1002:14: ( '0' .. '3' )
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1002:15: '0' .. '3'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1002:14: ( '0' .. '3' )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1002:15: '0' .. '3'
                     {
                     matchRange('0','3'); 
 
                     }
 
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1002:25: ( '0' .. '7' )
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1002:26: '0' .. '7'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1002:25: ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1002:26: '0' .. '7'
                     {
                     matchRange('0','7'); 
 
                     }
 
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1002:36: ( '0' .. '7' )
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1002:37: '0' .. '7'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1002:36: ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1002:37: '0' .. '7'
                     {
                     matchRange('0','7'); 
 
@@ -2826,18 +3013,18 @@
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1003:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1003:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
                     {
                     match('\\'); 
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1003:14: ( '0' .. '7' )
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1003:15: '0' .. '7'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1003:14: ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1003:15: '0' .. '7'
                     {
                     matchRange('0','7'); 
 
                     }
 
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1003:25: ( '0' .. '7' )
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1003:26: '0' .. '7'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1003:25: ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1003:26: '0' .. '7'
                     {
                     matchRange('0','7'); 
 
@@ -2847,11 +3034,11 @@
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1004:9: '\\\\' ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1004:9: '\\\\' ( '0' .. '7' )
                     {
                     match('\\'); 
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1004:14: ( '0' .. '7' )
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1004:15: '0' .. '7'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1004:14: ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1004:15: '0' .. '7'
                     {
                     matchRange('0','7'); 
 
@@ -2866,13 +3053,13 @@
         finally {
         }
     }
-    // $ANTLR end OctalEscape
+    // $ANTLR end "OctalEscape"
 
-    // $ANTLR start UnicodeEscape
+    // $ANTLR start "UnicodeEscape"
     public final void mUnicodeEscape() throws RecognitionException {
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1009:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1009:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1009:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1009:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
             {
             match('\\'); 
             match('u'); 
@@ -2887,14 +3074,15 @@
         finally {
         }
     }
-    // $ANTLR end UnicodeEscape
+    // $ANTLR end "UnicodeEscape"
 
-    // $ANTLR start ENUM
+    // $ANTLR start "ENUM"
     public final void mENUM() throws RecognitionException {
         try {
             int _type = ENUM;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1012:5: ( 'enum' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1012:7: 'enum'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1012:5: ( 'enum' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1012:7: 'enum'
             {
             match("enum"); 
 
@@ -2902,22 +3090,24 @@
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end ENUM
+    // $ANTLR end "ENUM"
 
-    // $ANTLR start Identifier
+    // $ANTLR start "Identifier"
     public final void mIdentifier() throws RecognitionException {
         try {
             int _type = Identifier;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1016:5: ( Letter ( Letter | JavaIDDigit )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1016:9: Letter ( Letter | JavaIDDigit )*
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1016:5: ( Letter ( Letter | JavaIDDigit )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1016:9: Letter ( Letter | JavaIDDigit )*
             {
             mLetter(); 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1016:16: ( Letter | JavaIDDigit )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1016:16: ( Letter | JavaIDDigit )*
             loop26:
             do {
                 int alt26=2;
@@ -2930,17 +3120,16 @@
 
                 switch (alt26) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:
             	    {
             	    if ( input.LA(1)=='$'||(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)<='\u00D6')||(input.LA(1)>='\u00D8' && input.LA(1)<='\u00F6')||(input.LA(1)>='\u00F8' && input.LA(1)<='\u1FFF')||(input.LA(1)>='\u3040' && input.LA(1)<='\u318F')||(input.LA(1)>='\u3300' && input.LA(1)<='\u337F')||(input.LA(1)>='\u3400' && input.LA(1)<='\u3D2D')||(input.LA(1)>='\u4E00' && input.LA(1)<='\u9FFF')||(input.LA(1)>='\uF900' && input.LA(1)<='\uFAFF') ) {
             	        input.consume();
 
             	    }
             	    else {
-            	        MismatchedSetException mse =
-            	            new MismatchedSetException(null,input);
-            	        recover(mse);    throw mse;
-            	    }
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
 
 
             	    }
@@ -2954,28 +3143,28 @@
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end Identifier
+    // $ANTLR end "Identifier"
 
-    // $ANTLR start Letter
+    // $ANTLR start "Letter"
     public final void mLetter() throws RecognitionException {
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1024:5: ( '\\u0024' | '\\u0041' .. '\\u005a' | '\\u005f' | '\\u0061' .. '\\u007a' | '\\u00c0' .. '\\u00d6' | '\\u00d8' .. '\\u00f6' | '\\u00f8' .. '\\u00ff' | '\\u0100' .. '\\u1fff' | '\\u3040' .. '\\u318f' | '\\u3300' .. '\\u337f' | '\\u3400' .. '\\u3d2d' | '\\u4e00' .. '\\u9fff' | '\\uf900' .. '\\ufaff' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1024:5: ( '\\u0024' | '\\u0041' .. '\\u005a' | '\\u005f' | '\\u0061' .. '\\u007a' | '\\u00c0' .. '\\u00d6' | '\\u00d8' .. '\\u00f6' | '\\u00f8' .. '\\u00ff' | '\\u0100' .. '\\u1fff' | '\\u3040' .. '\\u318f' | '\\u3300' .. '\\u337f' | '\\u3400' .. '\\u3d2d' | '\\u4e00' .. '\\u9fff' | '\\uf900' .. '\\ufaff' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:
             {
             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)<='\u00D6')||(input.LA(1)>='\u00D8' && input.LA(1)<='\u00F6')||(input.LA(1)>='\u00F8' && input.LA(1)<='\u1FFF')||(input.LA(1)>='\u3040' && input.LA(1)<='\u318F')||(input.LA(1)>='\u3300' && input.LA(1)<='\u337F')||(input.LA(1)>='\u3400' && input.LA(1)<='\u3D2D')||(input.LA(1)>='\u4E00' && input.LA(1)<='\u9FFF')||(input.LA(1)>='\uF900' && input.LA(1)<='\uFAFF') ) {
                 input.consume();
 
             }
             else {
-                MismatchedSetException mse =
-                    new MismatchedSetException(null,input);
-                recover(mse);    throw mse;
-            }
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
 
 
             }
@@ -2984,23 +3173,22 @@
         finally {
         }
     }
-    // $ANTLR end Letter
+    // $ANTLR end "Letter"
 
-    // $ANTLR start JavaIDDigit
+    // $ANTLR start "JavaIDDigit"
     public final void mJavaIDDigit() throws RecognitionException {
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1041:5: ( '\\u0030' .. '\\u0039' | '\\u0660' .. '\\u0669' | '\\u06f0' .. '\\u06f9' | '\\u0966' .. '\\u096f' | '\\u09e6' .. '\\u09ef' | '\\u0a66' .. '\\u0a6f' | '\\u0ae6' .. '\\u0aef' | '\\u0b66' .. '\\u0b6f' | '\\u0be7' .. '\\u0bef' | '\\u0c66' .. '\\u0c6f' | '\\u0ce6' .. '\\u0cef' | '\\u0d66' .. '\\u0d6f' | '\\u0e50' .. '\\u0e59' | '\\u0ed0' .. '\\u0ed9' | '\\u1040' .. '\\u1049' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1041:5: ( '\\u0030' .. '\\u0039' | '\\u0660' .. '\\u0669' | '\\u06f0' .. '\\u06f9' | '\\u0966' .. '\\u096f' | '\\u09e6' .. '\\u09ef' | '\\u0a66' .. '\\u0a6f' | '\\u0ae6' .. '\\u0aef' | '\\u0b66' .. '\\u0b6f' | '\\u0be7' .. '\\u0bef' | '\\u0c66' .. '\\u0c6f' | '\\u0ce6' .. '\\u0cef' | '\\u0d66' .. '\\u0d6f' | '\\u0e50' .. '\\u0e59' | '\\u0ed0' .. '\\u0ed9' | '\\u1040' .. '\\u1049' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:
             {
             if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='\u0660' && input.LA(1)<='\u0669')||(input.LA(1)>='\u06F0' && input.LA(1)<='\u06F9')||(input.LA(1)>='\u0966' && input.LA(1)<='\u096F')||(input.LA(1)>='\u09E6' && input.LA(1)<='\u09EF')||(input.LA(1)>='\u0A66' && input.LA(1)<='\u0A6F')||(input.LA(1)>='\u0AE6' && input.LA(1)<='\u0AEF')||(input.LA(1)>='\u0B66' && input.LA(1)<='\u0B6F')||(input.LA(1)>='\u0BE7' && input.LA(1)<='\u0BEF')||(input.LA(1)>='\u0C66' && input.LA(1)<='\u0C6F')||(input.LA(1)>='\u0CE6' && input.LA(1)<='\u0CEF')||(input.LA(1)>='\u0D66' && input.LA(1)<='\u0D6F')||(input.LA(1)>='\u0E50' && input.LA(1)<='\u0E59')||(input.LA(1)>='\u0ED0' && input.LA(1)<='\u0ED9')||(input.LA(1)>='\u1040' && input.LA(1)<='\u1049') ) {
                 input.consume();
 
             }
             else {
-                MismatchedSetException mse =
-                    new MismatchedSetException(null,input);
-                recover(mse);    throw mse;
-            }
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
 
 
             }
@@ -3009,46 +3197,48 @@
         finally {
         }
     }
-    // $ANTLR end JavaIDDigit
+    // $ANTLR end "JavaIDDigit"
 
-    // $ANTLR start WS
+    // $ANTLR start "WS"
     public final void mWS() throws RecognitionException {
         try {
             int _type = WS;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1058:5: ( ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' ) )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1058:8: ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' )
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1058:5: ( ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1058:8: ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' )
             {
             if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||(input.LA(1)>='\f' && input.LA(1)<='\r')||input.LA(1)==' ' ) {
                 input.consume();
 
             }
             else {
-                MismatchedSetException mse =
-                    new MismatchedSetException(null,input);
-                recover(mse);    throw mse;
-            }
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
 
-            channel=HIDDEN;
+            _channel=HIDDEN;
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end WS
+    // $ANTLR end "WS"
 
-    // $ANTLR start COMMENT
+    // $ANTLR start "COMMENT"
     public final void mCOMMENT() throws RecognitionException {
         try {
             int _type = COMMENT;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1062:5: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1062:9: '/*' ( options {greedy=false; } : . )* '*/'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1062:5: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1062:9: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); 
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1062:14: ( options {greedy=false; } : . )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1062:14: ( options {greedy=false; } : . )*
             loop27:
             do {
                 int alt27=2;
@@ -3060,20 +3250,20 @@
                     if ( (LA27_1=='/') ) {
                         alt27=2;
                     }
-                    else if ( ((LA27_1>='\u0000' && LA27_1<='.')||(LA27_1>='0' && LA27_1<='\uFFFE')) ) {
+                    else if ( ((LA27_1>='\u0000' && LA27_1<='.')||(LA27_1>='0' && LA27_1<='\uFFFF')) ) {
                         alt27=1;
                     }
 
 
                 }
-                else if ( ((LA27_0>='\u0000' && LA27_0<=')')||(LA27_0>='+' && LA27_0<='\uFFFE')) ) {
+                else if ( ((LA27_0>='\u0000' && LA27_0<=')')||(LA27_0>='+' && LA27_0<='\uFFFF')) ) {
                     alt27=1;
                 }
 
 
                 switch (alt27) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1062:42: .
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1062:42: .
             	    {
             	    matchAny(); 
 
@@ -3087,50 +3277,51 @@
 
             match("*/"); 
 
-            channel=HIDDEN;
+            _channel=HIDDEN;
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end COMMENT
+    // $ANTLR end "COMMENT"
 
-    // $ANTLR start LINE_COMMENT
+    // $ANTLR start "LINE_COMMENT"
     public final void mLINE_COMMENT() throws RecognitionException {
         try {
             int _type = LINE_COMMENT;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1066:5: ( '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1066:7: '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1066:5: ( '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1066:7: '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
             {
             match("//"); 
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1066:12: (~ ( '\\n' | '\\r' ) )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1066:12: (~ ( '\\n' | '\\r' ) )*
             loop28:
             do {
                 int alt28=2;
                 int LA28_0 = input.LA(1);
 
-                if ( ((LA28_0>='\u0000' && LA28_0<='\t')||(LA28_0>='\u000B' && LA28_0<='\f')||(LA28_0>='\u000E' && LA28_0<='\uFFFE')) ) {
+                if ( ((LA28_0>='\u0000' && LA28_0<='\t')||(LA28_0>='\u000B' && LA28_0<='\f')||(LA28_0>='\u000E' && LA28_0<='\uFFFF')) ) {
                     alt28=1;
                 }
 
 
                 switch (alt28) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1066:12: ~ ( '\\n' | '\\r' )
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1066:12: ~ ( '\\n' | '\\r' )
             	    {
-            	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFE') ) {
+            	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
             	        input.consume();
 
             	    }
             	    else {
-            	        MismatchedSetException mse =
-            	            new MismatchedSetException(null,input);
-            	        recover(mse);    throw mse;
-            	    }
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
 
 
             	    }
@@ -3141,7 +3332,7 @@
                 }
             } while (true);
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1066:26: ( '\\r' )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1066:26: ( '\\r' )?
             int alt29=2;
             int LA29_0 = input.LA(1);
 
@@ -3150,7 +3341,7 @@
             }
             switch (alt29) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1066:26: '\\r'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1066:26: '\\r'
                     {
                     match('\r'); 
 
@@ -3160,731 +3351,732 @@
             }
 
             match('\n'); 
-            channel=HIDDEN;
+            _channel=HIDDEN;
 
             }
 
-            this.type = _type;
+            state.type = _type;
+            state.channel = _channel;
         }
         finally {
         }
     }
-    // $ANTLR end LINE_COMMENT
+    // $ANTLR end "LINE_COMMENT"
 
     public void mTokens() throws RecognitionException {
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:8: ( T24 | T25 | T26 | T27 | T28 | T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | T38 | T39 | T40 | T41 | T42 | T43 | T44 | T45 | T46 | T47 | T48 | T49 | T50 | T51 | T52 | T53 | T54 | T55 | T56 | T57 | T58 | T59 | T60 | T61 | T62 | T63 | T64 | T65 | T66 | T67 | T68 | T69 | T70 | T71 | T72 | T73 | T74 | T75 | T76 | T77 | T78 | T79 | T80 | T81 | T82 | T83 | T84 | T85 | T86 | T87 | T88 | T89 | T90 | T91 | T92 | T93 | T94 | T95 | T96 | T97 | T98 | T99 | T100 | T101 | T102 | T103 | T104 | T105 | T106 | T107 | T108 | T109 | T110 | T111 | T112 | T113 | T114 | HexLiteral | DecimalLiteral | OctalLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | ENUM | Identifier | WS | COMMENT | LINE_COMMENT )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:8: ( T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | HexLiteral | DecimalLiteral | OctalLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | !
 ENUM | Identifier | WS | COMMENT | LINE_COMMENT )
         int alt30=102;
         alt30 = dfa30.predict(input);
         switch (alt30) {
             case 1 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:10: T24
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:10: T__24
                 {
-                mT24(); 
+                mT__24(); 
 
                 }
                 break;
             case 2 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:14: T25
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:16: T__25
                 {
-                mT25(); 
+                mT__25(); 
 
                 }
                 break;
             case 3 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:18: T26
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:22: T__26
                 {
-                mT26(); 
+                mT__26(); 
 
                 }
                 break;
             case 4 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:22: T27
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:28: T__27
                 {
-                mT27(); 
+                mT__27(); 
 
                 }
                 break;
             case 5 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:26: T28
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:34: T__28
                 {
-                mT28(); 
+                mT__28(); 
 
                 }
                 break;
             case 6 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:30: T29
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:40: T__29
                 {
-                mT29(); 
+                mT__29(); 
 
                 }
                 break;
             case 7 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:34: T30
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:46: T__30
                 {
-                mT30(); 
+                mT__30(); 
 
                 }
                 break;
             case 8 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:38: T31
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:52: T__31
                 {
-                mT31(); 
+                mT__31(); 
 
                 }
                 break;
             case 9 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:42: T32
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:58: T__32
                 {
-                mT32(); 
+                mT__32(); 
 
                 }
                 break;
             case 10 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:46: T33
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:64: T__33
                 {
-                mT33(); 
+                mT__33(); 
 
                 }
                 break;
             case 11 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:50: T34
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:70: T__34
                 {
-                mT34(); 
+                mT__34(); 
 
                 }
                 break;
             case 12 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:54: T35
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:76: T__35
                 {
-                mT35(); 
+                mT__35(); 
 
                 }
                 break;
             case 13 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:58: T36
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:82: T__36
                 {
-                mT36(); 
+                mT__36(); 
 
                 }
                 break;
             case 14 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:62: T37
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:88: T__37
                 {
-                mT37(); 
+                mT__37(); 
 
                 }
                 break;
             case 15 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:66: T38
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:94: T__38
                 {
-                mT38(); 
+                mT__38(); 
 
                 }
                 break;
             case 16 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:70: T39
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:100: T__39
                 {
-                mT39(); 
+                mT__39(); 
 
                 }
                 break;
             case 17 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:74: T40
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:106: T__40
                 {
-                mT40(); 
+                mT__40(); 
 
                 }
                 break;
             case 18 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:78: T41
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:112: T__41
                 {
-                mT41(); 
+                mT__41(); 
 
                 }
                 break;
             case 19 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:82: T42
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:118: T__42
                 {
-                mT42(); 
+                mT__42(); 
 
                 }
                 break;
             case 20 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:86: T43
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:124: T__43
                 {
-                mT43(); 
+                mT__43(); 
 
                 }
                 break;
             case 21 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:90: T44
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:130: T__44
                 {
-                mT44(); 
+                mT__44(); 
 
                 }
                 break;
             case 22 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:94: T45
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:136: T__45
                 {
-                mT45(); 
+                mT__45(); 
 
                 }
                 break;
             case 23 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:98: T46
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:142: T__46
                 {
-                mT46(); 
+                mT__46(); 
 
                 }
                 break;
             case 24 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:102: T47
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:148: T__47
                 {
-                mT47(); 
+                mT__47(); 
 
                 }
                 break;
             case 25 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:106: T48
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:154: T__48
                 {
-                mT48(); 
+                mT__48(); 
 
                 }
                 break;
             case 26 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:110: T49
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:160: T__49
                 {
-                mT49(); 
+                mT__49(); 
 
                 }
                 break;
             case 27 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:114: T50
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:166: T__50
                 {
-                mT50(); 
+                mT__50(); 
 
                 }
                 break;
             case 28 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:118: T51
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:172: T__51
                 {
-                mT51(); 
+                mT__51(); 
 
                 }
                 break;
             case 29 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:122: T52
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:178: T__52
                 {
-                mT52(); 
+                mT__52(); 
 
                 }
                 break;
             case 30 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:126: T53
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:184: T__53
                 {
-                mT53(); 
+                mT__53(); 
 
                 }
                 break;
             case 31 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:130: T54
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:190: T__54
                 {
-                mT54(); 
+                mT__54(); 
 
                 }
                 break;
             case 32 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:134: T55
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:196: T__55
                 {
-                mT55(); 
+                mT__55(); 
 
                 }
                 break;
             case 33 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:138: T56
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:202: T__56
                 {
-                mT56(); 
+                mT__56(); 
 
                 }
                 break;
             case 34 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:142: T57
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:208: T__57
                 {
-                mT57(); 
+                mT__57(); 
 
                 }
                 break;
             case 35 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:146: T58
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:214: T__58
                 {
-                mT58(); 
+                mT__58(); 
 
                 }
                 break;
             case 36 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:150: T59
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:220: T__59
                 {
-                mT59(); 
+                mT__59(); 
 
                 }
                 break;
             case 37 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:154: T60
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:226: T__60
                 {
-                mT60(); 
+                mT__60(); 
 
                 }
                 break;
             case 38 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:158: T61
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:232: T__61
                 {
-                mT61(); 
+                mT__61(); 
 
                 }
                 break;
             case 39 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:162: T62
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:238: T__62
                 {
-                mT62(); 
+                mT__62(); 
 
                 }
                 break;
             case 40 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:166: T63
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:244: T__63
                 {
-                mT63(); 
+                mT__63(); 
 
                 }
                 break;
             case 41 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:170: T64
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:250: T__64
                 {
-                mT64(); 
+                mT__64(); 
 
                 }
                 break;
             case 42 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:174: T65
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:256: T__65
                 {
-                mT65(); 
+                mT__65(); 
 
                 }
                 break;
             case 43 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:178: T66
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:262: T__66
                 {
-                mT66(); 
+                mT__66(); 
 
                 }
                 break;
             case 44 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:182: T67
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:268: T__67
                 {
-                mT67(); 
+                mT__67(); 
 
                 }
                 break;
             case 45 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:186: T68
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:274: T__68
                 {
-                mT68(); 
+                mT__68(); 
 
                 }
                 break;
             case 46 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:190: T69
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:280: T__69
                 {
-                mT69(); 
+                mT__69(); 
 
                 }
                 break;
             case 47 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:194: T70
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:286: T__70
                 {
-                mT70(); 
+                mT__70(); 
 
                 }
                 break;
             case 48 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:198: T71
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:292: T__71
                 {
-                mT71(); 
+                mT__71(); 
 
                 }
                 break;
             case 49 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:202: T72
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:298: T__72
                 {
-                mT72(); 
+                mT__72(); 
 
                 }
                 break;
             case 50 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:206: T73
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:304: T__73
                 {
-                mT73(); 
+                mT__73(); 
 
                 }
                 break;
             case 51 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:210: T74
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:310: T__74
                 {
-                mT74(); 
+                mT__74(); 
 
                 }
                 break;
             case 52 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:214: T75
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:316: T__75
                 {
-                mT75(); 
+                mT__75(); 
 
                 }
                 break;
             case 53 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:218: T76
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:322: T__76
                 {
-                mT76(); 
+                mT__76(); 
 
                 }
                 break;
             case 54 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:222: T77
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:328: T__77
                 {
-                mT77(); 
+                mT__77(); 
 
                 }
                 break;
             case 55 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:226: T78
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:334: T__78
                 {
-                mT78(); 
+                mT__78(); 
 
                 }
                 break;
             case 56 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:230: T79
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:340: T__79
                 {
-                mT79(); 
+                mT__79(); 
 
                 }
                 break;
             case 57 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:234: T80
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:346: T__80
                 {
-                mT80(); 
+                mT__80(); 
 
                 }
                 break;
             case 58 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:238: T81
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:352: T__81
                 {
-                mT81(); 
+                mT__81(); 
 
                 }
                 break;
             case 59 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:242: T82
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:358: T__82
                 {
-                mT82(); 
+                mT__82(); 
 
                 }
                 break;
             case 60 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:246: T83
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:364: T__83
                 {
-                mT83(); 
+                mT__83(); 
 
                 }
                 break;
             case 61 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:250: T84
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:370: T__84
                 {
-                mT84(); 
+                mT__84(); 
 
                 }
                 break;
             case 62 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:254: T85
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:376: T__85
                 {
-                mT85(); 
+                mT__85(); 
 
                 }
                 break;
             case 63 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:258: T86
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:382: T__86
                 {
-                mT86(); 
+                mT__86(); 
 
                 }
                 break;
             case 64 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:262: T87
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:388: T__87
                 {
-                mT87(); 
+                mT__87(); 
 
                 }
                 break;
             case 65 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:266: T88
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:394: T__88
                 {
-                mT88(); 
+                mT__88(); 
 
                 }
                 break;
             case 66 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:270: T89
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:400: T__89
                 {
-                mT89(); 
+                mT__89(); 
 
                 }
                 break;
             case 67 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:274: T90
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:406: T__90
                 {
-                mT90(); 
+                mT__90(); 
 
                 }
                 break;
             case 68 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:278: T91
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:412: T__91
                 {
-                mT91(); 
+                mT__91(); 
 
                 }
                 break;
             case 69 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:282: T92
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:418: T__92
                 {
-                mT92(); 
+                mT__92(); 
 
                 }
                 break;
             case 70 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:286: T93
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:424: T__93
                 {
-                mT93(); 
+                mT__93(); 
 
                 }
                 break;
             case 71 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:290: T94
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:430: T__94
                 {
-                mT94(); 
+                mT__94(); 
 
                 }
                 break;
             case 72 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:294: T95
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:436: T__95
                 {
-                mT95(); 
+                mT__95(); 
 
                 }
                 break;
             case 73 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:298: T96
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:442: T__96
                 {
-                mT96(); 
+                mT__96(); 
 
                 }
                 break;
             case 74 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:302: T97
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:448: T__97
                 {
-                mT97(); 
+                mT__97(); 
 
                 }
                 break;
             case 75 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:306: T98
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:454: T__98
                 {
-                mT98(); 
+                mT__98(); 
 
                 }
                 break;
             case 76 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:310: T99
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:460: T__99
                 {
-                mT99(); 
+                mT__99(); 
 
                 }
                 break;
             case 77 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:314: T100
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:466: T__100
                 {
-                mT100(); 
+                mT__100(); 
 
                 }
                 break;
             case 78 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:319: T101
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:473: T__101
                 {
-                mT101(); 
+                mT__101(); 
 
                 }
                 break;
             case 79 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:324: T102
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:480: T__102
                 {
-                mT102(); 
+                mT__102(); 
 
                 }
                 break;
             case 80 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:329: T103
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:487: T__103
                 {
-                mT103(); 
+                mT__103(); 
 
                 }
                 break;
             case 81 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:334: T104
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:494: T__104
                 {
-                mT104(); 
+                mT__104(); 
 
                 }
                 break;
             case 82 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:339: T105
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:501: T__105
                 {
-                mT105(); 
+                mT__105(); 
 
                 }
                 break;
             case 83 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:344: T106
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:508: T__106
                 {
-                mT106(); 
+                mT__106(); 
 
                 }
                 break;
             case 84 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:349: T107
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:515: T__107
                 {
-                mT107(); 
+                mT__107(); 
 
                 }
                 break;
             case 85 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:354: T108
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:522: T__108
                 {
-                mT108(); 
+                mT__108(); 
 
                 }
                 break;
             case 86 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:359: T109
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:529: T__109
                 {
-                mT109(); 
+                mT__109(); 
 
                 }
                 break;
             case 87 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:364: T110
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:536: T__110
                 {
-                mT110(); 
+                mT__110(); 
 
                 }
                 break;
             case 88 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:369: T111
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:543: T__111
                 {
-                mT111(); 
+                mT__111(); 
 
                 }
                 break;
             case 89 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:374: T112
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:550: T__112
                 {
-                mT112(); 
+                mT__112(); 
 
                 }
                 break;
             case 90 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:379: T113
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:557: T__113
                 {
-                mT113(); 
+                mT__113(); 
 
                 }
                 break;
             case 91 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:384: T114
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:564: T__114
                 {
-                mT114(); 
+                mT__114(); 
 
                 }
                 break;
             case 92 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:389: HexLiteral
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:571: HexLiteral
                 {
                 mHexLiteral(); 
 
                 }
                 break;
             case 93 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:400: DecimalLiteral
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:582: DecimalLiteral
                 {
                 mDecimalLiteral(); 
 
                 }
                 break;
             case 94 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:415: OctalLiteral
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:597: OctalLiteral
                 {
                 mOctalLiteral(); 
 
                 }
                 break;
             case 95 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:428: FloatingPointLiteral
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:610: FloatingPointLiteral
                 {
                 mFloatingPointLiteral(); 
 
                 }
                 break;
             case 96 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:449: CharacterLiteral
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:631: CharacterLiteral
                 {
                 mCharacterLiteral(); 
 
                 }
                 break;
             case 97 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:466: StringLiteral
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:648: StringLiteral
                 {
                 mStringLiteral(); 
 
                 }
                 break;
             case 98 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:480: ENUM
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:662: ENUM
                 {
                 mENUM(); 
 
                 }
                 break;
             case 99 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:485: Identifier
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:667: Identifier
                 {
                 mIdentifier(); 
 
                 }
                 break;
             case 100 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:496: WS
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:678: WS
                 {
                 mWS(); 
 
                 }
                 break;
             case 101 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:499: COMMENT
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:681: COMMENT
                 {
                 mCOMMENT(); 
 
                 }
                 break;
             case 102 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:507: LINE_COMMENT
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:689: LINE_COMMENT
                 {
                 mLINE_COMMENT(); 
 
@@ -3959,99 +4151,102 @@
     static final String DFA30_eotS =
         "\1\uffff\1\56\1\uffff\2\56\1\74\1\77\2\56\3\uffff\1\111\2\uffff"+
         "\1\56\2\uffff\1\56\1\116\6\56\5\uffff\3\56\1\143\1\146\1\152\1\155"+
-        "\1\157\1\161\1\163\1\uffff\2\165\4\uffff\3\56\1\174\7\56\5\uffff"+
-        "\7\56\3\uffff\3\56\2\uffff\16\56\1\u00a4\3\56\25\uffff\1\u00a8\1"+
-        "\165\4\56\1\uffff\1\u00ae\23\56\1\u00c3\10\56\1\u00cc\1\56\1\u00ce"+
-        "\7\56\1\uffff\3\56\1\uffff\5\56\1\uffff\11\56\1\u00e7\1\56\1\u00e9"+
-        "\2\56\1\u00ec\1\u00ed\1\56\1\u00ef\1\56\1\u00f1\1\uffff\1\56\1\u00f3"+
-        "\6\56\1\uffff\1\u00fa\1\uffff\3\56\1\u00fe\1\u00ff\20\56\1\u0110"+
-        "\1\56\1\u0112\1\uffff\1\u0113\1\uffff\1\u0114\1\56\2\uffff\1\56"+
-        "\1\uffff\1\56\1\uffff\1\56\1\uffff\1\u011a\2\56\1\u011d\1\u011f"+
-        "\1\u0120\1\uffff\2\56\1\u0123\2\uffff\2\56\1\u0126\4\56\1\u012b"+
-        "\3\56\1\u012f\2\56\1\u0132\1\u0133\1\uffff\1\56\3\uffff\4\56\1\u0139"+
-        "\1\uffff\1\u013a\1\56\1\uffff\1\56\2\uffff\1\u013d\1\56\1\uffff"+
-        "\1\56\1\u0140\1\uffff\1\u0141\1\u0142\1\u0143\1\56\1\uffff\1\u0145"+
-        "\2\56\1\uffff\2\56\2\uffff\2\56\1\u014c\2\56\2\uffff\1\56\1\u0150"+
-        "\1\uffff\1\u0151\1\u0152\4\uffff\1\56\1\uffff\3\56\1\u0157\1\56"+
-        "\1\u0159\1\uffff\1\u015a\1\56\1\u015c\3\uffff\1\u015d\1\u015e\2"+
-        "\56\1\uffff\1\56\2\uffff\1\u0162\3\uffff\1\u0163\1\u0164\1\56\3"+
-        "\uffff\1\56\1\u0167\1\uffff";
+        "\1\157\1\161\1\163\1\uffff\2\166\4\uffff\5\56\1\177\5\56\5\uffff"+
+        "\7\56\3\uffff\3\56\2\uffff\15\56\1\u00a3\4\56\24\uffff\1\u00a8\1"+
+        "\uffff\1\166\5\56\1\u00b0\1\56\1\uffff\24\56\1\u00c6\5\56\1\u00cc"+
+        "\2\56\1\u00cf\5\56\1\uffff\4\56\1\uffff\7\56\1\uffff\10\56\1\u00e8"+
+        "\2\56\1\u00eb\1\56\1\u00ed\1\u00ee\1\u00ef\2\56\1\u00f2\1\56\1\u00f4"+
+        "\1\uffff\5\56\1\uffff\1\56\1\u00fb\1\uffff\1\56\1\u00fd\1\56\1\u00ff"+
+        "\20\56\1\u0110\1\u0111\1\56\1\u0113\1\uffff\1\56\1\u0115\1\uffff"+
+        "\1\56\3\uffff\1\56\1\u0119\1\uffff\1\56\1\uffff\2\56\1\u011e\1\u011f"+
+        "\1\u0120\1\56\1\uffff\1\56\1\uffff\1\u0123\1\uffff\2\56\1\u0126"+
+        "\3\56\1\u012a\2\56\1\u012d\3\56\1\u0131\2\56\2\uffff\1\u0134\1\uffff"+
+        "\1\56\1\uffff\2\56\1\u0138\1\uffff\2\56\1\u013b\1\56\3\uffff\1\u013d"+
+        "\1\56\1\uffff\1\u013f\1\56\1\uffff\1\u0141\1\u0142\1\u0143\1\uffff"+
+        "\1\56\1\u0145\1\uffff\3\56\1\uffff\2\56\1\uffff\1\56\1\u014c\1\56"+
+        "\1\uffff\2\56\1\uffff\1\u0150\1\uffff\1\u0151\1\uffff\1\u0152\3"+
+        "\uffff\1\56\1\uffff\3\56\1\u0157\1\56\1\u0159\1\uffff\1\u015a\1"+
+        "\56\1\u015c\3\uffff\1\u015d\1\56\1\u015f\1\56\1\uffff\1\56\2\uffff"+
+        "\1\u0162\2\uffff\1\u0163\1\uffff\1\u0164\1\56\3\uffff\1\56\1\u0167"+
+        "\1\uffff";
     static final String DFA30_eofS =
         "\u0168\uffff";
     static final String DFA30_minS =
         "\1\11\1\141\1\uffff\1\146\1\150\1\56\1\75\1\141\1\154\3\uffff\1"+
         "\46\2\uffff\1\157\2\uffff\1\150\1\75\1\142\2\141\2\157\1\145\5\uffff"+
-        "\1\150\1\145\1\157\1\53\1\55\1\52\4\75\1\uffff\2\56\4\uffff\1\151"+
-        "\1\142\1\143\1\44\1\163\1\160\1\141\1\151\1\157\1\156\1\160\5\uffff"+
-        "\1\141\1\163\1\141\1\156\1\163\1\165\1\164\3\uffff\1\151\1\141\1"+
-        "\151\2\uffff\2\163\1\154\1\156\1\157\1\162\1\154\1\167\1\164\1\157"+
-        "\1\145\1\164\1\156\1\146\1\44\1\151\1\164\1\144\25\uffff\2\56\1"+
-        "\166\1\164\1\154\1\153\1\uffff\1\44\1\164\1\154\1\151\2\164\1\162"+
-        "\1\143\1\145\1\162\1\143\1\145\1\163\1\164\1\145\1\155\1\145\1\144"+
-        "\1\141\1\145\1\44\1\156\1\163\1\157\1\145\1\164\1\163\2\141\1\44"+
-        "\1\154\1\44\1\151\1\154\1\141\1\145\1\147\1\141\1\142\1\uffff\1"+
-        "\154\1\165\1\151\1\uffff\1\141\1\145\1\151\1\141\1\162\1\uffff\1"+
-        "\141\1\162\1\145\1\143\1\151\1\143\1\164\1\150\1\162\1\44\1\150"+
-        "\1\44\1\163\1\151\2\44\1\156\1\44\1\164\1\44\1\uffff\1\163\1\44"+
-        "\1\167\2\162\1\145\1\154\1\164\1\uffff\1\44\1\uffff\1\166\1\145"+
-        "\1\153\2\44\1\165\1\154\1\145\1\162\1\146\1\164\2\143\1\147\1\146"+
-        "\1\156\1\164\1\155\1\164\1\143\1\150\1\44\1\162\1\44\1\uffff\1\44"+
-        "\1\uffff\1\44\1\156\2\uffff\1\144\1\uffff\1\151\1\uffff\1\151\1"+
-        "\uffff\1\44\1\164\1\141\3\44\1\uffff\1\145\1\141\1\44\2\uffff\1"+
-        "\154\1\145\1\44\1\156\1\171\1\145\1\164\1\44\1\145\1\141\1\143\1"+
-        "\44\1\145\1\146\2\44\1\uffff\1\157\3\uffff\1\165\1\163\1\154\1\145"+
-        "\1\44\1\uffff\1\44\1\143\1\uffff\1\171\2\uffff\1\44\1\156\1\uffff"+
-        "\1\164\1\44\1\uffff\3\44\1\145\1\uffff\1\44\1\143\1\145\1\uffff"+
-        "\1\156\1\160\2\uffff\1\156\1\145\1\44\1\145\1\156\2\uffff\1\164"+
-        "\1\44\1\uffff\2\44\4\uffff\1\144\1\uffff\1\145\1\157\1\164\1\44"+
-        "\1\151\1\44\1\uffff\1\44\1\164\1\44\3\uffff\2\44\1\146\1\163\1\uffff"+
-        "\1\172\2\uffff\1\44\3\uffff\2\44\1\145\3\uffff\1\144\1\44\1\uffff";
+        "\1\150\1\145\1\157\1\53\1\55\1\52\4\75\1\uffff\2\56\4\uffff\1\143"+
+        "\1\142\1\151\1\160\1\163\1\44\1\141\1\156\1\157\1\160\1\151\5\uffff"+
+        "\2\141\1\156\1\163\1\164\1\163\1\165\3\uffff\2\151\1\141\2\uffff"+
+        "\2\163\1\156\1\157\1\154\1\162\1\164\1\154\1\167\1\157\1\164\1\145"+
+        "\1\156\1\44\1\146\1\151\1\164\1\144\24\uffff\1\56\1\uffff\1\56\1"+
+        "\153\1\154\1\164\1\166\1\154\1\44\1\164\1\uffff\1\164\1\151\1\143"+
+        "\1\162\1\145\1\164\1\163\1\162\1\164\1\143\3\145\1\155\1\144\1\141"+
+        "\1\157\1\163\1\156\1\145\1\44\1\164\1\145\2\141\1\163\1\44\1\151"+
+        "\1\154\1\44\1\154\1\145\1\141\1\147\1\142\1\uffff\1\141\1\154\1"+
+        "\165\1\151\1\uffff\1\141\1\151\1\145\1\141\1\162\1\145\1\162\1\uffff"+
+        "\1\141\1\151\1\143\1\150\1\164\1\162\1\143\1\163\1\44\1\151\1\150"+
+        "\1\44\1\156\3\44\1\164\1\167\1\44\1\163\1\44\1\uffff\2\162\1\154"+
+        "\1\164\1\145\1\uffff\1\166\1\44\1\uffff\1\145\1\44\1\153\1\44\1"+
+        "\154\1\165\1\145\1\162\1\146\1\147\2\143\2\164\1\155\1\146\1\156"+
+        "\1\143\1\164\1\162\2\44\1\150\1\44\1\uffff\1\156\1\44\1\uffff\1"+
+        "\144\3\uffff\1\151\1\44\1\uffff\1\151\1\uffff\1\141\1\164\3\44\1"+
+        "\145\1\uffff\1\141\1\uffff\1\44\1\uffff\1\145\1\154\1\44\1\156\1"+
+        "\171\1\145\1\44\1\164\1\145\1\44\1\145\1\141\1\143\1\44\1\146\1"+
+        "\157\2\uffff\1\44\1\uffff\1\165\1\uffff\1\163\1\154\1\44\1\uffff"+
+        "\1\145\1\143\1\44\1\171\3\uffff\1\44\1\156\1\uffff\1\44\1\164\1"+
+        "\uffff\3\44\1\uffff\1\145\1\44\1\uffff\1\156\1\143\1\145\1\uffff"+
+        "\1\160\1\156\1\uffff\1\145\1\44\1\145\1\uffff\1\156\1\164\1\uffff"+
+        "\1\44\1\uffff\1\44\1\uffff\1\44\3\uffff\1\144\1\uffff\1\164\1\145"+
+        "\1\157\1\44\1\151\1\44\1\uffff\1\44\1\164\1\44\3\uffff\1\44\1\163"+
+        "\1\44\1\146\1\uffff\1\172\2\uffff\1\44\2\uffff\1\44\1\uffff\1\44"+
+        "\1\145\3\uffff\1\144\1\44\1\uffff";
     static final String DFA30_maxS =
         "\1\ufaff\1\165\1\uffff\1\156\1\171\1\71\1\75\1\157\1\170\3\uffff"+
         "\1\75\2\uffff\1\157\2\uffff\1\162\1\75\1\163\1\157\1\165\1\171\2"+
         "\157\5\uffff\1\150\1\145\1\157\3\75\1\174\3\75\1\uffff\1\170\1\146"+
-        "\4\uffff\1\157\1\142\1\143\1\ufaff\1\164\1\160\1\162\1\151\1\157"+
-        "\1\156\1\160\5\uffff\1\141\1\164\1\141\1\156\1\163\1\165\1\164\3"+
-        "\uffff\1\154\1\171\1\162\2\uffff\2\163\1\154\1\156\1\157\1\162\1"+
-        "\154\1\167\1\164\1\157\1\145\1\164\1\156\1\146\1\ufaff\1\151\1\164"+
-        "\1\144\25\uffff\2\146\1\166\1\164\1\154\1\153\1\uffff\1\ufaff\1"+
-        "\164\1\157\1\151\2\164\1\162\1\143\1\145\1\162\1\143\1\145\1\163"+
-        "\1\164\1\145\1\155\1\145\1\144\1\141\1\145\1\ufaff\1\156\1\163\1"+
-        "\157\1\145\1\164\1\163\2\141\1\ufaff\1\154\1\ufaff\1\151\1\154\1"+
-        "\141\1\145\1\147\1\141\1\142\1\uffff\1\154\1\165\1\151\1\uffff\1"+
-        "\141\1\145\1\151\1\141\1\162\1\uffff\1\141\1\162\1\145\1\143\1\151"+
-        "\1\143\1\164\1\150\1\162\1\ufaff\1\150\1\ufaff\1\163\1\151\2\ufaff"+
-        "\1\156\1\ufaff\1\164\1\ufaff\1\uffff\1\163\1\ufaff\1\167\2\162\1"+
-        "\145\1\154\1\164\1\uffff\1\ufaff\1\uffff\1\166\1\145\1\153\2\ufaff"+
-        "\1\165\1\154\1\145\1\162\1\146\1\164\2\143\1\147\1\146\1\156\1\164"+
-        "\1\155\1\164\1\143\1\150\1\ufaff\1\162\1\ufaff\1\uffff\1\ufaff\1"+
-        "\uffff\1\ufaff\1\156\2\uffff\1\144\1\uffff\1\151\1\uffff\1\151\1"+
-        "\uffff\1\ufaff\1\164\1\141\3\ufaff\1\uffff\1\145\1\141\1\ufaff\2"+
-        "\uffff\1\154\1\145\1\ufaff\1\156\1\171\1\145\1\164\1\ufaff\1\145"+
-        "\1\141\1\143\1\ufaff\1\145\1\146\2\ufaff\1\uffff\1\157\3\uffff\1"+
-        "\165\1\163\1\154\1\145\1\ufaff\1\uffff\1\ufaff\1\143\1\uffff\1\171"+
-        "\2\uffff\1\ufaff\1\156\1\uffff\1\164\1\ufaff\1\uffff\3\ufaff\1\145"+
-        "\1\uffff\1\ufaff\1\143\1\145\1\uffff\1\156\1\160\2\uffff\1\156\1"+
-        "\145\1\ufaff\1\145\1\156\2\uffff\1\164\1\ufaff\1\uffff\2\ufaff\4"+
-        "\uffff\1\144\1\uffff\1\145\1\157\1\164\1\ufaff\1\151\1\ufaff\1\uffff"+
-        "\1\ufaff\1\164\1\ufaff\3\uffff\2\ufaff\1\146\1\163\1\uffff\1\172"+
-        "\2\uffff\1\ufaff\3\uffff\2\ufaff\1\145\3\uffff\1\144\1\ufaff\1\uffff";
+        "\4\uffff\1\143\1\142\1\157\1\160\1\164\1\ufaff\1\162\1\156\1\157"+
+        "\1\160\1\151\5\uffff\2\141\1\156\2\164\1\163\1\165\3\uffff\1\154"+
+        "\1\162\1\171\2\uffff\2\163\1\156\1\157\1\154\1\162\1\164\1\154\1"+
+        "\167\1\157\1\164\1\145\1\156\1\ufaff\1\146\1\151\1\164\1\144\24"+
+        "\uffff\1\146\1\uffff\1\146\1\153\1\154\1\164\1\166\1\157\1\ufaff"+
+        "\1\164\1\uffff\1\164\1\151\1\143\1\162\1\145\1\164\1\163\1\162\1"+
+        "\164\1\143\3\145\1\155\1\144\1\141\1\157\1\163\1\156\1\145\1\ufaff"+
+        "\1\164\1\145\2\141\1\163\1\ufaff\1\151\1\154\1\ufaff\1\154\1\145"+
+        "\1\141\1\147\1\142\1\uffff\1\141\1\154\1\165\1\151\1\uffff\1\141"+
+        "\1\151\1\145\1\141\1\162\1\145\1\162\1\uffff\1\141\1\151\1\143\1"+
+        "\150\1\164\1\162\1\143\1\163\1\ufaff\1\151\1\150\1\ufaff\1\156\3"+
+        "\ufaff\1\164\1\167\1\ufaff\1\163\1\ufaff\1\uffff\2\162\1\154\1\164"+
+        "\1\145\1\uffff\1\166\1\ufaff\1\uffff\1\145\1\ufaff\1\153\1\ufaff"+
+        "\1\154\1\165\1\145\1\162\1\146\1\147\2\143\2\164\1\155\1\146\1\156"+
+        "\1\143\1\164\1\162\2\ufaff\1\150\1\ufaff\1\uffff\1\156\1\ufaff\1"+
+        "\uffff\1\144\3\uffff\1\151\1\ufaff\1\uffff\1\151\1\uffff\1\141\1"+
+        "\164\3\ufaff\1\145\1\uffff\1\141\1\uffff\1\ufaff\1\uffff\1\145\1"+
+        "\154\1\ufaff\1\156\1\171\1\145\1\ufaff\1\164\1\145\1\ufaff\1\145"+
+        "\1\141\1\143\1\ufaff\1\146\1\157\2\uffff\1\ufaff\1\uffff\1\165\1"+
+        "\uffff\1\163\1\154\1\ufaff\1\uffff\1\145\1\143\1\ufaff\1\171\3\uffff"+
+        "\1\ufaff\1\156\1\uffff\1\ufaff\1\164\1\uffff\3\ufaff\1\uffff\1\145"+
+        "\1\ufaff\1\uffff\1\156\1\143\1\145\1\uffff\1\160\1\156\1\uffff\1"+
+        "\145\1\ufaff\1\145\1\uffff\1\156\1\164\1\uffff\1\ufaff\1\uffff\1"+
+        "\ufaff\1\uffff\1\ufaff\3\uffff\1\144\1\uffff\1\164\1\145\1\157\1"+
+        "\ufaff\1\151\1\ufaff\1\uffff\1\ufaff\1\164\1\ufaff\3\uffff\1\ufaff"+
+        "\1\163\1\ufaff\1\146\1\uffff\1\172\2\uffff\1\ufaff\2\uffff\1\ufaff"+
+        "\1\uffff\1\ufaff\1\145\3\uffff\1\144\1\ufaff\1\uffff";
     static final String DFA30_acceptS =
         "\2\uffff\1\2\6\uffff\1\12\1\13\1\14\1\uffff\1\16\1\17\1\uffff\1"+
         "\22\1\23\10\uffff\1\50\1\52\1\53\1\60\1\63\12\uffff\1\130\2\uffff"+
         "\1\140\1\141\1\143\1\144\13\uffff\1\54\1\5\1\137\1\105\1\6\7\uffff"+
-        "\1\114\1\107\1\15\3\uffff\1\117\1\25\22\uffff\1\103\1\126\1\122"+
-        "\1\104\1\127\1\123\1\106\1\146\1\145\1\124\1\110\1\113\1\115\1\111"+
-        "\1\116\1\112\1\125\1\120\1\131\1\134\1\135\6\uffff\1\64\47\uffff"+
-        "\1\70\3\uffff\1\136\5\uffff\1\44\24\uffff\1\71\10\uffff\1\66\1\uffff"+
-        "\1\133\30\uffff\1\41\1\uffff\1\102\2\uffff\1\65\1\142\1\uffff\1"+
-        "\21\1\uffff\1\56\1\uffff\1\132\6\uffff\1\55\3\uffff\1\42\1\45\20"+
-        "\uffff\1\43\1\uffff\1\51\1\101\1\7\5\uffff\1\75\2\uffff\1\57\1\uffff"+
-        "\1\32\1\46\2\uffff\1\76\2\uffff\1\67\4\uffff\1\26\3\uffff\1\3\2"+
-        "\uffff\1\4\1\73\5\uffff\1\24\1\62\2\uffff\1\33\2\uffff\1\47\1\74"+
-        "\1\100\1\30\1\uffff\1\1\6\uffff\1\10\3\uffff\1\72\1\40\1\61\4\uffff"+
-        "\1\37\1\uffff\1\77\1\36\1\uffff\1\31\1\27\1\20\3\uffff\1\35\1\121"+
-        "\1\11\2\uffff\1\34";
+        "\1\107\1\114\1\15\3\uffff\1\117\1\25\22\uffff\1\103\1\126\1\122"+
+        "\1\104\1\127\1\123\1\106\1\145\1\146\1\124\1\110\1\113\1\115\1\111"+
+        "\1\116\1\112\1\125\1\120\1\131\1\134\1\uffff\1\135\10\uffff\1\64"+
+        "\43\uffff\1\70\4\uffff\1\136\7\uffff\1\44\25\uffff\1\71\5\uffff"+
+        "\1\66\2\uffff\1\133\30\uffff\1\41\2\uffff\1\102\1\uffff\1\65\1\142"+
+        "\1\21\2\uffff\1\132\1\uffff\1\56\6\uffff\1\55\1\uffff\1\42\1\uffff"+
+        "\1\45\20\uffff\1\43\1\51\1\uffff\1\7\1\uffff\1\101\3\uffff\1\75"+
+        "\4\uffff\1\32\1\46\1\57\2\uffff\1\76\2\uffff\1\67\3\uffff\1\26\2"+
+        "\uffff\1\3\3\uffff\1\4\2\uffff\1\73\3\uffff\1\24\2\uffff\1\62\1"+
+        "\uffff\1\33\1\uffff\1\47\1\uffff\1\74\1\100\1\1\1\uffff\1\30\6\uffff"+
+        "\1\10\3\uffff\1\72\1\40\1\61\4\uffff\1\37\1\uffff\1\77\1\36\1\uffff"+
+        "\1\31\1\27\1\uffff\1\20\2\uffff\1\35\1\11\1\121\2\uffff\1\34";
     static final String DFA30_specialS =
         "\u0168\uffff}>";
     static final String[] DFA30_transitionS = {
@@ -4063,31 +4258,31 @@
             "\56\1\15\1\45\1\16\1\51\101\uffff\27\56\1\uffff\37\56\1\uffff"+
             "\u1f08\56\u1040\uffff\u0150\56\u0170\uffff\u0080\56\u0080\uffff"+
             "\u092e\56\u10d2\uffff\u5200\56\u5900\uffff\u0200\56",
-            "\1\62\20\uffff\1\60\2\uffff\1\61",
+            "\1\60\20\uffff\1\62\2\uffff\1\61",
             "",
-            "\1\63\6\uffff\1\65\1\64",
-            "\1\70\13\uffff\1\66\1\72\1\uffff\1\67\1\uffff\1\71",
+            "\1\65\6\uffff\1\63\1\64",
+            "\1\70\13\uffff\1\66\1\71\1\uffff\1\72\1\uffff\1\67",
             "\1\73\1\uffff\12\75",
             "\1\76",
-            "\1\101\6\uffff\1\100\3\uffff\1\102\2\uffff\1\103",
-            "\1\104\1\uffff\1\105\11\uffff\1\106",
+            "\1\103\6\uffff\1\101\3\uffff\1\100\2\uffff\1\102",
+            "\1\105\1\uffff\1\106\11\uffff\1\104",
             "",
             "",
             "",
-            "\1\107\26\uffff\1\110",
+            "\1\110\26\uffff\1\107",
             "",
             "",
             "\1\112",
             "",
             "",
-            "\1\114\11\uffff\1\113",
+            "\1\113\11\uffff\1\114",
             "\1\115",
-            "\1\120\20\uffff\1\117",
-            "\1\121\7\uffff\1\122\2\uffff\1\123\2\uffff\1\124",
-            "\1\127\3\uffff\1\126\17\uffff\1\125",
-            "\1\130\2\uffff\1\131\6\uffff\1\132",
+            "\1\117\20\uffff\1\120",
+            "\1\123\7\uffff\1\121\2\uffff\1\122\2\uffff\1\124",
+            "\1\125\3\uffff\1\127\17\uffff\1\126",
+            "\1\130\2\uffff\1\132\6\uffff\1\131",
             "\1\133",
-            "\1\134\11\uffff\1\135",
+            "\1\135\11\uffff\1\134",
             "",
             "",
             "",
@@ -4098,29 +4293,29 @@
             "\1\140",
             "\1\142\21\uffff\1\141",
             "\1\145\17\uffff\1\144",
-            "\1\151\4\uffff\1\150\15\uffff\1\147",
+            "\1\150\4\uffff\1\151\15\uffff\1\147",
             "\1\153\76\uffff\1\154",
             "\1\156",
             "\1\160",
             "\1\162",
             "",
-            "\1\75\1\uffff\10\166\2\75\12\uffff\3\75\21\uffff\1\164\13\uffff"+
+            "\1\75\1\uffff\10\165\2\75\12\uffff\3\75\21\uffff\1\164\13\uffff"+
             "\3\75\21\uffff\1\164",
             "\1\75\1\uffff\12\167\12\uffff\3\75\35\uffff\3\75",
             "",
             "",
             "",
             "",
-            "\1\170\5\uffff\1\171",
-            "\1\172",
-            "\1\173",
+            "\1\170",
+            "\1\171",
+            "\1\173\5\uffff\1\172",
+            "\1\174",
+            "\1\176\1\175",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
-            "\1\176\1\175",
-            "\1\177",
-            "\1\u0081\20\uffff\1\u0080",
+            "\1\u0080\20\uffff\1\u0081",
             "\1\u0082",
             "\1\u0083",
             "\1\u0084",
@@ -4131,9 +4326,9 @@
             "",
             "",
             "\1\u0086",
-            "\1\u0088\1\u0087",
-            "\1\u0089",
-            "\1\u008a",
+            "\1\u0087",
+            "\1\u0088",
+            "\1\u008a\1\u0089",
             "\1\u008b",
             "\1\u008c",
             "\1\u008d",
@@ -4141,8 +4336,8 @@
             "",
             "",
             "\1\u008e\2\uffff\1\u008f",
-            "\1\u0092\23\uffff\1\u0090\3\uffff\1\u0091",
-            "\1\u0093\10\uffff\1\u0094",
+            "\1\u0091\10\uffff\1\u0090",
+            "\1\u0092\23\uffff\1\u0093\3\uffff\1\u0094",
             "",
             "",
             "\1\u0095",
@@ -4158,11 +4353,11 @@
             "\1\u009f",
             "\1\u00a0",
             "\1\u00a1",
-            "\1\u00a2",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\24\56"+
-            "\1\u00a3\5\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56"+
+            "\1\u00a2\5\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56"+
             "\u1040\uffff\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e"+
             "\56\u10d2\uffff\u5200\56\u5900\uffff\u0200\56",
+            "\1\u00a4",
             "\1\u00a5",
             "\1\u00a6",
             "\1\u00a7",
@@ -4186,20 +4381,20 @@
             "",
             "",
             "",
+            "\1\75\1\uffff\10\165\2\75\12\uffff\3\75\35\uffff\3\75",
             "",
-            "\1\75\1\uffff\10\166\2\75\12\uffff\3\75\35\uffff\3\75",
             "\1\75\1\uffff\12\167\12\uffff\3\75\35\uffff\3\75",
             "\1\u00a9",
             "\1\u00aa",
             "\1\u00ab",
             "\1\u00ac",
-            "",
+            "\1\u00ae\2\uffff\1\u00ad",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\4\56"+
-            "\1\u00ad\25\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56"+
+            "\1\u00af\25\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56"+
             "\u1040\uffff\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e"+
             "\56\u10d2\uffff\u5200\56\u5900\uffff\u0200\56",
-            "\1\u00af",
-            "\1\u00b1\2\uffff\1\u00b0",
+            "\1\u00b1",
+            "",
             "\1\u00b2",
             "\1\u00b3",
             "\1\u00b4",
@@ -4217,13 +4412,13 @@
             "\1\u00c0",
             "\1\u00c1",
             "\1\u00c2",
+            "\1\u00c3",
+            "\1\u00c4",
+            "\1\u00c5",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
-            "\1\u00c4",
-            "\1\u00c5",
-            "\1\u00c6",
             "\1\u00c7",
             "\1\u00c8",
             "\1\u00c9",
@@ -4234,18 +4429,18 @@
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
             "\1\u00cd",
+            "\1\u00ce",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
-            "\1\u00cf",
             "\1\u00d0",
             "\1\u00d1",
             "\1\u00d2",
             "\1\u00d3",
             "\1\u00d4",
+            "",
             "\1\u00d5",
-            "",
             "\1\u00d6",
             "\1\u00d7",
             "\1\u00d8",
@@ -4255,9 +4450,9 @@
             "\1\u00db",
             "\1\u00dc",
             "\1\u00dd",
-            "",
             "\1\u00de",
             "\1\u00df",
+            "",
             "\1\u00e0",
             "\1\u00e1",
             "\1\u00e2",
@@ -4265,17 +4460,18 @@
             "\1\u00e4",
             "\1\u00e5",
             "\1\u00e6",
+            "\1\u00e7",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
-            "\1\u00e8",
+            "\1\u00e9",
+            "\1\u00ea",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
-            "\1\u00ea",
-            "\1\u00eb",
+            "\1\u00ec",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
@@ -4284,41 +4480,40 @@
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
-            "\1\u00ee",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
             "\1\u00f0",
+            "\1\u00f1",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
-            "",
-            "\1\u00f2",
+            "\1\u00f3",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
-            "\1\u00f4",
+            "",
             "\1\u00f5",
             "\1\u00f6",
             "\1\u00f7",
             "\1\u00f8",
             "\1\u00f9",
             "",
+            "\1\u00fa",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
             "",
-            "\1\u00fb",
             "\1\u00fc",
-            "\1\u00fd",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
+            "\1\u00fe",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
@@ -4343,57 +4538,57 @@
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
-            "\1\u0111",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
-            "",
+            "\1\u0112",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
             "",
+            "\1\u0114",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
-            "\1\u0115",
             "",
-            "",
             "\1\u0116",
             "",
-            "\1\u0117",
             "",
-            "\1\u0118",
             "",
+            "\1\u0117",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\22\56"+
-            "\1\u0119\7\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56"+
+            "\1\u0118\7\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56"+
             "\u1040\uffff\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e"+
             "\56\u10d2\uffff\u5200\56\u5900\uffff\u0200\56",
+            "",
+            "\1\u011a",
+            "",
             "\1\u011b",
             "\1\u011c",
+            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\13\56"+
+            "\1\u011d\16\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56"+
+            "\u1040\uffff\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e"+
+            "\56\u10d2\uffff\u5200\56\u5900\uffff\u0200\56",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
-            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\13\56"+
-            "\1\u011e\16\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56"+
-            "\u1040\uffff\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e"+
-            "\56\u10d2\uffff\u5200\56\u5900\uffff\u0200\56",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
+            "\1\u0121",
             "",
-            "\1\u0121",
             "\1\u0122",
+            "",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
             "",
-            "",
             "\1\u0124",
             "\1\u0125",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
@@ -4403,62 +4598,62 @@
             "\1\u0127",
             "\1\u0128",
             "\1\u0129",
-            "\1\u012a",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
+            "\1\u012b",
             "\1\u012c",
-            "\1\u012d",
-            "\1\u012e",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
+            "\1\u012e",
+            "\1\u012f",
             "\1\u0130",
-            "\1\u0131",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
+            "\1\u0132",
+            "\1\u0133",
+            "",
+            "",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
             "",
-            "\1\u0134",
+            "\1\u0135",
             "",
-            "",
-            "",
-            "\1\u0135",
             "\1\u0136",
             "\1\u0137",
-            "\1\u0138",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
             "",
+            "\1\u0139",
+            "\1\u013a",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
-            "\1\u013b",
-            "",
             "\1\u013c",
             "",
             "",
+            "",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
             "\1\u013e",
             "",
-            "\1\u013f",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
+            "\1\u0140",
             "",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
@@ -4472,30 +4667,30 @@
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
+            "",
             "\1\u0144",
-            "",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
+            "",
             "\1\u0146",
             "\1\u0147",
+            "\1\u0148",
             "",
-            "\1\u0148",
             "\1\u0149",
+            "\1\u014a",
             "",
-            "",
-            "\1\u014a",
             "\1\u014b",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
             "\1\u014d",
+            "",
             "\1\u014e",
+            "\1\u014f",
             "",
-            "",
-            "\1\u014f",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
@@ -4505,6 +4700,7 @@
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
+            "",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
@@ -4512,7 +4708,6 @@
             "",
             "",
             "",
-            "",
             "\1\u0153",
             "",
             "\1\u0154",
@@ -4544,11 +4739,11 @@
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
+            "\1\u015e",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
-            "\1\u015f",
             "\1\u0160",
             "",
             "\1\u0161",
@@ -4560,11 +4755,11 @@
             "\u5200\56\u5900\uffff\u0200\56",
             "",
             "",
-            "",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
+            "",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56"+
             "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
@@ -4611,7 +4806,7 @@
             this.transition = DFA30_transition;
         }
         public String getDescription() {
-            return "1:1: Tokens : ( T24 | T25 | T26 | T27 | T28 | T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | T38 | T39 | T40 | T41 | T42 | T43 | T44 | T45 | T46 | T47 | T48 | T49 | T50 | T51 | T52 | T53 | T54 | T55 | T56 | T57 | T58 | T59 | T60 | T61 | T62 | T63 | T64 | T65 | T66 | T67 | T68 | T69 | T70 | T71 | T72 | T73 | T74 | T75 | T76 | T77 | T78 | T79 | T80 | T81 | T82 | T83 | T84 | T85 | T86 | T87 | T88 | T89 | T90 | T91 | T92 | T93 | T94 | T95 | T96 | T97 | T98 | T99 | T100 | T101 | T102 | T103 | T104 | T105 | T106 | T107 | T108 | T109 | T110 | T111 | T112 | T113 | T114 | HexLiteral | DecimalLiteral | OctalLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | ENUM | Identifier | WS | COMMENT | LINE_COMMENT );";
+            return "1:1: Tokens : ( T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | HexLiteral | DecimalLiteral | OctalLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | ENUM | Identifier | WS | COMMENT | LINE_COMMENT );";
         }
     }
  

Modified: labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaParser.java
===================================================================
--- labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaParser.java	2008-11-13 00:09:49 UTC (rev 23848)
+++ labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaParser.java	2008-11-13 03:06:09 UTC (rev 23849)
@@ -1,26 +1,15 @@
-// $ANTLR 3.0.1 /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g 2007-12-19 16:46:01
+// $ANTLR 3.1.1 /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g 2008-11-13 00:55:21
 
 	package org.drools.rule.builder.dialect.java.parser;
-	import java.util.ArrayList;
+	import java.util.Iterator;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
 import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Stack;
-
-import org.antlr.runtime.BitSet;
-import org.antlr.runtime.CommonToken;
-import org.antlr.runtime.EarlyExitException;
-import org.antlr.runtime.FailedPredicateException;
-import org.antlr.runtime.MismatchedNotSetException;
-import org.antlr.runtime.MismatchedSetException;
-import org.antlr.runtime.MismatchedTokenException;
-import org.antlr.runtime.MismatchedTreeNodeException;
-import org.antlr.runtime.NoViableAltException;
-import org.antlr.runtime.Parser;
-import org.antlr.runtime.ParserRuleReturnScope;
-import org.antlr.runtime.RecognitionException;
-import org.antlr.runtime.Token;
-import org.antlr.runtime.TokenStream;
 /** A Java 1.5 grammar for ANTLR v3 derived from the spec
  *
  *  This is a very close representation of the spec; the changes
@@ -101,36 +90,136 @@
     public static final String[] tokenNames = new String[] {
         "<invalid>", "<EOR>", "<DOWN>", "<UP>", "Identifier", "ENUM", "FloatingPointLiteral", "CharacterLiteral", "StringLiteral", "HexLiteral", "OctalLiteral", "DecimalLiteral", "HexDigit", "IntegerTypeSuffix", "Exponent", "FloatTypeSuffix", "EscapeSequence", "UnicodeEscape", "OctalEscape", "Letter", "JavaIDDigit", "WS", "COMMENT", "LINE_COMMENT", "'package'", "';'", "'import'", "'static'", "'.'", "'*'", "'class'", "'extends'", "'implements'", "'<'", "','", "'>'", "'&'", "'{'", "'}'", "'interface'", "'void'", "'['", "']'", "'throws'", "'='", "'public'", "'protected'", "'private'", "'abstract'", "'final'", "'native'", "'synchronized'", "'transient'", "'volatile'", "'strictfp'", "'boolean'", "'char'", "'byte'", "'short'", "'int'", "'long'", "'float'", "'double'", "'?'", "'super'", "'('", "')'", "'...'", "'null'", "'true'", "'false'", "'@'", "'default'", "'assert'", "':'", "'if'", "'else'", "'for'", "'while'", "'do'", "'try'", "'finally'", "'switch'", "'return'", "'throw'", "!
 'break'", "'continue'", "'modify'", "'catch'", "'case'", "'+='", "'-='", "'*='", "'/='", "'&='", "'|='", "'^='", "'%='", "'||'", "'&&'", "'|'", "'^'", "'=='", "'!='", "'instanceof'", "'+'", "'-'", "'/'", "'%'", "'++'", "'--'", "'~'", "'!'", "'this'", "'new'"
     };
-    public static final int Exponent=14;
-    public static final int OctalLiteral=10;
+    public static final int T__42=42;
+    public static final int HexDigit=12;
+    public static final int T__47=47;
+    public static final int T__109=109;
+    public static final int T__73=73;
+    public static final int T__72=72;
+    public static final int T__70=70;
+    public static final int T__39=39;
+    public static final int Letter=19;
+    public static final int T__30=30;
+    public static final int T__46=46;
+    public static final int T__96=96;
+    public static final int T__49=49;
+    public static final int T__112=112;
+    public static final int T__108=108;
+    public static final int T__54=54;
+    public static final int T__48=48;
+    public static final int FloatTypeSuffix=15;
+    public static final int T__113=113;
     public static final int IntegerTypeSuffix=13;
     public static final int Identifier=4;
-    public static final int HexDigit=12;
+    public static final int T__89=89;
     public static final int WS=21;
+    public static final int T__79=79;
+    public static final int T__64=64;
+    public static final int T__44=44;
+    public static final int T__66=66;
+    public static final int T__92=92;
+    public static final int T__88=88;
+    public static final int LINE_COMMENT=23;
+    public static final int T__90=90;
+    public static final int UnicodeEscape=17;
+    public static final int HexLiteral=9;
+    public static final int T__114=114;
+    public static final int T__63=63;
+    public static final int T__110=110;
+    public static final int T__43=43;
+    public static final int T__91=91;
+    public static final int T__40=40;
+    public static final int DecimalLiteral=11;
+    public static final int T__85=85;
+    public static final int T__26=26;
+    public static final int T__25=25;
+    public static final int T__60=60;
+    public static final int T__41=41;
+    public static final int T__93=93;
+    public static final int T__86=86;
+    public static final int T__28=28;
+    public static final int OctalLiteral=10;
+    public static final int T__57=57;
+    public static final int T__94=94;
+    public static final int T__51=51;
+    public static final int T__80=80;
+    public static final int T__100=100;
+    public static final int T__69=69;
+    public static final int T__95=95;
+    public static final int T__50=50;
+    public static final int T__65=65;
+    public static final int T__101=101;
+    public static final int T__104=104;
+    public static final int T__107=107;
+    public static final int T__67=67;
+    public static final int T__87=87;
+    public static final int T__106=106;
+    public static final int T__74=74;
+    public static final int T__52=52;
+    public static final int T__68=68;
+    public static final int T__62=62;
+    public static final int EscapeSequence=16;
+    public static final int T__27=27;
+    public static final int T__24=24;
+    public static final int T__61=61;
+    public static final int T__59=59;
+    public static final int T__34=34;
+    public static final int FloatingPointLiteral=6;
+    public static final int T__98=98;
+    public static final int T__56=56;
+    public static final int ENUM=5;
+    public static final int T__35=35;
+    public static final int Exponent=14;
+    public static final int T__78=78;
+    public static final int T__36=36;
     public static final int CharacterLiteral=7;
+    public static final int T__58=58;
     public static final int COMMENT=22;
+    public static final int T__99=99;
     public static final int StringLiteral=8;
-    public static final int LINE_COMMENT=23;
+    public static final int T__33=33;
+    public static final int T__77=77;
+    public static final int T__55=55;
+    public static final int T__45=45;
+    public static final int T__29=29;
+    public static final int T__103=103;
     public static final int JavaIDDigit=20;
-    public static final int Letter=19;
-    public static final int UnicodeEscape=17;
-    public static final int HexLiteral=9;
-    public static final int EscapeSequence=16;
+    public static final int T__84=84;
+    public static final int T__97=97;
+    public static final int T__75=75;
+    public static final int T__105=105;
+    public static final int T__111=111;
+    public static final int T__31=31;
     public static final int EOF=-1;
-    public static final int DecimalLiteral=11;
+    public static final int T__53=53;
+    public static final int T__32=32;
+    public static final int T__38=38;
+    public static final int T__37=37;
+    public static final int T__76=76;
+    public static final int T__82=82;
     public static final int OctalEscape=18;
-    public static final int FloatingPointLiteral=6;
-    public static final int FloatTypeSuffix=15;
-    public static final int ENUM=5;
+    public static final int T__81=81;
+    public static final int T__83=83;
+    public static final int T__71=71;
+    public static final int T__102=102;
 
+    // delegates
+    // delegators
+
+
         public JavaParser(TokenStream input) {
-            super(input);
-            ruleMemo = new HashMap[407+1];
-         }
+            this(input, new RecognizerSharedState());
+        }
+        public JavaParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+            this.state.ruleMemo = new HashMap[1+1];
+             
+             
+        }
         
 
-    public String[] getTokenNames() { return tokenNames; }
-    public String getGrammarFileName() { return "/home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g"; }
+    public String[] getTokenNames() { return JavaParser.tokenNames; }
+    public String getGrammarFileName() { return "/Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g"; }
 
 
     	private List identifiers = new ArrayList();
@@ -156,11 +245,11 @@
     	public void reportError(RecognitionException ex) {
     	        // if we've already reported an error and have not matched a token
                     // yet successfully, don't report any errors.
-                    if ( errorRecovery ) {
+                    if ( state.errorRecovery ) {
                             //System.err.print("[SPURIOUS] ");
                             return;
                     }
-                    errorRecovery = true;
+                    state.errorRecovery = true;
 
     		errors.add( ex ); 
     	}
@@ -243,85 +332,66 @@
 
 
 
-    // $ANTLR start compilationUnit
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:206:1: compilationUnit : ( annotations )? ( packageDeclaration )? ( importDeclaration )* ( typeDeclaration )* ;
+    // $ANTLR start "compilationUnit"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:206:1: compilationUnit : ( annotations )? ( packageDeclaration )? ( importDeclaration )* ( typeDeclaration )* ;
     public final void compilationUnit() throws RecognitionException {
         int compilationUnit_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 1) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:207:2: ( ( annotations )? ( packageDeclaration )? ( importDeclaration )* ( typeDeclaration )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:207:4: ( annotations )? ( packageDeclaration )? ( importDeclaration )* ( typeDeclaration )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 1) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:207:2: ( ( annotations )? ( packageDeclaration )? ( importDeclaration )* ( typeDeclaration )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:207:4: ( annotations )? ( packageDeclaration )? ( importDeclaration )* ( typeDeclaration )*
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:207:4: ( annotations )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:207:4: ( annotations )?
             int alt1=2;
-            int LA1_0 = input.LA(1);
-
-            if ( (LA1_0==71) ) {
-                int LA1_1 = input.LA(2);
-
-                if ( (LA1_1==Identifier) ) {
-                    int LA1_21 = input.LA(3);
-
-                    if ( (synpred1()) ) {
-                        alt1=1;
-                    }
-                }
-            }
+            alt1 = dfa1.predict(input);
             switch (alt1) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: annotations
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: annotations
                     {
                     pushFollow(FOLLOW_annotations_in_compilationUnit70);
                     annotations();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
             }
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:208:3: ( packageDeclaration )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:208:3: ( packageDeclaration )?
             int alt2=2;
-            int LA2_0 = input.LA(1);
-
-            if ( (LA2_0==24) ) {
-                alt2=1;
-            }
+            alt2 = dfa2.predict(input);
             switch (alt2) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: packageDeclaration
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: packageDeclaration
                     {
                     pushFollow(FOLLOW_packageDeclaration_in_compilationUnit75);
                     packageDeclaration();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
             }
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:209:9: ( importDeclaration )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:209:9: ( importDeclaration )*
             loop3:
             do {
                 int alt3=2;
-                int LA3_0 = input.LA(1);
-
-                if ( (LA3_0==26) ) {
-                    alt3=1;
-                }
-
-
+                alt3 = dfa3.predict(input);
                 switch (alt3) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: importDeclaration
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: importDeclaration
             	    {
             	    pushFollow(FOLLOW_importDeclaration_in_compilationUnit86);
             	    importDeclaration();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -330,26 +400,21 @@
                 }
             } while (true);
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:210:9: ( typeDeclaration )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:210:9: ( typeDeclaration )*
             loop4:
             do {
                 int alt4=2;
-                int LA4_0 = input.LA(1);
-
-                if ( (LA4_0==ENUM||LA4_0==25||LA4_0==27||LA4_0==30||LA4_0==39||(LA4_0>=45 && LA4_0<=54)||LA4_0==71) ) {
-                    alt4=1;
-                }
-
-
+                alt4 = dfa4.predict(input);
                 switch (alt4) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: typeDeclaration
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: typeDeclaration
             	    {
             	    pushFollow(FOLLOW_typeDeclaration_in_compilationUnit97);
             	    typeDeclaration();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -367,29 +432,30 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 1, compilationUnit_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 1, compilationUnit_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end compilationUnit
+    // $ANTLR end "compilationUnit"
 
 
-    // $ANTLR start packageDeclaration
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:213:1: packageDeclaration : 'package' qualifiedName ';' ;
+    // $ANTLR start "packageDeclaration"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:213:1: packageDeclaration : 'package' qualifiedName ';' ;
     public final void packageDeclaration() throws RecognitionException {
         int packageDeclaration_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 2) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:214:2: ( 'package' qualifiedName ';' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:214:4: 'package' qualifiedName ';'
+            if ( state.backtracking>0 && alreadyParsedRule(input, 2) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:214:2: ( 'package' qualifiedName ';' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:214:4: 'package' qualifiedName ';'
             {
-            match(input,24,FOLLOW_24_in_packageDeclaration109); if (failed) return ;
+            match(input,24,FOLLOW_24_in_packageDeclaration109); if (state.failed) return ;
             pushFollow(FOLLOW_qualifiedName_in_packageDeclaration111);
             qualifiedName();
-            _fsp--;
-            if (failed) return ;
-            match(input,25,FOLLOW_25_in_packageDeclaration113); if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+            match(input,25,FOLLOW_25_in_packageDeclaration113); if (state.failed) return ;
+
             }
 
         }
@@ -398,24 +464,24 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 2, packageDeclaration_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 2, packageDeclaration_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end packageDeclaration
+    // $ANTLR end "packageDeclaration"
 
 
-    // $ANTLR start importDeclaration
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:217:1: importDeclaration : 'import' ( 'static' )? Identifier ( '.' Identifier )* ( '.' '*' )? ';' ;
+    // $ANTLR start "importDeclaration"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:217:1: importDeclaration : 'import' ( 'static' )? Identifier ( '.' Identifier )* ( '.' '*' )? ';' ;
     public final void importDeclaration() throws RecognitionException {
         int importDeclaration_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 3) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:218:2: ( 'import' ( 'static' )? Identifier ( '.' Identifier )* ( '.' '*' )? ';' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:218:4: 'import' ( 'static' )? Identifier ( '.' Identifier )* ( '.' '*' )? ';'
+            if ( state.backtracking>0 && alreadyParsedRule(input, 3) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:218:2: ( 'import' ( 'static' )? Identifier ( '.' Identifier )* ( '.' '*' )? ';' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:218:4: 'import' ( 'static' )? Identifier ( '.' Identifier )* ( '.' '*' )? ';'
             {
-            match(input,26,FOLLOW_26_in_importDeclaration125); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:218:13: ( 'static' )?
+            match(input,26,FOLLOW_26_in_importDeclaration125); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:218:13: ( 'static' )?
             int alt5=2;
             int LA5_0 = input.LA(1);
 
@@ -424,17 +490,17 @@
             }
             switch (alt5) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: 'static'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: 'static'
                     {
-                    match(input,27,FOLLOW_27_in_importDeclaration127); if (failed) return ;
+                    match(input,27,FOLLOW_27_in_importDeclaration127); if (state.failed) return ;
 
                     }
                     break;
 
             }
 
-            match(input,Identifier,FOLLOW_Identifier_in_importDeclaration130); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:218:34: ( '.' Identifier )*
+            match(input,Identifier,FOLLOW_Identifier_in_importDeclaration130); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:218:34: ( '.' Identifier )*
             loop6:
             do {
                 int alt6=2;
@@ -453,10 +519,10 @@
 
                 switch (alt6) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:218:35: '.' Identifier
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:218:35: '.' Identifier
             	    {
-            	    match(input,28,FOLLOW_28_in_importDeclaration133); if (failed) return ;
-            	    match(input,Identifier,FOLLOW_Identifier_in_importDeclaration135); if (failed) return ;
+            	    match(input,28,FOLLOW_28_in_importDeclaration133); if (state.failed) return ;
+            	    match(input,Identifier,FOLLOW_Identifier_in_importDeclaration135); if (state.failed) return ;
 
             	    }
             	    break;
@@ -466,7 +532,7 @@
                 }
             } while (true);
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:218:52: ( '.' '*' )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:218:52: ( '.' '*' )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -475,17 +541,17 @@
             }
             switch (alt7) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:218:53: '.' '*'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:218:53: '.' '*'
                     {
-                    match(input,28,FOLLOW_28_in_importDeclaration140); if (failed) return ;
-                    match(input,29,FOLLOW_29_in_importDeclaration142); if (failed) return ;
+                    match(input,28,FOLLOW_28_in_importDeclaration140); if (state.failed) return ;
+                    match(input,29,FOLLOW_29_in_importDeclaration142); if (state.failed) return ;
 
                     }
                     break;
 
             }
 
-            match(input,25,FOLLOW_25_in_importDeclaration146); if (failed) return ;
+            match(input,25,FOLLOW_25_in_importDeclaration146); if (state.failed) return ;
 
             }
 
@@ -495,51 +561,38 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 3, importDeclaration_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 3, importDeclaration_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end importDeclaration
+    // $ANTLR end "importDeclaration"
 
 
-    // $ANTLR start typeDeclaration
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:221:1: typeDeclaration : ( classOrInterfaceDeclaration | ';' );
+    // $ANTLR start "typeDeclaration"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:221:1: typeDeclaration : ( classOrInterfaceDeclaration | ';' );
     public final void typeDeclaration() throws RecognitionException {
         int typeDeclaration_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 4) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:222:2: ( classOrInterfaceDeclaration | ';' )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 4) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:222:2: ( classOrInterfaceDeclaration | ';' )
             int alt8=2;
-            int LA8_0 = input.LA(1);
-
-            if ( (LA8_0==ENUM||LA8_0==27||LA8_0==30||LA8_0==39||(LA8_0>=45 && LA8_0<=54)||LA8_0==71) ) {
-                alt8=1;
-            }
-            else if ( (LA8_0==25) ) {
-                alt8=2;
-            }
-            else {
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("221:1: typeDeclaration : ( classOrInterfaceDeclaration | ';' );", 8, 0, input);
-
-                throw nvae;
-            }
+            alt8 = dfa8.predict(input);
             switch (alt8) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:222:4: classOrInterfaceDeclaration
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:222:4: classOrInterfaceDeclaration
                     {
                     pushFollow(FOLLOW_classOrInterfaceDeclaration_in_typeDeclaration158);
                     classOrInterfaceDeclaration();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:223:9: ';'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:223:9: ';'
                     {
-                    match(input,25,FOLLOW_25_in_typeDeclaration168); if (failed) return ;
+                    match(input,25,FOLLOW_25_in_typeDeclaration168); if (state.failed) return ;
 
                     }
                     break;
@@ -551,51 +604,37 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 4, typeDeclaration_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 4, typeDeclaration_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end typeDeclaration
+    // $ANTLR end "typeDeclaration"
 
 
-    // $ANTLR start classOrInterfaceDeclaration
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:226:1: classOrInterfaceDeclaration : ( modifier )* ( classDeclaration | interfaceDeclaration ) ;
+    // $ANTLR start "classOrInterfaceDeclaration"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:226:1: classOrInterfaceDeclaration : ( modifier )* ( classDeclaration | interfaceDeclaration ) ;
     public final void classOrInterfaceDeclaration() throws RecognitionException {
         int classOrInterfaceDeclaration_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 5) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:227:2: ( ( modifier )* ( classDeclaration | interfaceDeclaration ) )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:227:4: ( modifier )* ( classDeclaration | interfaceDeclaration )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 5) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:227:2: ( ( modifier )* ( classDeclaration | interfaceDeclaration ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:227:4: ( modifier )* ( classDeclaration | interfaceDeclaration )
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:227:4: ( modifier )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:227:4: ( modifier )*
             loop9:
             do {
                 int alt9=2;
-                int LA9_0 = input.LA(1);
-
-                if ( (LA9_0==71) ) {
-                    int LA9_4 = input.LA(2);
-
-                    if ( (LA9_4==Identifier) ) {
-                        alt9=1;
-                    }
-
-
-                }
-                else if ( (LA9_0==27||(LA9_0>=45 && LA9_0<=54)) ) {
-                    alt9=1;
-                }
-
-
+                alt9 = dfa9.predict(input);
                 switch (alt9) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: modifier
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: modifier
             	    {
             	    pushFollow(FOLLOW_modifier_in_classOrInterfaceDeclaration180);
             	    modifier();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -604,7 +643,7 @@
                 }
             } while (true);
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:227:14: ( classDeclaration | interfaceDeclaration )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:227:14: ( classDeclaration | interfaceDeclaration )
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -615,31 +654,33 @@
                 alt10=2;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("227:14: ( classDeclaration | interfaceDeclaration )", 10, 0, input);
+                    new NoViableAltException("", 10, 0, input);
 
                 throw nvae;
             }
             switch (alt10) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:227:15: classDeclaration
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:227:15: classDeclaration
                     {
                     pushFollow(FOLLOW_classDeclaration_in_classOrInterfaceDeclaration184);
                     classDeclaration();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:227:34: interfaceDeclaration
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:227:34: interfaceDeclaration
                     {
                     pushFollow(FOLLOW_interfaceDeclaration_in_classOrInterfaceDeclaration188);
                     interfaceDeclaration();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -654,20 +695,20 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 5, classOrInterfaceDeclaration_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 5, classOrInterfaceDeclaration_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end classOrInterfaceDeclaration
+    // $ANTLR end "classOrInterfaceDeclaration"
 
 
-    // $ANTLR start classDeclaration
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:230:1: classDeclaration : ( normalClassDeclaration | enumDeclaration );
+    // $ANTLR start "classDeclaration"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:230:1: classDeclaration : ( normalClassDeclaration | enumDeclaration );
     public final void classDeclaration() throws RecognitionException {
         int classDeclaration_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 6) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:231:2: ( normalClassDeclaration | enumDeclaration )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 6) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:231:2: ( normalClassDeclaration | enumDeclaration )
             int alt11=2;
             int LA11_0 = input.LA(1);
 
@@ -678,31 +719,33 @@
                 alt11=2;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("230:1: classDeclaration : ( normalClassDeclaration | enumDeclaration );", 11, 0, input);
+                    new NoViableAltException("", 11, 0, input);
 
                 throw nvae;
             }
             switch (alt11) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:231:4: normalClassDeclaration
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:231:4: normalClassDeclaration
                     {
                     pushFollow(FOLLOW_normalClassDeclaration_in_classDeclaration201);
                     normalClassDeclaration();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:232:9: enumDeclaration
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:232:9: enumDeclaration
                     {
                     pushFollow(FOLLOW_enumDeclaration_in_classDeclaration211);
                     enumDeclaration();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -713,25 +756,25 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 6, classDeclaration_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 6, classDeclaration_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end classDeclaration
+    // $ANTLR end "classDeclaration"
 
 
-    // $ANTLR start normalClassDeclaration
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:235:1: normalClassDeclaration : 'class' Identifier ( typeParameters )? ( 'extends' type )? ( 'implements' typeList )? classBody ;
+    // $ANTLR start "normalClassDeclaration"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:235:1: normalClassDeclaration : 'class' Identifier ( typeParameters )? ( 'extends' type )? ( 'implements' typeList )? classBody ;
     public final void normalClassDeclaration() throws RecognitionException {
         int normalClassDeclaration_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 7) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:236:2: ( 'class' Identifier ( typeParameters )? ( 'extends' type )? ( 'implements' typeList )? classBody )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:236:4: 'class' Identifier ( typeParameters )? ( 'extends' type )? ( 'implements' typeList )? classBody
+            if ( state.backtracking>0 && alreadyParsedRule(input, 7) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:236:2: ( 'class' Identifier ( typeParameters )? ( 'extends' type )? ( 'implements' typeList )? classBody )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:236:4: 'class' Identifier ( typeParameters )? ( 'extends' type )? ( 'implements' typeList )? classBody
             {
-            match(input,30,FOLLOW_30_in_normalClassDeclaration223); if (failed) return ;
-            match(input,Identifier,FOLLOW_Identifier_in_normalClassDeclaration225); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:236:23: ( typeParameters )?
+            match(input,30,FOLLOW_30_in_normalClassDeclaration223); if (state.failed) return ;
+            match(input,Identifier,FOLLOW_Identifier_in_normalClassDeclaration225); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:236:23: ( typeParameters )?
             int alt12=2;
             int LA12_0 = input.LA(1);
 
@@ -740,19 +783,20 @@
             }
             switch (alt12) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:236:24: typeParameters
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:236:24: typeParameters
                     {
                     pushFollow(FOLLOW_typeParameters_in_normalClassDeclaration228);
                     typeParameters();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
             }
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:237:9: ( 'extends' type )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:237:9: ( 'extends' type )?
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -761,20 +805,21 @@
             }
             switch (alt13) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:237:10: 'extends' type
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:237:10: 'extends' type
                     {
-                    match(input,31,FOLLOW_31_in_normalClassDeclaration241); if (failed) return ;
+                    match(input,31,FOLLOW_31_in_normalClassDeclaration241); if (state.failed) return ;
                     pushFollow(FOLLOW_type_in_normalClassDeclaration243);
                     type();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
             }
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:238:9: ( 'implements' typeList )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:238:9: ( 'implements' typeList )?
             int alt14=2;
             int LA14_0 = input.LA(1);
 
@@ -783,14 +828,15 @@
             }
             switch (alt14) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:238:10: 'implements' typeList
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:238:10: 'implements' typeList
                     {
-                    match(input,32,FOLLOW_32_in_normalClassDeclaration256); if (failed) return ;
+                    match(input,32,FOLLOW_32_in_normalClassDeclaration256); if (state.failed) return ;
                     pushFollow(FOLLOW_typeList_in_normalClassDeclaration258);
                     typeList();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -798,9 +844,10 @@
 
             pushFollow(FOLLOW_classBody_in_normalClassDeclaration270);
             classBody();
-            _fsp--;
-            if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+
             }
 
         }
@@ -809,28 +856,29 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 7, normalClassDeclaration_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 7, normalClassDeclaration_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end normalClassDeclaration
+    // $ANTLR end "normalClassDeclaration"
 
 
-    // $ANTLR start typeParameters
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:242:1: typeParameters : '<' typeParameter ( ',' typeParameter )* '>' ;
+    // $ANTLR start "typeParameters"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:242:1: typeParameters : '<' typeParameter ( ',' typeParameter )* '>' ;
     public final void typeParameters() throws RecognitionException {
         int typeParameters_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 8) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:243:2: ( '<' typeParameter ( ',' typeParameter )* '>' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:243:4: '<' typeParameter ( ',' typeParameter )* '>'
+            if ( state.backtracking>0 && alreadyParsedRule(input, 8) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:243:2: ( '<' typeParameter ( ',' typeParameter )* '>' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:243:4: '<' typeParameter ( ',' typeParameter )* '>'
             {
-            match(input,33,FOLLOW_33_in_typeParameters282); if (failed) return ;
+            match(input,33,FOLLOW_33_in_typeParameters282); if (state.failed) return ;
             pushFollow(FOLLOW_typeParameter_in_typeParameters284);
             typeParameter();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:243:22: ( ',' typeParameter )*
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:243:22: ( ',' typeParameter )*
             loop15:
             do {
                 int alt15=2;
@@ -843,14 +891,15 @@
 
                 switch (alt15) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:243:23: ',' typeParameter
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:243:23: ',' typeParameter
             	    {
-            	    match(input,34,FOLLOW_34_in_typeParameters287); if (failed) return ;
+            	    match(input,34,FOLLOW_34_in_typeParameters287); if (state.failed) return ;
             	    pushFollow(FOLLOW_typeParameter_in_typeParameters289);
             	    typeParameter();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -859,7 +908,7 @@
                 }
             } while (true);
 
-            match(input,35,FOLLOW_35_in_typeParameters293); if (failed) return ;
+            match(input,35,FOLLOW_35_in_typeParameters293); if (state.failed) return ;
 
             }
 
@@ -869,24 +918,24 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 8, typeParameters_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 8, typeParameters_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end typeParameters
+    // $ANTLR end "typeParameters"
 
 
-    // $ANTLR start typeParameter
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:246:1: typeParameter : Identifier ( 'extends' bound )? ;
+    // $ANTLR start "typeParameter"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:246:1: typeParameter : Identifier ( 'extends' bound )? ;
     public final void typeParameter() throws RecognitionException {
         int typeParameter_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 9) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:247:2: ( Identifier ( 'extends' bound )? )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:247:4: Identifier ( 'extends' bound )?
+            if ( state.backtracking>0 && alreadyParsedRule(input, 9) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:247:2: ( Identifier ( 'extends' bound )? )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:247:4: Identifier ( 'extends' bound )?
             {
-            match(input,Identifier,FOLLOW_Identifier_in_typeParameter304); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:247:15: ( 'extends' bound )?
+            match(input,Identifier,FOLLOW_Identifier_in_typeParameter304); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:247:15: ( 'extends' bound )?
             int alt16=2;
             int LA16_0 = input.LA(1);
 
@@ -895,14 +944,15 @@
             }
             switch (alt16) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:247:16: 'extends' bound
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:247:16: 'extends' bound
                     {
-                    match(input,31,FOLLOW_31_in_typeParameter307); if (failed) return ;
+                    match(input,31,FOLLOW_31_in_typeParameter307); if (state.failed) return ;
                     pushFollow(FOLLOW_bound_in_typeParameter309);
                     bound();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -917,27 +967,28 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 9, typeParameter_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 9, typeParameter_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end typeParameter
+    // $ANTLR end "typeParameter"
 
 
-    // $ANTLR start bound
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:250:1: bound : type ( '&' type )* ;
+    // $ANTLR start "bound"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:250:1: bound : type ( '&' type )* ;
     public final void bound() throws RecognitionException {
         int bound_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 10) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:251:2: ( type ( '&' type )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:251:4: type ( '&' type )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 10) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:251:2: ( type ( '&' type )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:251:4: type ( '&' type )*
             {
             pushFollow(FOLLOW_type_in_bound324);
             type();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:251:9: ( '&' type )*
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:251:9: ( '&' type )*
             loop17:
             do {
                 int alt17=2;
@@ -950,14 +1001,15 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:251:10: '&' type
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:251:10: '&' type
             	    {
-            	    match(input,36,FOLLOW_36_in_bound327); if (failed) return ;
+            	    match(input,36,FOLLOW_36_in_bound327); if (state.failed) return ;
             	    pushFollow(FOLLOW_type_in_bound329);
             	    type();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -975,25 +1027,25 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 10, bound_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 10, bound_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end bound
+    // $ANTLR end "bound"
 
 
-    // $ANTLR start enumDeclaration
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:254:1: enumDeclaration : ENUM Identifier ( 'implements' typeList )? enumBody ;
+    // $ANTLR start "enumDeclaration"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:254:1: enumDeclaration : ENUM Identifier ( 'implements' typeList )? enumBody ;
     public final void enumDeclaration() throws RecognitionException {
         int enumDeclaration_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 11) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:255:2: ( ENUM Identifier ( 'implements' typeList )? enumBody )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:255:4: ENUM Identifier ( 'implements' typeList )? enumBody
+            if ( state.backtracking>0 && alreadyParsedRule(input, 11) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:255:2: ( ENUM Identifier ( 'implements' typeList )? enumBody )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:255:4: ENUM Identifier ( 'implements' typeList )? enumBody
             {
-            match(input,ENUM,FOLLOW_ENUM_in_enumDeclaration342); if (failed) return ;
-            match(input,Identifier,FOLLOW_Identifier_in_enumDeclaration344); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:255:20: ( 'implements' typeList )?
+            match(input,ENUM,FOLLOW_ENUM_in_enumDeclaration342); if (state.failed) return ;
+            match(input,Identifier,FOLLOW_Identifier_in_enumDeclaration344); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:255:20: ( 'implements' typeList )?
             int alt18=2;
             int LA18_0 = input.LA(1);
 
@@ -1002,14 +1054,15 @@
             }
             switch (alt18) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:255:21: 'implements' typeList
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:255:21: 'implements' typeList
                     {
-                    match(input,32,FOLLOW_32_in_enumDeclaration347); if (failed) return ;
+                    match(input,32,FOLLOW_32_in_enumDeclaration347); if (state.failed) return ;
                     pushFollow(FOLLOW_typeList_in_enumDeclaration349);
                     typeList();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -1017,9 +1070,10 @@
 
             pushFollow(FOLLOW_enumBody_in_enumDeclaration353);
             enumBody();
-            _fsp--;
-            if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+
             }
 
         }
@@ -1028,24 +1082,24 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 11, enumDeclaration_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 11, enumDeclaration_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end enumDeclaration
+    // $ANTLR end "enumDeclaration"
 
 
-    // $ANTLR start enumBody
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:258:1: enumBody : '{' ( enumConstants )? ( ',' )? ( enumBodyDeclarations )? '}' ;
+    // $ANTLR start "enumBody"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:258:1: enumBody : '{' ( enumConstants )? ( ',' )? ( enumBodyDeclarations )? '}' ;
     public final void enumBody() throws RecognitionException {
         int enumBody_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 12) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:259:2: ( '{' ( enumConstants )? ( ',' )? ( enumBodyDeclarations )? '}' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:259:4: '{' ( enumConstants )? ( ',' )? ( enumBodyDeclarations )? '}'
+            if ( state.backtracking>0 && alreadyParsedRule(input, 12) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:259:2: ( '{' ( enumConstants )? ( ',' )? ( enumBodyDeclarations )? '}' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:259:4: '{' ( enumConstants )? ( ',' )? ( enumBodyDeclarations )? '}'
             {
-            match(input,37,FOLLOW_37_in_enumBody365); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:259:8: ( enumConstants )?
+            match(input,37,FOLLOW_37_in_enumBody365); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:259:8: ( enumConstants )?
             int alt19=2;
             int LA19_0 = input.LA(1);
 
@@ -1054,19 +1108,20 @@
             }
             switch (alt19) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: enumConstants
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: enumConstants
                     {
                     pushFollow(FOLLOW_enumConstants_in_enumBody367);
                     enumConstants();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
             }
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:259:23: ( ',' )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:259:23: ( ',' )?
             int alt20=2;
             int LA20_0 = input.LA(1);
 
@@ -1075,16 +1130,16 @@
             }
             switch (alt20) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: ','
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: ','
                     {
-                    match(input,34,FOLLOW_34_in_enumBody370); if (failed) return ;
+                    match(input,34,FOLLOW_34_in_enumBody370); if (state.failed) return ;
 
                     }
                     break;
 
             }
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:259:28: ( enumBodyDeclarations )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:259:28: ( enumBodyDeclarations )?
             int alt21=2;
             int LA21_0 = input.LA(1);
 
@@ -1093,19 +1148,20 @@
             }
             switch (alt21) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: enumBodyDeclarations
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: enumBodyDeclarations
                     {
                     pushFollow(FOLLOW_enumBodyDeclarations_in_enumBody373);
                     enumBodyDeclarations();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
             }
 
-            match(input,38,FOLLOW_38_in_enumBody376); if (failed) return ;
+            match(input,38,FOLLOW_38_in_enumBody376); if (state.failed) return ;
 
             }
 
@@ -1115,27 +1171,28 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 12, enumBody_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 12, enumBody_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end enumBody
+    // $ANTLR end "enumBody"
 
 
-    // $ANTLR start enumConstants
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:262:1: enumConstants : enumConstant ( ',' enumConstant )* ;
+    // $ANTLR start "enumConstants"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:262:1: enumConstants : enumConstant ( ',' enumConstant )* ;
     public final void enumConstants() throws RecognitionException {
         int enumConstants_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 13) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:263:2: ( enumConstant ( ',' enumConstant )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:263:4: enumConstant ( ',' enumConstant )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 13) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:263:2: ( enumConstant ( ',' enumConstant )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:263:4: enumConstant ( ',' enumConstant )*
             {
             pushFollow(FOLLOW_enumConstant_in_enumConstants387);
             enumConstant();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:263:17: ( ',' enumConstant )*
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:263:17: ( ',' enumConstant )*
             loop22:
             do {
                 int alt22=2;
@@ -1154,14 +1211,15 @@
 
                 switch (alt22) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:263:18: ',' enumConstant
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:263:18: ',' enumConstant
             	    {
-            	    match(input,34,FOLLOW_34_in_enumConstants390); if (failed) return ;
+            	    match(input,34,FOLLOW_34_in_enumConstants390); if (state.failed) return ;
             	    pushFollow(FOLLOW_enumConstant_in_enumConstants392);
             	    enumConstant();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -1179,23 +1237,23 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 13, enumConstants_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 13, enumConstants_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end enumConstants
+    // $ANTLR end "enumConstants"
 
 
-    // $ANTLR start enumConstant
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:266:1: enumConstant : ( annotations )? Identifier ( arguments )? ( classBody )? ;
+    // $ANTLR start "enumConstant"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:266:1: enumConstant : ( annotations )? Identifier ( arguments )? ( classBody )? ;
     public final void enumConstant() throws RecognitionException {
         int enumConstant_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 14) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:267:2: ( ( annotations )? Identifier ( arguments )? ( classBody )? )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:267:4: ( annotations )? Identifier ( arguments )? ( classBody )?
+            if ( state.backtracking>0 && alreadyParsedRule(input, 14) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:267:2: ( ( annotations )? Identifier ( arguments )? ( classBody )? )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:267:4: ( annotations )? Identifier ( arguments )? ( classBody )?
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:267:4: ( annotations )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:267:4: ( annotations )?
             int alt23=2;
             int LA23_0 = input.LA(1);
 
@@ -1204,20 +1262,21 @@
             }
             switch (alt23) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: annotations
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: annotations
                     {
                     pushFollow(FOLLOW_annotations_in_enumConstant406);
                     annotations();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
             }
 
-            match(input,Identifier,FOLLOW_Identifier_in_enumConstant409); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:267:28: ( arguments )?
+            match(input,Identifier,FOLLOW_Identifier_in_enumConstant409); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:267:28: ( arguments )?
             int alt24=2;
             int LA24_0 = input.LA(1);
 
@@ -1226,19 +1285,20 @@
             }
             switch (alt24) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:267:29: arguments
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:267:29: arguments
                     {
                     pushFollow(FOLLOW_arguments_in_enumConstant412);
                     arguments();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
             }
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:267:41: ( classBody )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:267:41: ( classBody )?
             int alt25=2;
             int LA25_0 = input.LA(1);
 
@@ -1247,13 +1307,14 @@
             }
             switch (alt25) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:267:42: classBody
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:267:42: classBody
                     {
                     pushFollow(FOLLOW_classBody_in_enumConstant417);
                     classBody();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -1268,43 +1329,38 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 14, enumConstant_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 14, enumConstant_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end enumConstant
+    // $ANTLR end "enumConstant"
 
 
-    // $ANTLR start enumBodyDeclarations
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:270:1: enumBodyDeclarations : ';' ( classBodyDeclaration )* ;
+    // $ANTLR start "enumBodyDeclarations"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:270:1: enumBodyDeclarations : ';' ( classBodyDeclaration )* ;
     public final void enumBodyDeclarations() throws RecognitionException {
         int enumBodyDeclarations_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 15) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:271:2: ( ';' ( classBodyDeclaration )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:271:4: ';' ( classBodyDeclaration )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 15) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:271:2: ( ';' ( classBodyDeclaration )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:271:4: ';' ( classBodyDeclaration )*
             {
-            match(input,25,FOLLOW_25_in_enumBodyDeclarations431); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:271:8: ( classBodyDeclaration )*
+            match(input,25,FOLLOW_25_in_enumBodyDeclarations431); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:271:8: ( classBodyDeclaration )*
             loop26:
             do {
                 int alt26=2;
-                int LA26_0 = input.LA(1);
-
-                if ( ((LA26_0>=Identifier && LA26_0<=ENUM)||LA26_0==25||LA26_0==27||LA26_0==30||LA26_0==33||LA26_0==37||(LA26_0>=39 && LA26_0<=40)||(LA26_0>=45 && LA26_0<=62)||LA26_0==71) ) {
-                    alt26=1;
-                }
-
-
+                alt26 = dfa26.predict(input);
                 switch (alt26) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:271:9: classBodyDeclaration
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:271:9: classBodyDeclaration
             	    {
             	    pushFollow(FOLLOW_classBodyDeclaration_in_enumBodyDeclarations434);
             	    classBodyDeclaration();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -1322,20 +1378,20 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 15, enumBodyDeclarations_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 15, enumBodyDeclarations_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end enumBodyDeclarations
+    // $ANTLR end "enumBodyDeclarations"
 
 
-    // $ANTLR start interfaceDeclaration
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:274:1: interfaceDeclaration : ( normalInterfaceDeclaration | annotationTypeDeclaration );
+    // $ANTLR start "interfaceDeclaration"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:274:1: interfaceDeclaration : ( normalInterfaceDeclaration | annotationTypeDeclaration );
     public final void interfaceDeclaration() throws RecognitionException {
         int interfaceDeclaration_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 16) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:275:2: ( normalInterfaceDeclaration | annotationTypeDeclaration )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 16) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:275:2: ( normalInterfaceDeclaration | annotationTypeDeclaration )
             int alt27=2;
             int LA27_0 = input.LA(1);
 
@@ -1346,31 +1402,33 @@
                 alt27=2;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("274:1: interfaceDeclaration : ( normalInterfaceDeclaration | annotationTypeDeclaration );", 27, 0, input);
+                    new NoViableAltException("", 27, 0, input);
 
                 throw nvae;
             }
             switch (alt27) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:275:4: normalInterfaceDeclaration
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:275:4: normalInterfaceDeclaration
                     {
                     pushFollow(FOLLOW_normalInterfaceDeclaration_in_interfaceDeclaration448);
                     normalInterfaceDeclaration();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:276:5: annotationTypeDeclaration
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:276:5: annotationTypeDeclaration
                     {
                     pushFollow(FOLLOW_annotationTypeDeclaration_in_interfaceDeclaration454);
                     annotationTypeDeclaration();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -1381,25 +1439,25 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 16, interfaceDeclaration_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 16, interfaceDeclaration_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end interfaceDeclaration
+    // $ANTLR end "interfaceDeclaration"
 
 
-    // $ANTLR start normalInterfaceDeclaration
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:279:1: normalInterfaceDeclaration : 'interface' Identifier ( typeParameters )? ( 'extends' typeList )? interfaceBody ;
+    // $ANTLR start "normalInterfaceDeclaration"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:279:1: normalInterfaceDeclaration : 'interface' Identifier ( typeParameters )? ( 'extends' typeList )? interfaceBody ;
     public final void normalInterfaceDeclaration() throws RecognitionException {
         int normalInterfaceDeclaration_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 17) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:280:2: ( 'interface' Identifier ( typeParameters )? ( 'extends' typeList )? interfaceBody )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:280:4: 'interface' Identifier ( typeParameters )? ( 'extends' typeList )? interfaceBody
+            if ( state.backtracking>0 && alreadyParsedRule(input, 17) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:280:2: ( 'interface' Identifier ( typeParameters )? ( 'extends' typeList )? interfaceBody )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:280:4: 'interface' Identifier ( typeParameters )? ( 'extends' typeList )? interfaceBody
             {
-            match(input,39,FOLLOW_39_in_normalInterfaceDeclaration466); if (failed) return ;
-            match(input,Identifier,FOLLOW_Identifier_in_normalInterfaceDeclaration468); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:280:27: ( typeParameters )?
+            match(input,39,FOLLOW_39_in_normalInterfaceDeclaration466); if (state.failed) return ;
+            match(input,Identifier,FOLLOW_Identifier_in_normalInterfaceDeclaration468); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:280:27: ( typeParameters )?
             int alt28=2;
             int LA28_0 = input.LA(1);
 
@@ -1408,19 +1466,20 @@
             }
             switch (alt28) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: typeParameters
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: typeParameters
                     {
                     pushFollow(FOLLOW_typeParameters_in_normalInterfaceDeclaration470);
                     typeParameters();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
             }
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:280:43: ( 'extends' typeList )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:280:43: ( 'extends' typeList )?
             int alt29=2;
             int LA29_0 = input.LA(1);
 
@@ -1429,14 +1488,15 @@
             }
             switch (alt29) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:280:44: 'extends' typeList
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:280:44: 'extends' typeList
                     {
-                    match(input,31,FOLLOW_31_in_normalInterfaceDeclaration474); if (failed) return ;
+                    match(input,31,FOLLOW_31_in_normalInterfaceDeclaration474); if (state.failed) return ;
                     pushFollow(FOLLOW_typeList_in_normalInterfaceDeclaration476);
                     typeList();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -1444,9 +1504,10 @@
 
             pushFollow(FOLLOW_interfaceBody_in_normalInterfaceDeclaration480);
             interfaceBody();
-            _fsp--;
-            if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+
             }
 
         }
@@ -1455,27 +1516,28 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 17, normalInterfaceDeclaration_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 17, normalInterfaceDeclaration_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end normalInterfaceDeclaration
+    // $ANTLR end "normalInterfaceDeclaration"
 
 
-    // $ANTLR start typeList
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:283:1: typeList : type ( ',' type )* ;
+    // $ANTLR start "typeList"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:283:1: typeList : type ( ',' type )* ;
     public final void typeList() throws RecognitionException {
         int typeList_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 18) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:284:2: ( type ( ',' type )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:284:4: type ( ',' type )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 18) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:284:2: ( type ( ',' type )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:284:4: type ( ',' type )*
             {
             pushFollow(FOLLOW_type_in_typeList492);
             type();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:284:9: ( ',' type )*
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:284:9: ( ',' type )*
             loop30:
             do {
                 int alt30=2;
@@ -1488,14 +1550,15 @@
 
                 switch (alt30) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:284:10: ',' type
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:284:10: ',' type
             	    {
-            	    match(input,34,FOLLOW_34_in_typeList495); if (failed) return ;
+            	    match(input,34,FOLLOW_34_in_typeList495); if (state.failed) return ;
             	    pushFollow(FOLLOW_type_in_typeList497);
             	    type();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -1513,43 +1576,38 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 18, typeList_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 18, typeList_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end typeList
+    // $ANTLR end "typeList"
 
 
-    // $ANTLR start classBody
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:287:1: classBody : '{' ( classBodyDeclaration )* '}' ;
+    // $ANTLR start "classBody"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:287:1: classBody : '{' ( classBodyDeclaration )* '}' ;
     public final void classBody() throws RecognitionException {
         int classBody_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 19) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:288:2: ( '{' ( classBodyDeclaration )* '}' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:288:4: '{' ( classBodyDeclaration )* '}'
+            if ( state.backtracking>0 && alreadyParsedRule(input, 19) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:288:2: ( '{' ( classBodyDeclaration )* '}' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:288:4: '{' ( classBodyDeclaration )* '}'
             {
-            match(input,37,FOLLOW_37_in_classBody511); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:288:8: ( classBodyDeclaration )*
+            match(input,37,FOLLOW_37_in_classBody511); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:288:8: ( classBodyDeclaration )*
             loop31:
             do {
                 int alt31=2;
-                int LA31_0 = input.LA(1);
-
-                if ( ((LA31_0>=Identifier && LA31_0<=ENUM)||LA31_0==25||LA31_0==27||LA31_0==30||LA31_0==33||LA31_0==37||(LA31_0>=39 && LA31_0<=40)||(LA31_0>=45 && LA31_0<=62)||LA31_0==71) ) {
-                    alt31=1;
-                }
-
-
+                alt31 = dfa31.predict(input);
                 switch (alt31) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: classBodyDeclaration
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: classBodyDeclaration
             	    {
             	    pushFollow(FOLLOW_classBodyDeclaration_in_classBody513);
             	    classBodyDeclaration();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -1558,7 +1616,7 @@
                 }
             } while (true);
 
-            match(input,38,FOLLOW_38_in_classBody516); if (failed) return ;
+            match(input,38,FOLLOW_38_in_classBody516); if (state.failed) return ;
 
             }
 
@@ -1568,43 +1626,38 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 19, classBody_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 19, classBody_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end classBody
+    // $ANTLR end "classBody"
 
 
-    // $ANTLR start interfaceBody
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:291:1: interfaceBody : '{' ( interfaceBodyDeclaration )* '}' ;
+    // $ANTLR start "interfaceBody"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:291:1: interfaceBody : '{' ( interfaceBodyDeclaration )* '}' ;
     public final void interfaceBody() throws RecognitionException {
         int interfaceBody_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 20) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:292:2: ( '{' ( interfaceBodyDeclaration )* '}' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:292:4: '{' ( interfaceBodyDeclaration )* '}'
+            if ( state.backtracking>0 && alreadyParsedRule(input, 20) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:292:2: ( '{' ( interfaceBodyDeclaration )* '}' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:292:4: '{' ( interfaceBodyDeclaration )* '}'
             {
-            match(input,37,FOLLOW_37_in_interfaceBody528); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:292:8: ( interfaceBodyDeclaration )*
+            match(input,37,FOLLOW_37_in_interfaceBody528); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:292:8: ( interfaceBodyDeclaration )*
             loop32:
             do {
                 int alt32=2;
-                int LA32_0 = input.LA(1);
-
-                if ( ((LA32_0>=Identifier && LA32_0<=ENUM)||LA32_0==25||LA32_0==27||LA32_0==30||LA32_0==33||(LA32_0>=39 && LA32_0<=40)||(LA32_0>=45 && LA32_0<=62)||LA32_0==71) ) {
-                    alt32=1;
-                }
-
-
+                alt32 = dfa32.predict(input);
                 switch (alt32) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: interfaceBodyDeclaration
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: interfaceBodyDeclaration
             	    {
             	    pushFollow(FOLLOW_interfaceBodyDeclaration_in_interfaceBody530);
             	    interfaceBodyDeclaration();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -1613,7 +1666,7 @@
                 }
             } while (true);
 
-            match(input,38,FOLLOW_38_in_interfaceBody533); if (failed) return ;
+            match(input,38,FOLLOW_38_in_interfaceBody533); if (state.failed) return ;
 
             }
 
@@ -1623,100 +1676,34 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 20, interfaceBody_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 20, interfaceBody_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end interfaceBody
+    // $ANTLR end "interfaceBody"
 
 
-    // $ANTLR start classBodyDeclaration
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:295:1: classBodyDeclaration : ( ';' | ( 'static' )? block | ( modifier )* memberDecl );
+    // $ANTLR start "classBodyDeclaration"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:295:1: classBodyDeclaration : ( ';' | ( 'static' )? block | ( modifier )* memberDecl );
     public final void classBodyDeclaration() throws RecognitionException {
         int classBodyDeclaration_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 21) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:296:2: ( ';' | ( 'static' )? block | ( modifier )* memberDecl )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 21) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:296:2: ( ';' | ( 'static' )? block | ( modifier )* memberDecl )
             int alt35=3;
-            switch ( input.LA(1) ) {
-            case 25:
-                {
-                alt35=1;
-                }
-                break;
-            case 27:
-                {
-                int LA35_2 = input.LA(2);
-
-                if ( ((LA35_2>=Identifier && LA35_2<=ENUM)||LA35_2==27||LA35_2==30||LA35_2==33||(LA35_2>=39 && LA35_2<=40)||(LA35_2>=45 && LA35_2<=62)||LA35_2==71) ) {
-                    alt35=3;
-                }
-                else if ( (LA35_2==37) ) {
-                    alt35=2;
-                }
-                else {
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("295:1: classBodyDeclaration : ( ';' | ( 'static' )? block | ( modifier )* memberDecl );", 35, 2, input);
-
-                    throw nvae;
-                }
-                }
-                break;
-            case 37:
-                {
-                alt35=2;
-                }
-                break;
-            case Identifier:
-            case ENUM:
-            case 30:
-            case 33:
-            case 39:
-            case 40:
-            case 45:
-            case 46:
-            case 47:
-            case 48:
-            case 49:
-            case 50:
-            case 51:
-            case 52:
-            case 53:
-            case 54:
-            case 55:
-            case 56:
-            case 57:
-            case 58:
-            case 59:
-            case 60:
-            case 61:
-            case 62:
-            case 71:
-                {
-                alt35=3;
-                }
-                break;
-            default:
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("295:1: classBodyDeclaration : ( ';' | ( 'static' )? block | ( modifier )* memberDecl );", 35, 0, input);
-
-                throw nvae;
-            }
-
+            alt35 = dfa35.predict(input);
             switch (alt35) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:296:4: ';'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:296:4: ';'
                     {
-                    match(input,25,FOLLOW_25_in_classBodyDeclaration544); if (failed) return ;
+                    match(input,25,FOLLOW_25_in_classBodyDeclaration544); if (state.failed) return ;
 
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:297:4: ( 'static' )? block
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:297:4: ( 'static' )? block
                     {
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:297:4: ( 'static' )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:297:4: ( 'static' )?
                     int alt33=2;
                     int LA33_0 = input.LA(1);
 
@@ -1725,9 +1712,9 @@
                     }
                     switch (alt33) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: 'static'
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: 'static'
                             {
-                            match(input,27,FOLLOW_27_in_classBodyDeclaration549); if (failed) return ;
+                            match(input,27,FOLLOW_27_in_classBodyDeclaration549); if (state.failed) return ;
 
                             }
                             break;
@@ -1736,43 +1723,30 @@
 
                     pushFollow(FOLLOW_block_in_classBodyDeclaration552);
                     block();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:298:4: ( modifier )* memberDecl
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:298:4: ( modifier )* memberDecl
                     {
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:298:4: ( modifier )*
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:298:4: ( modifier )*
                     loop34:
                     do {
                         int alt34=2;
-                        int LA34_0 = input.LA(1);
-
-                        if ( (LA34_0==71) ) {
-                            int LA34_6 = input.LA(2);
-
-                            if ( (LA34_6==Identifier) ) {
-                                alt34=1;
-                            }
-
-
-                        }
-                        else if ( (LA34_0==27||(LA34_0>=45 && LA34_0<=54)) ) {
-                            alt34=1;
-                        }
-
-
+                        alt34 = dfa34.predict(input);
                         switch (alt34) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: modifier
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: modifier
                     	    {
                     	    pushFollow(FOLLOW_modifier_in_classBodyDeclaration557);
                     	    modifier();
-                    	    _fsp--;
-                    	    if (failed) return ;
 
+                    	    state._fsp--;
+                    	    if (state.failed) return ;
+
                     	    }
                     	    break;
 
@@ -1783,9 +1757,10 @@
 
                     pushFollow(FOLLOW_memberDecl_in_classBodyDeclaration560);
                     memberDecl();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -1796,272 +1771,101 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 21, classBodyDeclaration_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 21, classBodyDeclaration_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end classBodyDeclaration
+    // $ANTLR end "classBodyDeclaration"
 
 
-    // $ANTLR start memberDecl
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:301:1: memberDecl : ( genericMethodOrConstructorDecl | methodDeclaration | fieldDeclaration | 'void' Identifier voidMethodDeclaratorRest | Identifier constructorDeclaratorRest | interfaceDeclaration | classDeclaration );
+    // $ANTLR start "memberDecl"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:301:1: memberDecl : ( genericMethodOrConstructorDecl | methodDeclaration | fieldDeclaration | 'void' Identifier voidMethodDeclaratorRest | Identifier constructorDeclaratorRest | interfaceDeclaration | classDeclaration );
     public final void memberDecl() throws RecognitionException {
         int memberDecl_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 22) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:302:2: ( genericMethodOrConstructorDecl | methodDeclaration | fieldDeclaration | 'void' Identifier voidMethodDeclaratorRest | Identifier constructorDeclaratorRest | interfaceDeclaration | classDeclaration )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 22) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:302:2: ( genericMethodOrConstructorDecl | methodDeclaration | fieldDeclaration | 'void' Identifier voidMethodDeclaratorRest | Identifier constructorDeclaratorRest | interfaceDeclaration | classDeclaration )
             int alt36=7;
-            switch ( input.LA(1) ) {
-            case 33:
-                {
-                alt36=1;
-                }
-                break;
-            case Identifier:
-                {
-                switch ( input.LA(2) ) {
-                case 33:
-                    {
-                    int LA36_9 = input.LA(3);
-
-                    if ( (synpred38()) ) {
-                        alt36=2;
-                    }
-                    else if ( (synpred39()) ) {
-                        alt36=3;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("301:1: memberDecl : ( genericMethodOrConstructorDecl | methodDeclaration | fieldDeclaration | 'void' Identifier voidMethodDeclaratorRest | Identifier constructorDeclaratorRest | interfaceDeclaration | classDeclaration );", 36, 9, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case 28:
-                    {
-                    int LA36_10 = input.LA(3);
-
-                    if ( (synpred38()) ) {
-                        alt36=2;
-                    }
-                    else if ( (synpred39()) ) {
-                        alt36=3;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("301:1: memberDecl : ( genericMethodOrConstructorDecl | methodDeclaration | fieldDeclaration | 'void' Identifier voidMethodDeclaratorRest | Identifier constructorDeclaratorRest | interfaceDeclaration | classDeclaration );", 36, 10, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case 41:
-                    {
-                    int LA36_11 = input.LA(3);
-
-                    if ( (synpred38()) ) {
-                        alt36=2;
-                    }
-                    else if ( (synpred39()) ) {
-                        alt36=3;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("301:1: memberDecl : ( genericMethodOrConstructorDecl | methodDeclaration | fieldDeclaration | 'void' Identifier voidMethodDeclaratorRest | Identifier constructorDeclaratorRest | interfaceDeclaration | classDeclaration );", 36, 11, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case Identifier:
-                    {
-                    int LA36_12 = input.LA(3);
-
-                    if ( (synpred38()) ) {
-                        alt36=2;
-                    }
-                    else if ( (synpred39()) ) {
-                        alt36=3;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("301:1: memberDecl : ( genericMethodOrConstructorDecl | methodDeclaration | fieldDeclaration | 'void' Identifier voidMethodDeclaratorRest | Identifier constructorDeclaratorRest | interfaceDeclaration | classDeclaration );", 36, 12, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case 65:
-                    {
-                    alt36=5;
-                    }
-                    break;
-                default:
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("301:1: memberDecl : ( genericMethodOrConstructorDecl | methodDeclaration | fieldDeclaration | 'void' Identifier voidMethodDeclaratorRest | Identifier constructorDeclaratorRest | interfaceDeclaration | classDeclaration );", 36, 2, input);
-
-                    throw nvae;
-                }
-
-                }
-                break;
-            case 55:
-            case 56:
-            case 57:
-            case 58:
-            case 59:
-            case 60:
-            case 61:
-            case 62:
-                {
-                int LA36_3 = input.LA(2);
-
-                if ( (LA36_3==41) ) {
-                    int LA36_14 = input.LA(3);
-
-                    if ( (synpred38()) ) {
-                        alt36=2;
-                    }
-                    else if ( (synpred39()) ) {
-                        alt36=3;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("301:1: memberDecl : ( genericMethodOrConstructorDecl | methodDeclaration | fieldDeclaration | 'void' Identifier voidMethodDeclaratorRest | Identifier constructorDeclaratorRest | interfaceDeclaration | classDeclaration );", 36, 14, input);
-
-                        throw nvae;
-                    }
-                }
-                else if ( (LA36_3==Identifier) ) {
-                    int LA36_15 = input.LA(3);
-
-                    if ( (synpred38()) ) {
-                        alt36=2;
-                    }
-                    else if ( (synpred39()) ) {
-                        alt36=3;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("301:1: memberDecl : ( genericMethodOrConstructorDecl | methodDeclaration | fieldDeclaration | 'void' Identifier voidMethodDeclaratorRest | Identifier constructorDeclaratorRest | interfaceDeclaration | classDeclaration );", 36, 15, input);
-
-                        throw nvae;
-                    }
-                }
-                else {
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("301:1: memberDecl : ( genericMethodOrConstructorDecl | methodDeclaration | fieldDeclaration | 'void' Identifier voidMethodDeclaratorRest | Identifier constructorDeclaratorRest | interfaceDeclaration | classDeclaration );", 36, 3, input);
-
-                    throw nvae;
-                }
-                }
-                break;
-            case 40:
-                {
-                alt36=4;
-                }
-                break;
-            case 39:
-            case 71:
-                {
-                alt36=6;
-                }
-                break;
-            case ENUM:
-            case 30:
-                {
-                alt36=7;
-                }
-                break;
-            default:
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("301:1: memberDecl : ( genericMethodOrConstructorDecl | methodDeclaration | fieldDeclaration | 'void' Identifier voidMethodDeclaratorRest | Identifier constructorDeclaratorRest | interfaceDeclaration | classDeclaration );", 36, 0, input);
-
-                throw nvae;
-            }
-
+            alt36 = dfa36.predict(input);
             switch (alt36) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:302:4: genericMethodOrConstructorDecl
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:302:4: genericMethodOrConstructorDecl
                     {
                     pushFollow(FOLLOW_genericMethodOrConstructorDecl_in_memberDecl572);
                     genericMethodOrConstructorDecl();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:303:4: methodDeclaration
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:303:4: methodDeclaration
                     {
                     pushFollow(FOLLOW_methodDeclaration_in_memberDecl577);
                     methodDeclaration();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:304:4: fieldDeclaration
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:304:4: fieldDeclaration
                     {
                     pushFollow(FOLLOW_fieldDeclaration_in_memberDecl582);
                     fieldDeclaration();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 4 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:305:4: 'void' Identifier voidMethodDeclaratorRest
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:305:4: 'void' Identifier voidMethodDeclaratorRest
                     {
-                    match(input,40,FOLLOW_40_in_memberDecl587); if (failed) return ;
-                    match(input,Identifier,FOLLOW_Identifier_in_memberDecl589); if (failed) return ;
+                    match(input,40,FOLLOW_40_in_memberDecl587); if (state.failed) return ;
+                    match(input,Identifier,FOLLOW_Identifier_in_memberDecl589); if (state.failed) return ;
                     pushFollow(FOLLOW_voidMethodDeclaratorRest_in_memberDecl591);
                     voidMethodDeclaratorRest();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 5 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:306:4: Identifier constructorDeclaratorRest
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:306:4: Identifier constructorDeclaratorRest
                     {
-                    match(input,Identifier,FOLLOW_Identifier_in_memberDecl596); if (failed) return ;
+                    match(input,Identifier,FOLLOW_Identifier_in_memberDecl596); if (state.failed) return ;
                     pushFollow(FOLLOW_constructorDeclaratorRest_in_memberDecl598);
                     constructorDeclaratorRest();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 6 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:307:4: interfaceDeclaration
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:307:4: interfaceDeclaration
                     {
                     pushFollow(FOLLOW_interfaceDeclaration_in_memberDecl603);
                     interfaceDeclaration();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 7 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:308:4: classDeclaration
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:308:4: classDeclaration
                     {
                     pushFollow(FOLLOW_classDeclaration_in_memberDecl608);
                     classDeclaration();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -2072,31 +1876,33 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 22, memberDecl_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 22, memberDecl_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end memberDecl
+    // $ANTLR end "memberDecl"
 
 
-    // $ANTLR start genericMethodOrConstructorDecl
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:311:1: genericMethodOrConstructorDecl : typeParameters genericMethodOrConstructorRest ;
+    // $ANTLR start "genericMethodOrConstructorDecl"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:311:1: genericMethodOrConstructorDecl : typeParameters genericMethodOrConstructorRest ;
     public final void genericMethodOrConstructorDecl() throws RecognitionException {
         int genericMethodOrConstructorDecl_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 23) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:312:2: ( typeParameters genericMethodOrConstructorRest )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:312:4: typeParameters genericMethodOrConstructorRest
+            if ( state.backtracking>0 && alreadyParsedRule(input, 23) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:312:2: ( typeParameters genericMethodOrConstructorRest )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:312:4: typeParameters genericMethodOrConstructorRest
             {
             pushFollow(FOLLOW_typeParameters_in_genericMethodOrConstructorDecl620);
             typeParameters();
-            _fsp--;
-            if (failed) return ;
+
+            state._fsp--;
+            if (state.failed) return ;
             pushFollow(FOLLOW_genericMethodOrConstructorRest_in_genericMethodOrConstructorDecl622);
             genericMethodOrConstructorRest();
-            _fsp--;
-            if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+
             }
 
         }
@@ -2105,36 +1911,36 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 23, genericMethodOrConstructorDecl_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 23, genericMethodOrConstructorDecl_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end genericMethodOrConstructorDecl
+    // $ANTLR end "genericMethodOrConstructorDecl"
 
 
-    // $ANTLR start genericMethodOrConstructorRest
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:315:1: genericMethodOrConstructorRest : ( ( type | 'void' ) Identifier methodDeclaratorRest | Identifier constructorDeclaratorRest );
+    // $ANTLR start "genericMethodOrConstructorRest"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:315:1: genericMethodOrConstructorRest : ( ( type | 'void' ) Identifier methodDeclaratorRest | Identifier constructorDeclaratorRest );
     public final void genericMethodOrConstructorRest() throws RecognitionException {
         int genericMethodOrConstructorRest_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 24) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:316:2: ( ( type | 'void' ) Identifier methodDeclaratorRest | Identifier constructorDeclaratorRest )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 24) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:316:2: ( ( type | 'void' ) Identifier methodDeclaratorRest | Identifier constructorDeclaratorRest )
             int alt38=2;
             int LA38_0 = input.LA(1);
 
             if ( (LA38_0==Identifier) ) {
                 int LA38_1 = input.LA(2);
 
-                if ( (LA38_1==Identifier||LA38_1==28||LA38_1==33||LA38_1==41) ) {
+                if ( (LA38_1==65) ) {
+                    alt38=2;
+                }
+                else if ( (LA38_1==Identifier||LA38_1==28||LA38_1==33||LA38_1==41) ) {
                     alt38=1;
                 }
-                else if ( (LA38_1==65) ) {
-                    alt38=2;
-                }
                 else {
-                    if (backtracking>0) {failed=true; return ;}
+                    if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("315:1: genericMethodOrConstructorRest : ( ( type | 'void' ) Identifier methodDeclaratorRest | Identifier constructorDeclaratorRest );", 38, 1, input);
+                        new NoViableAltException("", 38, 1, input);
 
                     throw nvae;
                 }
@@ -2143,17 +1949,17 @@
                 alt38=1;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("315:1: genericMethodOrConstructorRest : ( ( type | 'void' ) Identifier methodDeclaratorRest | Identifier constructorDeclaratorRest );", 38, 0, input);
+                    new NoViableAltException("", 38, 0, input);
 
                 throw nvae;
             }
             switch (alt38) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:316:4: ( type | 'void' ) Identifier methodDeclaratorRest
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:316:4: ( type | 'void' ) Identifier methodDeclaratorRest
                     {
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:316:4: ( type | 'void' )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:316:4: ( type | 'void' )
                     int alt37=2;
                     int LA37_0 = input.LA(1);
 
@@ -2164,50 +1970,53 @@
                         alt37=2;
                     }
                     else {
-                        if (backtracking>0) {failed=true; return ;}
+                        if (state.backtracking>0) {state.failed=true; return ;}
                         NoViableAltException nvae =
-                            new NoViableAltException("316:4: ( type | 'void' )", 37, 0, input);
+                            new NoViableAltException("", 37, 0, input);
 
                         throw nvae;
                     }
                     switch (alt37) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:316:5: type
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:316:5: type
                             {
                             pushFollow(FOLLOW_type_in_genericMethodOrConstructorRest635);
                             type();
-                            _fsp--;
-                            if (failed) return ;
 
+                            state._fsp--;
+                            if (state.failed) return ;
+
                             }
                             break;
                         case 2 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:316:12: 'void'
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:316:12: 'void'
                             {
-                            match(input,40,FOLLOW_40_in_genericMethodOrConstructorRest639); if (failed) return ;
+                            match(input,40,FOLLOW_40_in_genericMethodOrConstructorRest639); if (state.failed) return ;
 
                             }
                             break;
 
                     }
 
-                    match(input,Identifier,FOLLOW_Identifier_in_genericMethodOrConstructorRest642); if (failed) return ;
+                    match(input,Identifier,FOLLOW_Identifier_in_genericMethodOrConstructorRest642); if (state.failed) return ;
                     pushFollow(FOLLOW_methodDeclaratorRest_in_genericMethodOrConstructorRest644);
                     methodDeclaratorRest();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:317:4: Identifier constructorDeclaratorRest
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:317:4: Identifier constructorDeclaratorRest
                     {
-                    match(input,Identifier,FOLLOW_Identifier_in_genericMethodOrConstructorRest649); if (failed) return ;
+                    match(input,Identifier,FOLLOW_Identifier_in_genericMethodOrConstructorRest649); if (state.failed) return ;
                     pushFollow(FOLLOW_constructorDeclaratorRest_in_genericMethodOrConstructorRest651);
                     constructorDeclaratorRest();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -2218,32 +2027,34 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 24, genericMethodOrConstructorRest_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 24, genericMethodOrConstructorRest_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end genericMethodOrConstructorRest
+    // $ANTLR end "genericMethodOrConstructorRest"
 
 
-    // $ANTLR start methodDeclaration
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:320:1: methodDeclaration : type Identifier methodDeclaratorRest ;
+    // $ANTLR start "methodDeclaration"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:320:1: methodDeclaration : type Identifier methodDeclaratorRest ;
     public final void methodDeclaration() throws RecognitionException {
         int methodDeclaration_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 25) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:321:2: ( type Identifier methodDeclaratorRest )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:321:4: type Identifier methodDeclaratorRest
+            if ( state.backtracking>0 && alreadyParsedRule(input, 25) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:321:2: ( type Identifier methodDeclaratorRest )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:321:4: type Identifier methodDeclaratorRest
             {
             pushFollow(FOLLOW_type_in_methodDeclaration662);
             type();
-            _fsp--;
-            if (failed) return ;
-            match(input,Identifier,FOLLOW_Identifier_in_methodDeclaration664); if (failed) return ;
+
+            state._fsp--;
+            if (state.failed) return ;
+            match(input,Identifier,FOLLOW_Identifier_in_methodDeclaration664); if (state.failed) return ;
             pushFollow(FOLLOW_methodDeclaratorRest_in_methodDeclaration666);
             methodDeclaratorRest();
-            _fsp--;
-            if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+
             }
 
         }
@@ -2252,32 +2063,34 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 25, methodDeclaration_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 25, methodDeclaration_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end methodDeclaration
+    // $ANTLR end "methodDeclaration"
 
 
-    // $ANTLR start fieldDeclaration
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:324:1: fieldDeclaration : type variableDeclarators ';' ;
+    // $ANTLR start "fieldDeclaration"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:324:1: fieldDeclaration : type variableDeclarators ';' ;
     public final void fieldDeclaration() throws RecognitionException {
         int fieldDeclaration_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 26) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:325:2: ( type variableDeclarators ';' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:325:4: type variableDeclarators ';'
+            if ( state.backtracking>0 && alreadyParsedRule(input, 26) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:325:2: ( type variableDeclarators ';' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:325:4: type variableDeclarators ';'
             {
             pushFollow(FOLLOW_type_in_fieldDeclaration677);
             type();
-            _fsp--;
-            if (failed) return ;
+
+            state._fsp--;
+            if (state.failed) return ;
             pushFollow(FOLLOW_variableDeclarators_in_fieldDeclaration679);
             variableDeclarators();
-            _fsp--;
-            if (failed) return ;
-            match(input,25,FOLLOW_25_in_fieldDeclaration681); if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+            match(input,25,FOLLOW_25_in_fieldDeclaration681); if (state.failed) return ;
+
             }
 
         }
@@ -2286,69 +2099,41 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 26, fieldDeclaration_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 26, fieldDeclaration_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end fieldDeclaration
+    // $ANTLR end "fieldDeclaration"
 
 
-    // $ANTLR start interfaceBodyDeclaration
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:328:1: interfaceBodyDeclaration : ( ( modifier )* interfaceMemberDecl | ';' );
+    // $ANTLR start "interfaceBodyDeclaration"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:328:1: interfaceBodyDeclaration : ( ( modifier )* interfaceMemberDecl | ';' );
     public final void interfaceBodyDeclaration() throws RecognitionException {
         int interfaceBodyDeclaration_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 27) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:329:2: ( ( modifier )* interfaceMemberDecl | ';' )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 27) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:329:2: ( ( modifier )* interfaceMemberDecl | ';' )
             int alt40=2;
-            int LA40_0 = input.LA(1);
-
-            if ( ((LA40_0>=Identifier && LA40_0<=ENUM)||LA40_0==27||LA40_0==30||LA40_0==33||(LA40_0>=39 && LA40_0<=40)||(LA40_0>=45 && LA40_0<=62)||LA40_0==71) ) {
-                alt40=1;
-            }
-            else if ( (LA40_0==25) ) {
-                alt40=2;
-            }
-            else {
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("328:1: interfaceBodyDeclaration : ( ( modifier )* interfaceMemberDecl | ';' );", 40, 0, input);
-
-                throw nvae;
-            }
+            alt40 = dfa40.predict(input);
             switch (alt40) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:329:4: ( modifier )* interfaceMemberDecl
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:329:4: ( modifier )* interfaceMemberDecl
                     {
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:329:4: ( modifier )*
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:329:4: ( modifier )*
                     loop39:
                     do {
                         int alt39=2;
-                        int LA39_0 = input.LA(1);
-
-                        if ( (LA39_0==71) ) {
-                            int LA39_6 = input.LA(2);
-
-                            if ( (LA39_6==Identifier) ) {
-                                alt39=1;
-                            }
-
-
-                        }
-                        else if ( (LA39_0==27||(LA39_0>=45 && LA39_0<=54)) ) {
-                            alt39=1;
-                        }
-
-
+                        alt39 = dfa39.predict(input);
                         switch (alt39) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: modifier
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: modifier
                     	    {
                     	    pushFollow(FOLLOW_modifier_in_interfaceBodyDeclaration694);
                     	    modifier();
-                    	    _fsp--;
-                    	    if (failed) return ;
 
+                    	    state._fsp--;
+                    	    if (state.failed) return ;
+
                     	    }
                     	    break;
 
@@ -2359,15 +2144,16 @@
 
                     pushFollow(FOLLOW_interfaceMemberDecl_in_interfaceBodyDeclaration697);
                     interfaceMemberDecl();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:330:6: ';'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:330:6: ';'
                     {
-                    match(input,25,FOLLOW_25_in_interfaceBodyDeclaration704); if (failed) return ;
+                    match(input,25,FOLLOW_25_in_interfaceBodyDeclaration704); if (state.failed) return ;
 
                     }
                     break;
@@ -2379,20 +2165,20 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 27, interfaceBodyDeclaration_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 27, interfaceBodyDeclaration_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end interfaceBodyDeclaration
+    // $ANTLR end "interfaceBodyDeclaration"
 
 
-    // $ANTLR start interfaceMemberDecl
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:333:1: interfaceMemberDecl : ( interfaceMethodOrFieldDecl | interfaceGenericMethodDecl | 'void' Identifier voidInterfaceMethodDeclaratorRest | interfaceDeclaration | classDeclaration );
+    // $ANTLR start "interfaceMemberDecl"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:333:1: interfaceMemberDecl : ( interfaceMethodOrFieldDecl | interfaceGenericMethodDecl | 'void' Identifier voidInterfaceMethodDeclaratorRest | interfaceDeclaration | classDeclaration );
     public final void interfaceMemberDecl() throws RecognitionException {
         int interfaceMemberDecl_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 28) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:334:2: ( interfaceMethodOrFieldDecl | interfaceGenericMethodDecl | 'void' Identifier voidInterfaceMethodDeclaratorRest | interfaceDeclaration | classDeclaration )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 28) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:334:2: ( interfaceMethodOrFieldDecl | interfaceGenericMethodDecl | 'void' Identifier voidInterfaceMethodDeclaratorRest | interfaceDeclaration | classDeclaration )
             int alt41=5;
             switch ( input.LA(1) ) {
             case Identifier:
@@ -2431,64 +2217,69 @@
                 }
                 break;
             default:
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("333:1: interfaceMemberDecl : ( interfaceMethodOrFieldDecl | interfaceGenericMethodDecl | 'void' Identifier voidInterfaceMethodDeclaratorRest | interfaceDeclaration | classDeclaration );", 41, 0, input);
+                    new NoViableAltException("", 41, 0, input);
 
                 throw nvae;
             }
 
             switch (alt41) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:334:4: interfaceMethodOrFieldDecl
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:334:4: interfaceMethodOrFieldDecl
                     {
                     pushFollow(FOLLOW_interfaceMethodOrFieldDecl_in_interfaceMemberDecl715);
                     interfaceMethodOrFieldDecl();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:335:6: interfaceGenericMethodDecl
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:335:6: interfaceGenericMethodDecl
                     {
                     pushFollow(FOLLOW_interfaceGenericMethodDecl_in_interfaceMemberDecl722);
                     interfaceGenericMethodDecl();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:336:9: 'void' Identifier voidInterfaceMethodDeclaratorRest
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:336:9: 'void' Identifier voidInterfaceMethodDeclaratorRest
                     {
-                    match(input,40,FOLLOW_40_in_interfaceMemberDecl732); if (failed) return ;
-                    match(input,Identifier,FOLLOW_Identifier_in_interfaceMemberDecl734); if (failed) return ;
+                    match(input,40,FOLLOW_40_in_interfaceMemberDecl732); if (state.failed) return ;
+                    match(input,Identifier,FOLLOW_Identifier_in_interfaceMemberDecl734); if (state.failed) return ;
                     pushFollow(FOLLOW_voidInterfaceMethodDeclaratorRest_in_interfaceMemberDecl736);
                     voidInterfaceMethodDeclaratorRest();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 4 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:337:9: interfaceDeclaration
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:337:9: interfaceDeclaration
                     {
                     pushFollow(FOLLOW_interfaceDeclaration_in_interfaceMemberDecl746);
                     interfaceDeclaration();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 5 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:338:9: classDeclaration
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:338:9: classDeclaration
                     {
                     pushFollow(FOLLOW_classDeclaration_in_interfaceMemberDecl756);
                     classDeclaration();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -2499,32 +2290,34 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 28, interfaceMemberDecl_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 28, interfaceMemberDecl_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end interfaceMemberDecl
+    // $ANTLR end "interfaceMemberDecl"
 
 
-    // $ANTLR start interfaceMethodOrFieldDecl
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:341:1: interfaceMethodOrFieldDecl : type Identifier interfaceMethodOrFieldRest ;
+    // $ANTLR start "interfaceMethodOrFieldDecl"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:341:1: interfaceMethodOrFieldDecl : type Identifier interfaceMethodOrFieldRest ;
     public final void interfaceMethodOrFieldDecl() throws RecognitionException {
         int interfaceMethodOrFieldDecl_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 29) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:342:2: ( type Identifier interfaceMethodOrFieldRest )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:342:4: type Identifier interfaceMethodOrFieldRest
+            if ( state.backtracking>0 && alreadyParsedRule(input, 29) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:342:2: ( type Identifier interfaceMethodOrFieldRest )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:342:4: type Identifier interfaceMethodOrFieldRest
             {
             pushFollow(FOLLOW_type_in_interfaceMethodOrFieldDecl768);
             type();
-            _fsp--;
-            if (failed) return ;
-            match(input,Identifier,FOLLOW_Identifier_in_interfaceMethodOrFieldDecl770); if (failed) return ;
+
+            state._fsp--;
+            if (state.failed) return ;
+            match(input,Identifier,FOLLOW_Identifier_in_interfaceMethodOrFieldDecl770); if (state.failed) return ;
             pushFollow(FOLLOW_interfaceMethodOrFieldRest_in_interfaceMethodOrFieldDecl772);
             interfaceMethodOrFieldRest();
-            _fsp--;
-            if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+
             }
 
         }
@@ -2533,20 +2326,20 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 29, interfaceMethodOrFieldDecl_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 29, interfaceMethodOrFieldDecl_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end interfaceMethodOrFieldDecl
+    // $ANTLR end "interfaceMethodOrFieldDecl"
 
 
-    // $ANTLR start interfaceMethodOrFieldRest
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:345:1: interfaceMethodOrFieldRest : ( constantDeclaratorsRest ';' | interfaceMethodDeclaratorRest );
+    // $ANTLR start "interfaceMethodOrFieldRest"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:345:1: interfaceMethodOrFieldRest : ( constantDeclaratorsRest ';' | interfaceMethodDeclaratorRest );
     public final void interfaceMethodOrFieldRest() throws RecognitionException {
         int interfaceMethodOrFieldRest_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 30) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:346:2: ( constantDeclaratorsRest ';' | interfaceMethodDeclaratorRest )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 30) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:346:2: ( constantDeclaratorsRest ';' | interfaceMethodDeclaratorRest )
             int alt42=2;
             int LA42_0 = input.LA(1);
 
@@ -2557,32 +2350,34 @@
                 alt42=2;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("345:1: interfaceMethodOrFieldRest : ( constantDeclaratorsRest ';' | interfaceMethodDeclaratorRest );", 42, 0, input);
+                    new NoViableAltException("", 42, 0, input);
 
                 throw nvae;
             }
             switch (alt42) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:346:4: constantDeclaratorsRest ';'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:346:4: constantDeclaratorsRest ';'
                     {
                     pushFollow(FOLLOW_constantDeclaratorsRest_in_interfaceMethodOrFieldRest784);
                     constantDeclaratorsRest();
-                    _fsp--;
-                    if (failed) return ;
-                    match(input,25,FOLLOW_25_in_interfaceMethodOrFieldRest786); if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,25,FOLLOW_25_in_interfaceMethodOrFieldRest786); if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:347:4: interfaceMethodDeclaratorRest
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:347:4: interfaceMethodDeclaratorRest
                     {
                     pushFollow(FOLLOW_interfaceMethodDeclaratorRest_in_interfaceMethodOrFieldRest791);
                     interfaceMethodDeclaratorRest();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -2593,27 +2388,28 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 30, interfaceMethodOrFieldRest_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 30, interfaceMethodOrFieldRest_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end interfaceMethodOrFieldRest
+    // $ANTLR end "interfaceMethodOrFieldRest"
 
 
-    // $ANTLR start methodDeclaratorRest
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:350:1: methodDeclaratorRest : formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ( methodBody | ';' ) ;
+    // $ANTLR start "methodDeclaratorRest"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:350:1: methodDeclaratorRest : formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ( methodBody | ';' ) ;
     public final void methodDeclaratorRest() throws RecognitionException {
         int methodDeclaratorRest_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 31) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:351:2: ( formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ( methodBody | ';' ) )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:351:4: formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ( methodBody | ';' )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 31) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:351:2: ( formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ( methodBody | ';' ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:351:4: formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ( methodBody | ';' )
             {
             pushFollow(FOLLOW_formalParameters_in_methodDeclaratorRest803);
             formalParameters();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:351:21: ( '[' ']' )*
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:351:21: ( '[' ']' )*
             loop43:
             do {
                 int alt43=2;
@@ -2626,10 +2422,10 @@
 
                 switch (alt43) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:351:22: '[' ']'
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:351:22: '[' ']'
             	    {
-            	    match(input,41,FOLLOW_41_in_methodDeclaratorRest806); if (failed) return ;
-            	    match(input,42,FOLLOW_42_in_methodDeclaratorRest808); if (failed) return ;
+            	    match(input,41,FOLLOW_41_in_methodDeclaratorRest806); if (state.failed) return ;
+            	    match(input,42,FOLLOW_42_in_methodDeclaratorRest808); if (state.failed) return ;
 
             	    }
             	    break;
@@ -2639,7 +2435,7 @@
                 }
             } while (true);
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:352:9: ( 'throws' qualifiedNameList )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:352:9: ( 'throws' qualifiedNameList )?
             int alt44=2;
             int LA44_0 = input.LA(1);
 
@@ -2648,20 +2444,21 @@
             }
             switch (alt44) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:352:10: 'throws' qualifiedNameList
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:352:10: 'throws' qualifiedNameList
                     {
-                    match(input,43,FOLLOW_43_in_methodDeclaratorRest821); if (failed) return ;
+                    match(input,43,FOLLOW_43_in_methodDeclaratorRest821); if (state.failed) return ;
                     pushFollow(FOLLOW_qualifiedNameList_in_methodDeclaratorRest823);
                     qualifiedNameList();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
             }
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:353:9: ( methodBody | ';' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:353:9: ( methodBody | ';' )
             int alt45=2;
             int LA45_0 = input.LA(1);
 
@@ -2672,27 +2469,28 @@
                 alt45=2;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("353:9: ( methodBody | ';' )", 45, 0, input);
+                    new NoViableAltException("", 45, 0, input);
 
                 throw nvae;
             }
             switch (alt45) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:353:13: methodBody
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:353:13: methodBody
                     {
                     pushFollow(FOLLOW_methodBody_in_methodDeclaratorRest839);
                     methodBody();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:354:13: ';'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:354:13: ';'
                     {
-                    match(input,25,FOLLOW_25_in_methodDeclaratorRest853); if (failed) return ;
+                    match(input,25,FOLLOW_25_in_methodDeclaratorRest853); if (state.failed) return ;
 
                     }
                     break;
@@ -2708,27 +2506,28 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 31, methodDeclaratorRest_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 31, methodDeclaratorRest_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end methodDeclaratorRest
+    // $ANTLR end "methodDeclaratorRest"
 
 
-    // $ANTLR start voidMethodDeclaratorRest
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:358:1: voidMethodDeclaratorRest : formalParameters ( 'throws' qualifiedNameList )? ( methodBody | ';' ) ;
+    // $ANTLR start "voidMethodDeclaratorRest"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:358:1: voidMethodDeclaratorRest : formalParameters ( 'throws' qualifiedNameList )? ( methodBody | ';' ) ;
     public final void voidMethodDeclaratorRest() throws RecognitionException {
         int voidMethodDeclaratorRest_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 32) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:359:2: ( formalParameters ( 'throws' qualifiedNameList )? ( methodBody | ';' ) )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:359:4: formalParameters ( 'throws' qualifiedNameList )? ( methodBody | ';' )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 32) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:359:2: ( formalParameters ( 'throws' qualifiedNameList )? ( methodBody | ';' ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:359:4: formalParameters ( 'throws' qualifiedNameList )? ( methodBody | ';' )
             {
             pushFollow(FOLLOW_formalParameters_in_voidMethodDeclaratorRest875);
             formalParameters();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:359:21: ( 'throws' qualifiedNameList )?
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:359:21: ( 'throws' qualifiedNameList )?
             int alt46=2;
             int LA46_0 = input.LA(1);
 
@@ -2737,20 +2536,21 @@
             }
             switch (alt46) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:359:22: 'throws' qualifiedNameList
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:359:22: 'throws' qualifiedNameList
                     {
-                    match(input,43,FOLLOW_43_in_voidMethodDeclaratorRest878); if (failed) return ;
+                    match(input,43,FOLLOW_43_in_voidMethodDeclaratorRest878); if (state.failed) return ;
                     pushFollow(FOLLOW_qualifiedNameList_in_voidMethodDeclaratorRest880);
                     qualifiedNameList();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
             }
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:360:9: ( methodBody | ';' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:360:9: ( methodBody | ';' )
             int alt47=2;
             int LA47_0 = input.LA(1);
 
@@ -2761,27 +2561,28 @@
                 alt47=2;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("360:9: ( methodBody | ';' )", 47, 0, input);
+                    new NoViableAltException("", 47, 0, input);
 
                 throw nvae;
             }
             switch (alt47) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:360:13: methodBody
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:360:13: methodBody
                     {
                     pushFollow(FOLLOW_methodBody_in_voidMethodDeclaratorRest896);
                     methodBody();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:361:13: ';'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:361:13: ';'
                     {
-                    match(input,25,FOLLOW_25_in_voidMethodDeclaratorRest910); if (failed) return ;
+                    match(input,25,FOLLOW_25_in_voidMethodDeclaratorRest910); if (state.failed) return ;
 
                     }
                     break;
@@ -2797,27 +2598,28 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 32, voidMethodDeclaratorRest_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 32, voidMethodDeclaratorRest_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end voidMethodDeclaratorRest
+    // $ANTLR end "voidMethodDeclaratorRest"
 
 
-    // $ANTLR start interfaceMethodDeclaratorRest
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:365:1: interfaceMethodDeclaratorRest : formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ';' ;
+    // $ANTLR start "interfaceMethodDeclaratorRest"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:365:1: interfaceMethodDeclaratorRest : formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ';' ;
     public final void interfaceMethodDeclaratorRest() throws RecognitionException {
         int interfaceMethodDeclaratorRest_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 33) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:366:2: ( formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ';' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:366:4: formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ';'
+            if ( state.backtracking>0 && alreadyParsedRule(input, 33) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:366:2: ( formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ';' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:366:4: formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ';'
             {
             pushFollow(FOLLOW_formalParameters_in_interfaceMethodDeclaratorRest932);
             formalParameters();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:366:21: ( '[' ']' )*
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:366:21: ( '[' ']' )*
             loop48:
             do {
                 int alt48=2;
@@ -2830,10 +2632,10 @@
 
                 switch (alt48) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:366:22: '[' ']'
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:366:22: '[' ']'
             	    {
-            	    match(input,41,FOLLOW_41_in_interfaceMethodDeclaratorRest935); if (failed) return ;
-            	    match(input,42,FOLLOW_42_in_interfaceMethodDeclaratorRest937); if (failed) return ;
+            	    match(input,41,FOLLOW_41_in_interfaceMethodDeclaratorRest935); if (state.failed) return ;
+            	    match(input,42,FOLLOW_42_in_interfaceMethodDeclaratorRest937); if (state.failed) return ;
 
             	    }
             	    break;
@@ -2843,7 +2645,7 @@
                 }
             } while (true);
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:366:32: ( 'throws' qualifiedNameList )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:366:32: ( 'throws' qualifiedNameList )?
             int alt49=2;
             int LA49_0 = input.LA(1);
 
@@ -2852,20 +2654,21 @@
             }
             switch (alt49) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:366:33: 'throws' qualifiedNameList
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:366:33: 'throws' qualifiedNameList
                     {
-                    match(input,43,FOLLOW_43_in_interfaceMethodDeclaratorRest942); if (failed) return ;
+                    match(input,43,FOLLOW_43_in_interfaceMethodDeclaratorRest942); if (state.failed) return ;
                     pushFollow(FOLLOW_qualifiedNameList_in_interfaceMethodDeclaratorRest944);
                     qualifiedNameList();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
             }
 
-            match(input,25,FOLLOW_25_in_interfaceMethodDeclaratorRest948); if (failed) return ;
+            match(input,25,FOLLOW_25_in_interfaceMethodDeclaratorRest948); if (state.failed) return ;
 
             }
 
@@ -2875,27 +2678,28 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 33, interfaceMethodDeclaratorRest_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 33, interfaceMethodDeclaratorRest_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end interfaceMethodDeclaratorRest
+    // $ANTLR end "interfaceMethodDeclaratorRest"
 
 
-    // $ANTLR start interfaceGenericMethodDecl
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:369:1: interfaceGenericMethodDecl : typeParameters ( type | 'void' ) Identifier interfaceMethodDeclaratorRest ;
+    // $ANTLR start "interfaceGenericMethodDecl"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:369:1: interfaceGenericMethodDecl : typeParameters ( type | 'void' ) Identifier interfaceMethodDeclaratorRest ;
     public final void interfaceGenericMethodDecl() throws RecognitionException {
         int interfaceGenericMethodDecl_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 34) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:370:2: ( typeParameters ( type | 'void' ) Identifier interfaceMethodDeclaratorRest )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:370:4: typeParameters ( type | 'void' ) Identifier interfaceMethodDeclaratorRest
+            if ( state.backtracking>0 && alreadyParsedRule(input, 34) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:370:2: ( typeParameters ( type | 'void' ) Identifier interfaceMethodDeclaratorRest )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:370:4: typeParameters ( type | 'void' ) Identifier interfaceMethodDeclaratorRest
             {
             pushFollow(FOLLOW_typeParameters_in_interfaceGenericMethodDecl960);
             typeParameters();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:370:19: ( type | 'void' )
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:370:19: ( type | 'void' )
             int alt50=2;
             int LA50_0 = input.LA(1);
 
@@ -2906,39 +2710,41 @@
                 alt50=2;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("370:19: ( type | 'void' )", 50, 0, input);
+                    new NoViableAltException("", 50, 0, input);
 
                 throw nvae;
             }
             switch (alt50) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:370:20: type
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:370:20: type
                     {
                     pushFollow(FOLLOW_type_in_interfaceGenericMethodDecl963);
                     type();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:370:27: 'void'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:370:27: 'void'
                     {
-                    match(input,40,FOLLOW_40_in_interfaceGenericMethodDecl967); if (failed) return ;
+                    match(input,40,FOLLOW_40_in_interfaceGenericMethodDecl967); if (state.failed) return ;
 
                     }
                     break;
 
             }
 
-            match(input,Identifier,FOLLOW_Identifier_in_interfaceGenericMethodDecl970); if (failed) return ;
+            match(input,Identifier,FOLLOW_Identifier_in_interfaceGenericMethodDecl970); if (state.failed) return ;
             pushFollow(FOLLOW_interfaceMethodDeclaratorRest_in_interfaceGenericMethodDecl980);
             interfaceMethodDeclaratorRest();
-            _fsp--;
-            if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+
             }
 
         }
@@ -2947,27 +2753,28 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 34, interfaceGenericMethodDecl_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 34, interfaceGenericMethodDecl_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end interfaceGenericMethodDecl
+    // $ANTLR end "interfaceGenericMethodDecl"
 
 
-    // $ANTLR start voidInterfaceMethodDeclaratorRest
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:374:1: voidInterfaceMethodDeclaratorRest : formalParameters ( 'throws' qualifiedNameList )? ';' ;
+    // $ANTLR start "voidInterfaceMethodDeclaratorRest"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:374:1: voidInterfaceMethodDeclaratorRest : formalParameters ( 'throws' qualifiedNameList )? ';' ;
     public final void voidInterfaceMethodDeclaratorRest() throws RecognitionException {
         int voidInterfaceMethodDeclaratorRest_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 35) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:375:2: ( formalParameters ( 'throws' qualifiedNameList )? ';' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:375:4: formalParameters ( 'throws' qualifiedNameList )? ';'
+            if ( state.backtracking>0 && alreadyParsedRule(input, 35) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:375:2: ( formalParameters ( 'throws' qualifiedNameList )? ';' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:375:4: formalParameters ( 'throws' qualifiedNameList )? ';'
             {
             pushFollow(FOLLOW_formalParameters_in_voidInterfaceMethodDeclaratorRest992);
             formalParameters();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:375:21: ( 'throws' qualifiedNameList )?
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:375:21: ( 'throws' qualifiedNameList )?
             int alt51=2;
             int LA51_0 = input.LA(1);
 
@@ -2976,20 +2783,21 @@
             }
             switch (alt51) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:375:22: 'throws' qualifiedNameList
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:375:22: 'throws' qualifiedNameList
                     {
-                    match(input,43,FOLLOW_43_in_voidInterfaceMethodDeclaratorRest995); if (failed) return ;
+                    match(input,43,FOLLOW_43_in_voidInterfaceMethodDeclaratorRest995); if (state.failed) return ;
                     pushFollow(FOLLOW_qualifiedNameList_in_voidInterfaceMethodDeclaratorRest997);
                     qualifiedNameList();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
             }
 
-            match(input,25,FOLLOW_25_in_voidInterfaceMethodDeclaratorRest1001); if (failed) return ;
+            match(input,25,FOLLOW_25_in_voidInterfaceMethodDeclaratorRest1001); if (state.failed) return ;
 
             }
 
@@ -2999,27 +2807,28 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 35, voidInterfaceMethodDeclaratorRest_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 35, voidInterfaceMethodDeclaratorRest_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end voidInterfaceMethodDeclaratorRest
+    // $ANTLR end "voidInterfaceMethodDeclaratorRest"
 
 
-    // $ANTLR start constructorDeclaratorRest
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:378:1: constructorDeclaratorRest : formalParameters ( 'throws' qualifiedNameList )? methodBody ;
+    // $ANTLR start "constructorDeclaratorRest"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:378:1: constructorDeclaratorRest : formalParameters ( 'throws' qualifiedNameList )? methodBody ;
     public final void constructorDeclaratorRest() throws RecognitionException {
         int constructorDeclaratorRest_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 36) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:379:2: ( formalParameters ( 'throws' qualifiedNameList )? methodBody )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:379:4: formalParameters ( 'throws' qualifiedNameList )? methodBody
+            if ( state.backtracking>0 && alreadyParsedRule(input, 36) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:379:2: ( formalParameters ( 'throws' qualifiedNameList )? methodBody )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:379:4: formalParameters ( 'throws' qualifiedNameList )? methodBody
             {
             pushFollow(FOLLOW_formalParameters_in_constructorDeclaratorRest1013);
             formalParameters();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:379:21: ( 'throws' qualifiedNameList )?
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:379:21: ( 'throws' qualifiedNameList )?
             int alt52=2;
             int LA52_0 = input.LA(1);
 
@@ -3028,14 +2837,15 @@
             }
             switch (alt52) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:379:22: 'throws' qualifiedNameList
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:379:22: 'throws' qualifiedNameList
                     {
-                    match(input,43,FOLLOW_43_in_constructorDeclaratorRest1016); if (failed) return ;
+                    match(input,43,FOLLOW_43_in_constructorDeclaratorRest1016); if (state.failed) return ;
                     pushFollow(FOLLOW_qualifiedNameList_in_constructorDeclaratorRest1018);
                     qualifiedNameList();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -3043,9 +2853,10 @@
 
             pushFollow(FOLLOW_methodBody_in_constructorDeclaratorRest1022);
             methodBody();
-            _fsp--;
-            if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+
             }
 
         }
@@ -3054,28 +2865,29 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 36, constructorDeclaratorRest_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 36, constructorDeclaratorRest_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end constructorDeclaratorRest
+    // $ANTLR end "constructorDeclaratorRest"
 
 
-    // $ANTLR start constantDeclarator
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:382:1: constantDeclarator : Identifier constantDeclaratorRest ;
+    // $ANTLR start "constantDeclarator"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:382:1: constantDeclarator : Identifier constantDeclaratorRest ;
     public final void constantDeclarator() throws RecognitionException {
         int constantDeclarator_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 37) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:383:2: ( Identifier constantDeclaratorRest )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:383:4: Identifier constantDeclaratorRest
+            if ( state.backtracking>0 && alreadyParsedRule(input, 37) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:383:2: ( Identifier constantDeclaratorRest )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:383:4: Identifier constantDeclaratorRest
             {
-            match(input,Identifier,FOLLOW_Identifier_in_constantDeclarator1033); if (failed) return ;
+            match(input,Identifier,FOLLOW_Identifier_in_constantDeclarator1033); if (state.failed) return ;
             pushFollow(FOLLOW_constantDeclaratorRest_in_constantDeclarator1035);
             constantDeclaratorRest();
-            _fsp--;
-            if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+
             }
 
         }
@@ -3084,27 +2896,28 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 37, constantDeclarator_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 37, constantDeclarator_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end constantDeclarator
+    // $ANTLR end "constantDeclarator"
 
 
-    // $ANTLR start variableDeclarators
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:386:1: variableDeclarators : variableDeclarator ( ',' variableDeclarator )* ;
+    // $ANTLR start "variableDeclarators"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:386:1: variableDeclarators : variableDeclarator ( ',' variableDeclarator )* ;
     public final void variableDeclarators() throws RecognitionException {
         int variableDeclarators_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 38) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:387:2: ( variableDeclarator ( ',' variableDeclarator )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:387:4: variableDeclarator ( ',' variableDeclarator )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 38) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:387:2: ( variableDeclarator ( ',' variableDeclarator )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:387:4: variableDeclarator ( ',' variableDeclarator )*
             {
             pushFollow(FOLLOW_variableDeclarator_in_variableDeclarators1047);
             variableDeclarator();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:387:23: ( ',' variableDeclarator )*
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:387:23: ( ',' variableDeclarator )*
             loop53:
             do {
                 int alt53=2;
@@ -3117,14 +2930,15 @@
 
                 switch (alt53) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:387:24: ',' variableDeclarator
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:387:24: ',' variableDeclarator
             	    {
-            	    match(input,34,FOLLOW_34_in_variableDeclarators1050); if (failed) return ;
+            	    match(input,34,FOLLOW_34_in_variableDeclarators1050); if (state.failed) return ;
             	    pushFollow(FOLLOW_variableDeclarator_in_variableDeclarators1052);
             	    variableDeclarator();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -3142,11 +2956,11 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 38, variableDeclarators_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 38, variableDeclarators_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end variableDeclarators
+    // $ANTLR end "variableDeclarators"
 
     protected static class variableDeclarator_scope {
         JavaLocalDeclarationDescr.IdentifierDescr ident;
@@ -3154,13 +2968,13 @@
     protected Stack variableDeclarator_stack = new Stack();
 
 
-    // $ANTLR start variableDeclarator
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:390:1: variableDeclarator : id= Identifier rest= variableDeclaratorRest ;
+    // $ANTLR start "variableDeclarator"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:390:1: variableDeclarator : id= Identifier rest= variableDeclaratorRest ;
     public final void variableDeclarator() throws RecognitionException {
         variableDeclarator_stack.push(new variableDeclarator_scope());
         int variableDeclarator_StartIndex = input.index();
         Token id=null;
-        variableDeclaratorRest_return rest = null;
+        JavaParser.variableDeclaratorRest_return rest = null;
 
 
 
@@ -3169,23 +2983,23 @@
         		}
         	
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 39) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:404:2: (id= Identifier rest= variableDeclaratorRest )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:404:4: id= Identifier rest= variableDeclaratorRest
+            if ( state.backtracking>0 && alreadyParsedRule(input, 39) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:404:2: (id= Identifier rest= variableDeclaratorRest )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:404:4: id= Identifier rest= variableDeclaratorRest
             {
-            id=(Token)input.LT(1);
-            match(input,Identifier,FOLLOW_Identifier_in_variableDeclarator1084); if (failed) return ;
+            id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclarator1084); if (state.failed) return ;
             pushFollow(FOLLOW_variableDeclaratorRest_in_variableDeclarator1088);
             rest=variableDeclaratorRest();
-            _fsp--;
-            if (failed) return ;
-            if ( backtracking==0 ) {
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
                
               			if( this.localVariableLevel == 1 ) { // we only want top level local vars
-              				((variableDeclarator_scope)variableDeclarator_stack.peek()).ident.setIdentifier( id.getText() );
+              				((variableDeclarator_scope)variableDeclarator_stack.peek()).ident.setIdentifier( (id!=null?id.getText():null) );
               				((variableDeclarator_scope)variableDeclarator_stack.peek()).ident.setStart( ((CommonToken)id).getStartIndex() - 1 );
-              				if( ((Token)rest.stop) != null ) {
-                 					((variableDeclarator_scope)variableDeclarator_stack.peek()).ident.setEnd( ((CommonToken)((Token)rest.stop)).getStopIndex() );
+              				if( (rest!=null?((Token)rest.stop):null) != null ) {
+                 					((variableDeclarator_scope)variableDeclarator_stack.peek()).ident.setEnd( ((CommonToken)(rest!=null?((Token)rest.stop):null)).getStopIndex() );
               				}
               			}
               		
@@ -3193,7 +3007,7 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
 
               	        if( this.localVariableLevel == 1 ) { // we only want top level local vars
               	        	((localVariableDeclaration_scope)localVariableDeclaration_stack.peek()).descr.addIdentifier( ((variableDeclarator_scope)variableDeclarator_stack.peek()).ident );
@@ -3206,25 +3020,25 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 39, variableDeclarator_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 39, variableDeclarator_StartIndex); }
             variableDeclarator_stack.pop();
         }
         return ;
     }
-    // $ANTLR end variableDeclarator
+    // $ANTLR end "variableDeclarator"
 
     public static class variableDeclaratorRest_return extends ParserRuleReturnScope {
     };
 
-    // $ANTLR start variableDeclaratorRest
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:416:1: variableDeclaratorRest : ( ( '[' ']' )+ ( '=' variableInitializer )? | '=' variableInitializer | );
-    public final variableDeclaratorRest_return variableDeclaratorRest() throws RecognitionException {
-        variableDeclaratorRest_return retval = new variableDeclaratorRest_return();
+    // $ANTLR start "variableDeclaratorRest"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:416:1: variableDeclaratorRest : ( ( '[' ']' )+ ( '=' variableInitializer )? | '=' variableInitializer | );
+    public final JavaParser.variableDeclaratorRest_return variableDeclaratorRest() throws RecognitionException {
+        JavaParser.variableDeclaratorRest_return retval = new JavaParser.variableDeclaratorRest_return();
         retval.start = input.LT(1);
         int variableDeclaratorRest_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 40) ) { return retval; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:417:2: ( ( '[' ']' )+ ( '=' variableInitializer )? | '=' variableInitializer | )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 40) ) { return retval; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:417:2: ( ( '[' ']' )+ ( '=' variableInitializer )? | '=' variableInitializer | )
             int alt56=3;
             switch ( input.LA(1) ) {
             case 41:
@@ -3245,18 +3059,18 @@
                 }
                 break;
             default:
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("416:1: variableDeclaratorRest : ( ( '[' ']' )+ ( '=' variableInitializer )? | '=' variableInitializer | );", 56, 0, input);
+                    new NoViableAltException("", 56, 0, input);
 
                 throw nvae;
             }
 
             switch (alt56) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:417:4: ( '[' ']' )+ ( '=' variableInitializer )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:417:4: ( '[' ']' )+ ( '=' variableInitializer )?
                     {
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:417:4: ( '[' ']' )+
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:417:4: ( '[' ']' )+
                     int cnt54=0;
                     loop54:
                     do {
@@ -3270,17 +3084,17 @@
 
                         switch (alt54) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:417:5: '[' ']'
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:417:5: '[' ']'
                     	    {
-                    	    match(input,41,FOLLOW_41_in_variableDeclaratorRest1106); if (failed) return retval;
-                    	    match(input,42,FOLLOW_42_in_variableDeclaratorRest1108); if (failed) return retval;
+                    	    match(input,41,FOLLOW_41_in_variableDeclaratorRest1106); if (state.failed) return retval;
+                    	    match(input,42,FOLLOW_42_in_variableDeclaratorRest1108); if (state.failed) return retval;
 
                     	    }
                     	    break;
 
                     	default :
                     	    if ( cnt54 >= 1 ) break loop54;
-                    	    if (backtracking>0) {failed=true; return retval;}
+                    	    if (state.backtracking>0) {state.failed=true; return retval;}
                                 EarlyExitException eee =
                                     new EarlyExitException(54, input);
                                 throw eee;
@@ -3288,7 +3102,7 @@
                         cnt54++;
                     } while (true);
 
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:417:15: ( '=' variableInitializer )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:417:15: ( '=' variableInitializer )?
                     int alt55=2;
                     int LA55_0 = input.LA(1);
 
@@ -3297,14 +3111,15 @@
                     }
                     switch (alt55) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:417:16: '=' variableInitializer
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:417:16: '=' variableInitializer
                             {
-                            match(input,44,FOLLOW_44_in_variableDeclaratorRest1113); if (failed) return retval;
+                            match(input,44,FOLLOW_44_in_variableDeclaratorRest1113); if (state.failed) return retval;
                             pushFollow(FOLLOW_variableInitializer_in_variableDeclaratorRest1115);
                             variableInitializer();
-                            _fsp--;
-                            if (failed) return retval;
 
+                            state._fsp--;
+                            if (state.failed) return retval;
+
                             }
                             break;
 
@@ -3314,18 +3129,19 @@
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:418:4: '=' variableInitializer
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:418:4: '=' variableInitializer
                     {
-                    match(input,44,FOLLOW_44_in_variableDeclaratorRest1122); if (failed) return retval;
+                    match(input,44,FOLLOW_44_in_variableDeclaratorRest1122); if (state.failed) return retval;
                     pushFollow(FOLLOW_variableInitializer_in_variableDeclaratorRest1124);
                     variableInitializer();
-                    _fsp--;
-                    if (failed) return retval;
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:420:2: 
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:420:2: 
                     {
                     }
                     break;
@@ -3339,27 +3155,28 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 40, variableDeclaratorRest_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 40, variableDeclaratorRest_StartIndex); }
         }
         return retval;
     }
-    // $ANTLR end variableDeclaratorRest
+    // $ANTLR end "variableDeclaratorRest"
 
 
-    // $ANTLR start constantDeclaratorsRest
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:422:1: constantDeclaratorsRest : constantDeclaratorRest ( ',' constantDeclarator )* ;
+    // $ANTLR start "constantDeclaratorsRest"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:422:1: constantDeclaratorsRest : constantDeclaratorRest ( ',' constantDeclarator )* ;
     public final void constantDeclaratorsRest() throws RecognitionException {
         int constantDeclaratorsRest_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 41) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:423:5: ( constantDeclaratorRest ( ',' constantDeclarator )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:423:9: constantDeclaratorRest ( ',' constantDeclarator )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 41) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:423:5: ( constantDeclaratorRest ( ',' constantDeclarator )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:423:9: constantDeclaratorRest ( ',' constantDeclarator )*
             {
             pushFollow(FOLLOW_constantDeclaratorRest_in_constantDeclaratorsRest1144);
             constantDeclaratorRest();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:423:32: ( ',' constantDeclarator )*
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:423:32: ( ',' constantDeclarator )*
             loop57:
             do {
                 int alt57=2;
@@ -3372,14 +3189,15 @@
 
                 switch (alt57) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:423:33: ',' constantDeclarator
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:423:33: ',' constantDeclarator
             	    {
-            	    match(input,34,FOLLOW_34_in_constantDeclaratorsRest1147); if (failed) return ;
+            	    match(input,34,FOLLOW_34_in_constantDeclaratorsRest1147); if (state.failed) return ;
             	    pushFollow(FOLLOW_constantDeclarator_in_constantDeclaratorsRest1149);
             	    constantDeclarator();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -3397,23 +3215,23 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 41, constantDeclaratorsRest_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 41, constantDeclaratorsRest_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end constantDeclaratorsRest
+    // $ANTLR end "constantDeclaratorsRest"
 
 
-    // $ANTLR start constantDeclaratorRest
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:426:1: constantDeclaratorRest : ( '[' ']' )* '=' variableInitializer ;
+    // $ANTLR start "constantDeclaratorRest"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:426:1: constantDeclaratorRest : ( '[' ']' )* '=' variableInitializer ;
     public final void constantDeclaratorRest() throws RecognitionException {
         int constantDeclaratorRest_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 42) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:427:2: ( ( '[' ']' )* '=' variableInitializer )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:427:4: ( '[' ']' )* '=' variableInitializer
+            if ( state.backtracking>0 && alreadyParsedRule(input, 42) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:427:2: ( ( '[' ']' )* '=' variableInitializer )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:427:4: ( '[' ']' )* '=' variableInitializer
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:427:4: ( '[' ']' )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:427:4: ( '[' ']' )*
             loop58:
             do {
                 int alt58=2;
@@ -3426,10 +3244,10 @@
 
                 switch (alt58) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:427:5: '[' ']'
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:427:5: '[' ']'
             	    {
-            	    match(input,41,FOLLOW_41_in_constantDeclaratorRest1166); if (failed) return ;
-            	    match(input,42,FOLLOW_42_in_constantDeclaratorRest1168); if (failed) return ;
+            	    match(input,41,FOLLOW_41_in_constantDeclaratorRest1166); if (state.failed) return ;
+            	    match(input,42,FOLLOW_42_in_constantDeclaratorRest1168); if (state.failed) return ;
 
             	    }
             	    break;
@@ -3439,12 +3257,13 @@
                 }
             } while (true);
 
-            match(input,44,FOLLOW_44_in_constantDeclaratorRest1172); if (failed) return ;
+            match(input,44,FOLLOW_44_in_constantDeclaratorRest1172); if (state.failed) return ;
             pushFollow(FOLLOW_variableInitializer_in_constantDeclaratorRest1174);
             variableInitializer();
-            _fsp--;
-            if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+
             }
 
         }
@@ -3453,24 +3272,24 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 42, constantDeclaratorRest_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 42, constantDeclaratorRest_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end constantDeclaratorRest
+    // $ANTLR end "constantDeclaratorRest"
 
 
-    // $ANTLR start variableDeclaratorId
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:430:1: variableDeclaratorId : Identifier ( '[' ']' )* ;
+    // $ANTLR start "variableDeclaratorId"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:430:1: variableDeclaratorId : Identifier ( '[' ']' )* ;
     public final void variableDeclaratorId() throws RecognitionException {
         int variableDeclaratorId_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 43) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:431:2: ( Identifier ( '[' ']' )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:431:4: Identifier ( '[' ']' )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 43) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:431:2: ( Identifier ( '[' ']' )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:431:4: Identifier ( '[' ']' )*
             {
-            match(input,Identifier,FOLLOW_Identifier_in_variableDeclaratorId1186); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:431:15: ( '[' ']' )*
+            match(input,Identifier,FOLLOW_Identifier_in_variableDeclaratorId1186); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:431:15: ( '[' ']' )*
             loop59:
             do {
                 int alt59=2;
@@ -3483,10 +3302,10 @@
 
                 switch (alt59) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:431:16: '[' ']'
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:431:16: '[' ']'
             	    {
-            	    match(input,41,FOLLOW_41_in_variableDeclaratorId1189); if (failed) return ;
-            	    match(input,42,FOLLOW_42_in_variableDeclaratorId1191); if (failed) return ;
+            	    match(input,41,FOLLOW_41_in_variableDeclaratorId1189); if (state.failed) return ;
+            	    match(input,42,FOLLOW_42_in_variableDeclaratorId1191); if (state.failed) return ;
 
             	    }
             	    break;
@@ -3505,55 +3324,43 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 43, variableDeclaratorId_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 43, variableDeclaratorId_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end variableDeclaratorId
+    // $ANTLR end "variableDeclaratorId"
 
 
-    // $ANTLR start variableInitializer
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:434:1: variableInitializer : ( arrayInitializer | expression );
+    // $ANTLR start "variableInitializer"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:434:1: variableInitializer : ( arrayInitializer | expression );
     public final void variableInitializer() throws RecognitionException {
         int variableInitializer_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 44) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:435:2: ( arrayInitializer | expression )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 44) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:435:2: ( arrayInitializer | expression )
             int alt60=2;
-            int LA60_0 = input.LA(1);
-
-            if ( (LA60_0==37) ) {
-                alt60=1;
-            }
-            else if ( (LA60_0==Identifier||(LA60_0>=FloatingPointLiteral && LA60_0<=DecimalLiteral)||LA60_0==33||LA60_0==40||(LA60_0>=55 && LA60_0<=62)||(LA60_0>=64 && LA60_0<=65)||(LA60_0>=68 && LA60_0<=70)||(LA60_0>=105 && LA60_0<=106)||(LA60_0>=109 && LA60_0<=114)) ) {
-                alt60=2;
-            }
-            else {
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("434:1: variableInitializer : ( arrayInitializer | expression );", 60, 0, input);
-
-                throw nvae;
-            }
+            alt60 = dfa60.predict(input);
             switch (alt60) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:435:4: arrayInitializer
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:435:4: arrayInitializer
                     {
                     pushFollow(FOLLOW_arrayInitializer_in_variableInitializer1204);
                     arrayInitializer();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:436:9: expression
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:436:9: expression
                     {
                     pushFollow(FOLLOW_expression_in_variableInitializer1214);
                     expression();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -3564,65 +3371,51 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 44, variableInitializer_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 44, variableInitializer_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end variableInitializer
+    // $ANTLR end "variableInitializer"
 
 
-    // $ANTLR start arrayInitializer
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:439:1: arrayInitializer : '{' ( variableInitializer ( ',' variableInitializer )* ( ',' )? )? '}' ;
+    // $ANTLR start "arrayInitializer"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:439:1: arrayInitializer : '{' ( variableInitializer ( ',' variableInitializer )* ( ',' )? )? '}' ;
     public final void arrayInitializer() throws RecognitionException {
         int arrayInitializer_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 45) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:440:2: ( '{' ( variableInitializer ( ',' variableInitializer )* ( ',' )? )? '}' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:440:4: '{' ( variableInitializer ( ',' variableInitializer )* ( ',' )? )? '}'
+            if ( state.backtracking>0 && alreadyParsedRule(input, 45) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:440:2: ( '{' ( variableInitializer ( ',' variableInitializer )* ( ',' )? )? '}' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:440:4: '{' ( variableInitializer ( ',' variableInitializer )* ( ',' )? )? '}'
             {
-            match(input,37,FOLLOW_37_in_arrayInitializer1226); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:440:8: ( variableInitializer ( ',' variableInitializer )* ( ',' )? )?
+            match(input,37,FOLLOW_37_in_arrayInitializer1226); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:440:8: ( variableInitializer ( ',' variableInitializer )* ( ',' )? )?
             int alt63=2;
-            int LA63_0 = input.LA(1);
-
-            if ( (LA63_0==Identifier||(LA63_0>=FloatingPointLiteral && LA63_0<=DecimalLiteral)||LA63_0==33||LA63_0==37||LA63_0==40||(LA63_0>=55 && LA63_0<=62)||(LA63_0>=64 && LA63_0<=65)||(LA63_0>=68 && LA63_0<=70)||(LA63_0>=105 && LA63_0<=106)||(LA63_0>=109 && LA63_0<=114)) ) {
-                alt63=1;
-            }
+            alt63 = dfa63.predict(input);
             switch (alt63) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:440:9: variableInitializer ( ',' variableInitializer )* ( ',' )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:440:9: variableInitializer ( ',' variableInitializer )* ( ',' )?
                     {
                     pushFollow(FOLLOW_variableInitializer_in_arrayInitializer1229);
                     variableInitializer();
-                    _fsp--;
-                    if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:440:29: ( ',' variableInitializer )*
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:440:29: ( ',' variableInitializer )*
                     loop61:
                     do {
                         int alt61=2;
-                        int LA61_0 = input.LA(1);
-
-                        if ( (LA61_0==34) ) {
-                            int LA61_1 = input.LA(2);
-
-                            if ( (LA61_1==Identifier||(LA61_1>=FloatingPointLiteral && LA61_1<=DecimalLiteral)||LA61_1==33||LA61_1==37||LA61_1==40||(LA61_1>=55 && LA61_1<=62)||(LA61_1>=64 && LA61_1<=65)||(LA61_1>=68 && LA61_1<=70)||(LA61_1>=105 && LA61_1<=106)||(LA61_1>=109 && LA61_1<=114)) ) {
-                                alt61=1;
-                            }
-
-
-                        }
-
-
+                        alt61 = dfa61.predict(input);
                         switch (alt61) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:440:30: ',' variableInitializer
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:440:30: ',' variableInitializer
                     	    {
-                    	    match(input,34,FOLLOW_34_in_arrayInitializer1232); if (failed) return ;
+                    	    match(input,34,FOLLOW_34_in_arrayInitializer1232); if (state.failed) return ;
                     	    pushFollow(FOLLOW_variableInitializer_in_arrayInitializer1234);
                     	    variableInitializer();
-                    	    _fsp--;
-                    	    if (failed) return ;
 
+                    	    state._fsp--;
+                    	    if (state.failed) return ;
+
                     	    }
                     	    break;
 
@@ -3631,7 +3424,7 @@
                         }
                     } while (true);
 
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:440:56: ( ',' )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:440:56: ( ',' )?
                     int alt62=2;
                     int LA62_0 = input.LA(1);
 
@@ -3640,9 +3433,9 @@
                     }
                     switch (alt62) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:440:57: ','
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:440:57: ','
                             {
-                            match(input,34,FOLLOW_34_in_arrayInitializer1239); if (failed) return ;
+                            match(input,34,FOLLOW_34_in_arrayInitializer1239); if (state.failed) return ;
 
                             }
                             break;
@@ -3655,7 +3448,7 @@
 
             }
 
-            match(input,38,FOLLOW_38_in_arrayInitializer1246); if (failed) return ;
+            match(input,38,FOLLOW_38_in_arrayInitializer1246); if (state.failed) return ;
 
             }
 
@@ -3665,175 +3458,108 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 45, arrayInitializer_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 45, arrayInitializer_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end arrayInitializer
+    // $ANTLR end "arrayInitializer"
 
 
-    // $ANTLR start modifier
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:443:1: modifier : ( annotation | 'public' | 'protected' | 'private' | 'static' | 'abstract' | 'final' | 'native' | 'synchronized' | 'transient' | 'volatile' | 'strictfp' );
+    // $ANTLR start "modifier"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:443:1: modifier : ( annotation | 'public' | 'protected' | 'private' | 'static' | 'abstract' | 'final' | 'native' | 'synchronized' | 'transient' | 'volatile' | 'strictfp' );
     public final void modifier() throws RecognitionException {
         int modifier_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 46) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:444:5: ( annotation | 'public' | 'protected' | 'private' | 'static' | 'abstract' | 'final' | 'native' | 'synchronized' | 'transient' | 'volatile' | 'strictfp' )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 46) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:444:5: ( annotation | 'public' | 'protected' | 'private' | 'static' | 'abstract' | 'final' | 'native' | 'synchronized' | 'transient' | 'volatile' | 'strictfp' )
             int alt64=12;
-            switch ( input.LA(1) ) {
-            case 71:
-                {
-                alt64=1;
-                }
-                break;
-            case 45:
-                {
-                alt64=2;
-                }
-                break;
-            case 46:
-                {
-                alt64=3;
-                }
-                break;
-            case 47:
-                {
-                alt64=4;
-                }
-                break;
-            case 27:
-                {
-                alt64=5;
-                }
-                break;
-            case 48:
-                {
-                alt64=6;
-                }
-                break;
-            case 49:
-                {
-                alt64=7;
-                }
-                break;
-            case 50:
-                {
-                alt64=8;
-                }
-                break;
-            case 51:
-                {
-                alt64=9;
-                }
-                break;
-            case 52:
-                {
-                alt64=10;
-                }
-                break;
-            case 53:
-                {
-                alt64=11;
-                }
-                break;
-            case 54:
-                {
-                alt64=12;
-                }
-                break;
-            default:
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("443:1: modifier : ( annotation | 'public' | 'protected' | 'private' | 'static' | 'abstract' | 'final' | 'native' | 'synchronized' | 'transient' | 'volatile' | 'strictfp' );", 64, 0, input);
-
-                throw nvae;
-            }
-
+            alt64 = dfa64.predict(input);
             switch (alt64) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:444:9: annotation
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:444:9: annotation
                     {
                     pushFollow(FOLLOW_annotation_in_modifier1262);
                     annotation();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:445:9: 'public'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:445:9: 'public'
                     {
-                    match(input,45,FOLLOW_45_in_modifier1272); if (failed) return ;
+                    match(input,45,FOLLOW_45_in_modifier1272); if (state.failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:446:9: 'protected'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:446:9: 'protected'
                     {
-                    match(input,46,FOLLOW_46_in_modifier1282); if (failed) return ;
+                    match(input,46,FOLLOW_46_in_modifier1282); if (state.failed) return ;
 
                     }
                     break;
                 case 4 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:447:9: 'private'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:447:9: 'private'
                     {
-                    match(input,47,FOLLOW_47_in_modifier1292); if (failed) return ;
+                    match(input,47,FOLLOW_47_in_modifier1292); if (state.failed) return ;
 
                     }
                     break;
                 case 5 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:448:9: 'static'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:448:9: 'static'
                     {
-                    match(input,27,FOLLOW_27_in_modifier1302); if (failed) return ;
+                    match(input,27,FOLLOW_27_in_modifier1302); if (state.failed) return ;
 
                     }
                     break;
                 case 6 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:449:9: 'abstract'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:449:9: 'abstract'
                     {
-                    match(input,48,FOLLOW_48_in_modifier1312); if (failed) return ;
+                    match(input,48,FOLLOW_48_in_modifier1312); if (state.failed) return ;
 
                     }
                     break;
                 case 7 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:450:9: 'final'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:450:9: 'final'
                     {
-                    match(input,49,FOLLOW_49_in_modifier1322); if (failed) return ;
+                    match(input,49,FOLLOW_49_in_modifier1322); if (state.failed) return ;
 
                     }
                     break;
                 case 8 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:451:9: 'native'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:451:9: 'native'
                     {
-                    match(input,50,FOLLOW_50_in_modifier1332); if (failed) return ;
+                    match(input,50,FOLLOW_50_in_modifier1332); if (state.failed) return ;
 
                     }
                     break;
                 case 9 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:452:9: 'synchronized'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:452:9: 'synchronized'
                     {
-                    match(input,51,FOLLOW_51_in_modifier1342); if (failed) return ;
+                    match(input,51,FOLLOW_51_in_modifier1342); if (state.failed) return ;
 
                     }
                     break;
                 case 10 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:453:9: 'transient'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:453:9: 'transient'
                     {
-                    match(input,52,FOLLOW_52_in_modifier1352); if (failed) return ;
+                    match(input,52,FOLLOW_52_in_modifier1352); if (state.failed) return ;
 
                     }
                     break;
                 case 11 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:454:9: 'volatile'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:454:9: 'volatile'
                     {
-                    match(input,53,FOLLOW_53_in_modifier1362); if (failed) return ;
+                    match(input,53,FOLLOW_53_in_modifier1362); if (state.failed) return ;
 
                     }
                     break;
                 case 12 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:455:9: 'strictfp'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:455:9: 'strictfp'
                     {
-                    match(input,54,FOLLOW_54_in_modifier1372); if (failed) return ;
+                    match(input,54,FOLLOW_54_in_modifier1372); if (state.failed) return ;
 
                     }
                     break;
@@ -3845,24 +3571,24 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 46, modifier_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 46, modifier_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end modifier
+    // $ANTLR end "modifier"
 
 
-    // $ANTLR start packageOrTypeName
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:458:1: packageOrTypeName : Identifier ( '.' Identifier )* ;
+    // $ANTLR start "packageOrTypeName"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:458:1: packageOrTypeName : Identifier ( '.' Identifier )* ;
     public final void packageOrTypeName() throws RecognitionException {
         int packageOrTypeName_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 47) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:459:2: ( Identifier ( '.' Identifier )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:459:4: Identifier ( '.' Identifier )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 47) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:459:2: ( Identifier ( '.' Identifier )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:459:4: Identifier ( '.' Identifier )*
             {
-            match(input,Identifier,FOLLOW_Identifier_in_packageOrTypeName1386); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:459:15: ( '.' Identifier )*
+            match(input,Identifier,FOLLOW_Identifier_in_packageOrTypeName1386); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:459:15: ( '.' Identifier )*
             loop65:
             do {
                 int alt65=2;
@@ -3874,7 +3600,7 @@
                     if ( (LA65_1==Identifier) ) {
                         int LA65_2 = input.LA(3);
 
-                        if ( (synpred85()) ) {
+                        if ( (synpred85_Java()) ) {
                             alt65=1;
                         }
 
@@ -3887,10 +3613,10 @@
 
                 switch (alt65) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:459:16: '.' Identifier
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:459:16: '.' Identifier
             	    {
-            	    match(input,28,FOLLOW_28_in_packageOrTypeName1389); if (failed) return ;
-            	    match(input,Identifier,FOLLOW_Identifier_in_packageOrTypeName1391); if (failed) return ;
+            	    match(input,28,FOLLOW_28_in_packageOrTypeName1389); if (state.failed) return ;
+            	    match(input,Identifier,FOLLOW_Identifier_in_packageOrTypeName1391); if (state.failed) return ;
 
             	    }
             	    break;
@@ -3909,23 +3635,23 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 47, packageOrTypeName_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 47, packageOrTypeName_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end packageOrTypeName
+    // $ANTLR end "packageOrTypeName"
 
 
-    // $ANTLR start enumConstantName
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:462:1: enumConstantName : Identifier ;
+    // $ANTLR start "enumConstantName"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:462:1: enumConstantName : Identifier ;
     public final void enumConstantName() throws RecognitionException {
         int enumConstantName_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 48) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:463:5: ( Identifier )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:463:9: Identifier
+            if ( state.backtracking>0 && alreadyParsedRule(input, 48) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:463:5: ( Identifier )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:463:9: Identifier
             {
-            match(input,Identifier,FOLLOW_Identifier_in_enumConstantName1409); if (failed) return ;
+            match(input,Identifier,FOLLOW_Identifier_in_enumConstantName1409); if (state.failed) return ;
 
             }
 
@@ -3935,20 +3661,20 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 48, enumConstantName_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 48, enumConstantName_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end enumConstantName
+    // $ANTLR end "enumConstantName"
 
 
-    // $ANTLR start typeName
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:466:1: typeName : ( Identifier | packageOrTypeName '.' Identifier );
+    // $ANTLR start "typeName"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:466:1: typeName : ( Identifier | packageOrTypeName '.' Identifier );
     public final void typeName() throws RecognitionException {
         int typeName_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 49) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:467:2: ( Identifier | packageOrTypeName '.' Identifier )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 49) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:467:2: ( Identifier | packageOrTypeName '.' Identifier )
             int alt66=2;
             int LA66_0 = input.LA(1);
 
@@ -3962,38 +3688,39 @@
                     alt66=2;
                 }
                 else {
-                    if (backtracking>0) {failed=true; return ;}
+                    if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("466:1: typeName : ( Identifier | packageOrTypeName '.' Identifier );", 66, 1, input);
+                        new NoViableAltException("", 66, 1, input);
 
                     throw nvae;
                 }
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("466:1: typeName : ( Identifier | packageOrTypeName '.' Identifier );", 66, 0, input);
+                    new NoViableAltException("", 66, 0, input);
 
                 throw nvae;
             }
             switch (alt66) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:467:6: Identifier
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:467:6: Identifier
                     {
-                    match(input,Identifier,FOLLOW_Identifier_in_typeName1425); if (failed) return ;
+                    match(input,Identifier,FOLLOW_Identifier_in_typeName1425); if (state.failed) return ;
 
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:468:9: packageOrTypeName '.' Identifier
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:468:9: packageOrTypeName '.' Identifier
                     {
                     pushFollow(FOLLOW_packageOrTypeName_in_typeName1435);
                     packageOrTypeName();
-                    _fsp--;
-                    if (failed) return ;
-                    match(input,28,FOLLOW_28_in_typeName1437); if (failed) return ;
-                    match(input,Identifier,FOLLOW_Identifier_in_typeName1439); if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,28,FOLLOW_28_in_typeName1437); if (state.failed) return ;
+                    match(input,Identifier,FOLLOW_Identifier_in_typeName1439); if (state.failed) return ;
+
                     }
                     break;
 
@@ -4004,24 +3731,24 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 49, typeName_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 49, typeName_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end typeName
+    // $ANTLR end "typeName"
 
     public static class type_return extends ParserRuleReturnScope {
     };
 
-    // $ANTLR start type
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:471:1: type : ( Identifier ( typeArguments )? ( '.' Identifier ( typeArguments )? )* ( '[' ']' )* | primitiveType ( '[' ']' )* );
-    public final type_return type() throws RecognitionException {
-        type_return retval = new type_return();
+    // $ANTLR start "type"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:471:1: type : ( Identifier ( typeArguments )? ( '.' Identifier ( typeArguments )? )* ( '[' ']' )* | primitiveType ( '[' ']' )* );
+    public final JavaParser.type_return type() throws RecognitionException {
+        JavaParser.type_return retval = new JavaParser.type_return();
         retval.start = input.LT(1);
         int type_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 50) ) { return retval; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:472:2: ( Identifier ( typeArguments )? ( '.' Identifier ( typeArguments )? )* ( '[' ']' )* | primitiveType ( '[' ']' )* )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 50) ) { return retval; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:472:2: ( Identifier ( typeArguments )? ( '.' Identifier ( typeArguments )? )* ( '[' ']' )* | primitiveType ( '[' ']' )* )
             int alt72=2;
             int LA72_0 = input.LA(1);
 
@@ -4032,79 +3759,59 @@
                 alt72=2;
             }
             else {
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("471:1: type : ( Identifier ( typeArguments )? ( '.' Identifier ( typeArguments )? )* ( '[' ']' )* | primitiveType ( '[' ']' )* );", 72, 0, input);
+                    new NoViableAltException("", 72, 0, input);
 
                 throw nvae;
             }
             switch (alt72) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:472:4: Identifier ( typeArguments )? ( '.' Identifier ( typeArguments )? )* ( '[' ']' )*
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:472:4: Identifier ( typeArguments )? ( '.' Identifier ( typeArguments )? )* ( '[' ']' )*
                     {
-                    match(input,Identifier,FOLLOW_Identifier_in_type1450); if (failed) return retval;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:472:15: ( typeArguments )?
+                    match(input,Identifier,FOLLOW_Identifier_in_type1450); if (state.failed) return retval;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:472:15: ( typeArguments )?
                     int alt67=2;
-                    int LA67_0 = input.LA(1);
-
-                    if ( (LA67_0==33) ) {
-                        int LA67_1 = input.LA(2);
-
-                        if ( (LA67_1==Identifier||(LA67_1>=55 && LA67_1<=63)) ) {
-                            alt67=1;
-                        }
-                    }
+                    alt67 = dfa67.predict(input);
                     switch (alt67) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:472:16: typeArguments
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:472:16: typeArguments
                             {
                             pushFollow(FOLLOW_typeArguments_in_type1453);
                             typeArguments();
-                            _fsp--;
-                            if (failed) return retval;
 
+                            state._fsp--;
+                            if (state.failed) return retval;
+
                             }
                             break;
 
                     }
 
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:472:32: ( '.' Identifier ( typeArguments )? )*
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:472:32: ( '.' Identifier ( typeArguments )? )*
                     loop69:
                     do {
                         int alt69=2;
-                        int LA69_0 = input.LA(1);
-
-                        if ( (LA69_0==28) ) {
-                            alt69=1;
-                        }
-
-
+                        alt69 = dfa69.predict(input);
                         switch (alt69) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:472:33: '.' Identifier ( typeArguments )?
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:472:33: '.' Identifier ( typeArguments )?
                     	    {
-                    	    match(input,28,FOLLOW_28_in_type1458); if (failed) return retval;
-                    	    match(input,Identifier,FOLLOW_Identifier_in_type1460); if (failed) return retval;
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:472:48: ( typeArguments )?
+                    	    match(input,28,FOLLOW_28_in_type1458); if (state.failed) return retval;
+                    	    match(input,Identifier,FOLLOW_Identifier_in_type1460); if (state.failed) return retval;
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:472:48: ( typeArguments )?
                     	    int alt68=2;
-                    	    int LA68_0 = input.LA(1);
-
-                    	    if ( (LA68_0==33) ) {
-                    	        int LA68_1 = input.LA(2);
-
-                    	        if ( (LA68_1==Identifier||(LA68_1>=55 && LA68_1<=63)) ) {
-                    	            alt68=1;
-                    	        }
-                    	    }
+                    	    alt68 = dfa68.predict(input);
                     	    switch (alt68) {
                     	        case 1 :
-                    	            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:472:49: typeArguments
+                    	            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:472:49: typeArguments
                     	            {
                     	            pushFollow(FOLLOW_typeArguments_in_type1463);
                     	            typeArguments();
-                    	            _fsp--;
-                    	            if (failed) return retval;
 
+                    	            state._fsp--;
+                    	            if (state.failed) return retval;
+
                     	            }
                     	            break;
 
@@ -4119,23 +3826,17 @@
                         }
                     } while (true);
 
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:472:68: ( '[' ']' )*
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:472:68: ( '[' ']' )*
                     loop70:
                     do {
                         int alt70=2;
-                        int LA70_0 = input.LA(1);
-
-                        if ( (LA70_0==41) ) {
-                            alt70=1;
-                        }
-
-
+                        alt70 = dfa70.predict(input);
                         switch (alt70) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:472:69: '[' ']'
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:472:69: '[' ']'
                     	    {
-                    	    match(input,41,FOLLOW_41_in_type1471); if (failed) return retval;
-                    	    match(input,42,FOLLOW_42_in_type1473); if (failed) return retval;
+                    	    match(input,41,FOLLOW_41_in_type1471); if (state.failed) return retval;
+                    	    match(input,42,FOLLOW_42_in_type1473); if (state.failed) return retval;
 
                     	    }
                     	    break;
@@ -4149,29 +3850,24 @@
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:473:4: primitiveType ( '[' ']' )*
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:473:4: primitiveType ( '[' ']' )*
                     {
                     pushFollow(FOLLOW_primitiveType_in_type1480);
                     primitiveType();
-                    _fsp--;
-                    if (failed) return retval;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:473:18: ( '[' ']' )*
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:473:18: ( '[' ']' )*
                     loop71:
                     do {
                         int alt71=2;
-                        int LA71_0 = input.LA(1);
-
-                        if ( (LA71_0==41) ) {
-                            alt71=1;
-                        }
-
-
+                        alt71 = dfa71.predict(input);
                         switch (alt71) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:473:19: '[' ']'
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:473:19: '[' ']'
                     	    {
-                    	    match(input,41,FOLLOW_41_in_type1483); if (failed) return retval;
-                    	    match(input,42,FOLLOW_42_in_type1485); if (failed) return retval;
+                    	    match(input,41,FOLLOW_41_in_type1483); if (state.failed) return retval;
+                    	    match(input,42,FOLLOW_42_in_type1485); if (state.failed) return retval;
 
                     	    }
                     	    break;
@@ -4194,31 +3890,30 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 50, type_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 50, type_StartIndex); }
         }
         return retval;
     }
-    // $ANTLR end type
+    // $ANTLR end "type"
 
 
-    // $ANTLR start primitiveType
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:476:1: primitiveType : ( 'boolean' | 'char' | 'byte' | 'short' | 'int' | 'long' | 'float' | 'double' );
+    // $ANTLR start "primitiveType"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:476:1: primitiveType : ( 'boolean' | 'char' | 'byte' | 'short' | 'int' | 'long' | 'float' | 'double' );
     public final void primitiveType() throws RecognitionException {
         int primitiveType_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 51) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:477:5: ( 'boolean' | 'char' | 'byte' | 'short' | 'int' | 'long' | 'float' | 'double' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:
+            if ( state.backtracking>0 && alreadyParsedRule(input, 51) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:477:5: ( 'boolean' | 'char' | 'byte' | 'short' | 'int' | 'long' | 'float' | 'double' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:
             {
             if ( (input.LA(1)>=55 && input.LA(1)<=62) ) {
                 input.consume();
-                errorRecovery=false;failed=false;
+                state.errorRecovery=false;state.failed=false;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
-                MismatchedSetException mse =
-                    new MismatchedSetException(null,input);
-                recoverFromMismatchedSet(input,mse,FOLLOW_set_in_primitiveType0);    throw mse;
+                if (state.backtracking>0) {state.failed=true; return ;}
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                throw mse;
             }
 
 
@@ -4230,24 +3925,24 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 51, primitiveType_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 51, primitiveType_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end primitiveType
+    // $ANTLR end "primitiveType"
 
     public static class variableModifier_return extends ParserRuleReturnScope {
     };
 
-    // $ANTLR start variableModifier
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:487:1: variableModifier : ( 'final' | annotation );
-    public final variableModifier_return variableModifier() throws RecognitionException {
-        variableModifier_return retval = new variableModifier_return();
+    // $ANTLR start "variableModifier"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:487:1: variableModifier : ( 'final' | annotation );
+    public final JavaParser.variableModifier_return variableModifier() throws RecognitionException {
+        JavaParser.variableModifier_return retval = new JavaParser.variableModifier_return();
         retval.start = input.LT(1);
         int variableModifier_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 52) ) { return retval; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:488:2: ( 'final' | annotation )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 52) ) { return retval; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:488:2: ( 'final' | annotation )
             int alt73=2;
             int LA73_0 = input.LA(1);
 
@@ -4258,28 +3953,29 @@
                 alt73=2;
             }
             else {
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("487:1: variableModifier : ( 'final' | annotation );", 73, 0, input);
+                    new NoViableAltException("", 73, 0, input);
 
                 throw nvae;
             }
             switch (alt73) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:488:4: 'final'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:488:4: 'final'
                     {
-                    match(input,49,FOLLOW_49_in_variableModifier1573); if (failed) return retval;
+                    match(input,49,FOLLOW_49_in_variableModifier1573); if (state.failed) return retval;
 
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:489:9: annotation
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:489:9: annotation
                     {
                     pushFollow(FOLLOW_annotation_in_variableModifier1583);
                     annotation();
-                    _fsp--;
-                    if (failed) return retval;
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+
                     }
                     break;
 
@@ -4292,28 +3988,29 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 52, variableModifier_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 52, variableModifier_StartIndex); }
         }
         return retval;
     }
-    // $ANTLR end variableModifier
+    // $ANTLR end "variableModifier"
 
 
-    // $ANTLR start typeArguments
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:492:1: typeArguments : '<' typeArgument ( ',' typeArgument )* '>' ;
+    // $ANTLR start "typeArguments"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:492:1: typeArguments : '<' typeArgument ( ',' typeArgument )* '>' ;
     public final void typeArguments() throws RecognitionException {
         int typeArguments_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 53) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:493:2: ( '<' typeArgument ( ',' typeArgument )* '>' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:493:4: '<' typeArgument ( ',' typeArgument )* '>'
+            if ( state.backtracking>0 && alreadyParsedRule(input, 53) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:493:2: ( '<' typeArgument ( ',' typeArgument )* '>' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:493:4: '<' typeArgument ( ',' typeArgument )* '>'
             {
-            match(input,33,FOLLOW_33_in_typeArguments1594); if (failed) return ;
+            match(input,33,FOLLOW_33_in_typeArguments1594); if (state.failed) return ;
             pushFollow(FOLLOW_typeArgument_in_typeArguments1596);
             typeArgument();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:493:21: ( ',' typeArgument )*
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:493:21: ( ',' typeArgument )*
             loop74:
             do {
                 int alt74=2;
@@ -4326,14 +4023,15 @@
 
                 switch (alt74) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:493:22: ',' typeArgument
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:493:22: ',' typeArgument
             	    {
-            	    match(input,34,FOLLOW_34_in_typeArguments1599); if (failed) return ;
+            	    match(input,34,FOLLOW_34_in_typeArguments1599); if (state.failed) return ;
             	    pushFollow(FOLLOW_typeArgument_in_typeArguments1601);
             	    typeArgument();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -4342,7 +4040,7 @@
                 }
             } while (true);
 
-            match(input,35,FOLLOW_35_in_typeArguments1605); if (failed) return ;
+            match(input,35,FOLLOW_35_in_typeArguments1605); if (state.failed) return ;
 
             }
 
@@ -4352,20 +4050,20 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 53, typeArguments_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 53, typeArguments_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end typeArguments
+    // $ANTLR end "typeArguments"
 
 
-    // $ANTLR start typeArgument
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:496:1: typeArgument : ( type | '?' ( ( 'extends' | 'super' ) type )? );
+    // $ANTLR start "typeArgument"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:496:1: typeArgument : ( type | '?' ( ( 'extends' | 'super' ) type )? );
     public final void typeArgument() throws RecognitionException {
         int typeArgument_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 54) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:497:2: ( type | '?' ( ( 'extends' | 'super' ) type )? )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 54) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:497:2: ( type | '?' ( ( 'extends' | 'super' ) type )? )
             int alt76=2;
             int LA76_0 = input.LA(1);
 
@@ -4376,28 +4074,29 @@
                 alt76=2;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("496:1: typeArgument : ( type | '?' ( ( 'extends' | 'super' ) type )? );", 76, 0, input);
+                    new NoViableAltException("", 76, 0, input);
 
                 throw nvae;
             }
             switch (alt76) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:497:4: type
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:497:4: type
                     {
                     pushFollow(FOLLOW_type_in_typeArgument1617);
                     type();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:498:4: '?' ( ( 'extends' | 'super' ) type )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:498:4: '?' ( ( 'extends' | 'super' ) type )?
                     {
-                    match(input,63,FOLLOW_63_in_typeArgument1622); if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:498:8: ( ( 'extends' | 'super' ) type )?
+                    match(input,63,FOLLOW_63_in_typeArgument1622); if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:498:8: ( ( 'extends' | 'super' ) type )?
                     int alt75=2;
                     int LA75_0 = input.LA(1);
 
@@ -4406,24 +4105,24 @@
                     }
                     switch (alt75) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:498:9: ( 'extends' | 'super' ) type
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:498:9: ( 'extends' | 'super' ) type
                             {
                             if ( input.LA(1)==31||input.LA(1)==64 ) {
                                 input.consume();
-                                errorRecovery=false;failed=false;
+                                state.errorRecovery=false;state.failed=false;
                             }
                             else {
-                                if (backtracking>0) {failed=true; return ;}
-                                MismatchedSetException mse =
-                                    new MismatchedSetException(null,input);
-                                recoverFromMismatchedSet(input,mse,FOLLOW_set_in_typeArgument1625);    throw mse;
+                                if (state.backtracking>0) {state.failed=true; return ;}
+                                MismatchedSetException mse = new MismatchedSetException(null,input);
+                                throw mse;
                             }
 
                             pushFollow(FOLLOW_type_in_typeArgument1633);
                             type();
-                            _fsp--;
-                            if (failed) return ;
 
+                            state._fsp--;
+                            if (state.failed) return ;
+
                             }
                             break;
 
@@ -4440,27 +4139,28 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 54, typeArgument_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 54, typeArgument_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end typeArgument
+    // $ANTLR end "typeArgument"
 
 
-    // $ANTLR start qualifiedNameList
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:501:1: qualifiedNameList : qualifiedName ( ',' qualifiedName )* ;
+    // $ANTLR start "qualifiedNameList"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:501:1: qualifiedNameList : qualifiedName ( ',' qualifiedName )* ;
     public final void qualifiedNameList() throws RecognitionException {
         int qualifiedNameList_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 55) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:502:2: ( qualifiedName ( ',' qualifiedName )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:502:4: qualifiedName ( ',' qualifiedName )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 55) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:502:2: ( qualifiedName ( ',' qualifiedName )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:502:4: qualifiedName ( ',' qualifiedName )*
             {
             pushFollow(FOLLOW_qualifiedName_in_qualifiedNameList1647);
             qualifiedName();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:502:18: ( ',' qualifiedName )*
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:502:18: ( ',' qualifiedName )*
             loop77:
             do {
                 int alt77=2;
@@ -4473,14 +4173,15 @@
 
                 switch (alt77) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:502:19: ',' qualifiedName
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:502:19: ',' qualifiedName
             	    {
-            	    match(input,34,FOLLOW_34_in_qualifiedNameList1650); if (failed) return ;
+            	    match(input,34,FOLLOW_34_in_qualifiedNameList1650); if (state.failed) return ;
             	    pushFollow(FOLLOW_qualifiedName_in_qualifiedNameList1652);
             	    qualifiedName();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -4498,24 +4199,24 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 55, qualifiedNameList_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 55, qualifiedNameList_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end qualifiedNameList
+    // $ANTLR end "qualifiedNameList"
 
 
-    // $ANTLR start formalParameters
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:505:1: formalParameters : '(' ( formalParameterDecls )? ')' ;
+    // $ANTLR start "formalParameters"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:505:1: formalParameters : '(' ( formalParameterDecls )? ')' ;
     public final void formalParameters() throws RecognitionException {
         int formalParameters_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 56) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:506:2: ( '(' ( formalParameterDecls )? ')' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:506:4: '(' ( formalParameterDecls )? ')'
+            if ( state.backtracking>0 && alreadyParsedRule(input, 56) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:506:2: ( '(' ( formalParameterDecls )? ')' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:506:4: '(' ( formalParameterDecls )? ')'
             {
-            match(input,65,FOLLOW_65_in_formalParameters1666); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:506:8: ( formalParameterDecls )?
+            match(input,65,FOLLOW_65_in_formalParameters1666); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:506:8: ( formalParameterDecls )?
             int alt78=2;
             int LA78_0 = input.LA(1);
 
@@ -4524,19 +4225,20 @@
             }
             switch (alt78) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: formalParameterDecls
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: formalParameterDecls
                     {
                     pushFollow(FOLLOW_formalParameterDecls_in_formalParameters1668);
                     formalParameterDecls();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
             }
 
-            match(input,66,FOLLOW_66_in_formalParameters1671); if (failed) return ;
+            match(input,66,FOLLOW_66_in_formalParameters1671); if (state.failed) return ;
 
             }
 
@@ -4546,23 +4248,23 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 56, formalParameters_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 56, formalParameters_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end formalParameters
+    // $ANTLR end "formalParameters"
 
 
-    // $ANTLR start formalParameterDecls
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:509:1: formalParameterDecls : ( variableModifier )* type ( formalParameterDeclsRest )? ;
+    // $ANTLR start "formalParameterDecls"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:509:1: formalParameterDecls : ( variableModifier )* type ( formalParameterDeclsRest )? ;
     public final void formalParameterDecls() throws RecognitionException {
         int formalParameterDecls_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 57) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:510:2: ( ( variableModifier )* type ( formalParameterDeclsRest )? )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:510:4: ( variableModifier )* type ( formalParameterDeclsRest )?
+            if ( state.backtracking>0 && alreadyParsedRule(input, 57) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:510:2: ( ( variableModifier )* type ( formalParameterDeclsRest )? )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:510:4: ( variableModifier )* type ( formalParameterDeclsRest )?
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:510:4: ( variableModifier )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:510:4: ( variableModifier )*
             loop79:
             do {
                 int alt79=2;
@@ -4575,13 +4277,14 @@
 
                 switch (alt79) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: variableModifier
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: variableModifier
             	    {
             	    pushFollow(FOLLOW_variableModifier_in_formalParameterDecls1683);
             	    variableModifier();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -4592,9 +4295,10 @@
 
             pushFollow(FOLLOW_type_in_formalParameterDecls1686);
             type();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:510:27: ( formalParameterDeclsRest )?
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:510:27: ( formalParameterDeclsRest )?
             int alt80=2;
             int LA80_0 = input.LA(1);
 
@@ -4603,13 +4307,14 @@
             }
             switch (alt80) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: formalParameterDeclsRest
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: formalParameterDeclsRest
                     {
                     pushFollow(FOLLOW_formalParameterDeclsRest_in_formalParameterDecls1688);
                     formalParameterDeclsRest();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -4624,20 +4329,20 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 57, formalParameterDecls_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 57, formalParameterDecls_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end formalParameterDecls
+    // $ANTLR end "formalParameterDecls"
 
 
-    // $ANTLR start formalParameterDeclsRest
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:513:1: formalParameterDeclsRest : ( variableDeclaratorId ( ',' formalParameterDecls )? | '...' variableDeclaratorId );
+    // $ANTLR start "formalParameterDeclsRest"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:513:1: formalParameterDeclsRest : ( variableDeclaratorId ( ',' formalParameterDecls )? | '...' variableDeclaratorId );
     public final void formalParameterDeclsRest() throws RecognitionException {
         int formalParameterDeclsRest_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 58) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:514:2: ( variableDeclaratorId ( ',' formalParameterDecls )? | '...' variableDeclaratorId )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 58) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:514:2: ( variableDeclaratorId ( ',' formalParameterDecls )? | '...' variableDeclaratorId )
             int alt82=2;
             int LA82_0 = input.LA(1);
 
@@ -4648,21 +4353,22 @@
                 alt82=2;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("513:1: formalParameterDeclsRest : ( variableDeclaratorId ( ',' formalParameterDecls )? | '...' variableDeclaratorId );", 82, 0, input);
+                    new NoViableAltException("", 82, 0, input);
 
                 throw nvae;
             }
             switch (alt82) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:514:4: variableDeclaratorId ( ',' formalParameterDecls )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:514:4: variableDeclaratorId ( ',' formalParameterDecls )?
                     {
                     pushFollow(FOLLOW_variableDeclaratorId_in_formalParameterDeclsRest1701);
                     variableDeclaratorId();
-                    _fsp--;
-                    if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:514:25: ( ',' formalParameterDecls )?
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:514:25: ( ',' formalParameterDecls )?
                     int alt81=2;
                     int LA81_0 = input.LA(1);
 
@@ -4671,14 +4377,15 @@
                     }
                     switch (alt81) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:514:26: ',' formalParameterDecls
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:514:26: ',' formalParameterDecls
                             {
-                            match(input,34,FOLLOW_34_in_formalParameterDeclsRest1704); if (failed) return ;
+                            match(input,34,FOLLOW_34_in_formalParameterDeclsRest1704); if (state.failed) return ;
                             pushFollow(FOLLOW_formalParameterDecls_in_formalParameterDeclsRest1706);
                             formalParameterDecls();
-                            _fsp--;
-                            if (failed) return ;
 
+                            state._fsp--;
+                            if (state.failed) return ;
+
                             }
                             break;
 
@@ -4688,14 +4395,15 @@
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:515:6: '...' variableDeclaratorId
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:515:6: '...' variableDeclaratorId
                     {
-                    match(input,67,FOLLOW_67_in_formalParameterDeclsRest1715); if (failed) return ;
+                    match(input,67,FOLLOW_67_in_formalParameterDeclsRest1715); if (state.failed) return ;
                     pushFollow(FOLLOW_variableDeclaratorId_in_formalParameterDeclsRest1717);
                     variableDeclaratorId();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -4706,27 +4414,28 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 58, formalParameterDeclsRest_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 58, formalParameterDeclsRest_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end formalParameterDeclsRest
+    // $ANTLR end "formalParameterDeclsRest"
 
 
-    // $ANTLR start methodBody
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:518:1: methodBody : block ;
+    // $ANTLR start "methodBody"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:518:1: methodBody : block ;
     public final void methodBody() throws RecognitionException {
         int methodBody_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 59) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:519:2: ( block )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:519:4: block
+            if ( state.backtracking>0 && alreadyParsedRule(input, 59) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:519:2: ( block )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:519:4: block
             {
             pushFollow(FOLLOW_block_in_methodBody1729);
             block();
-            _fsp--;
-            if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+
             }
 
         }
@@ -4735,24 +4444,24 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 59, methodBody_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 59, methodBody_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end methodBody
+    // $ANTLR end "methodBody"
 
 
-    // $ANTLR start qualifiedName
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:522:1: qualifiedName : Identifier ( '.' Identifier )* ;
+    // $ANTLR start "qualifiedName"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:522:1: qualifiedName : Identifier ( '.' Identifier )* ;
     public final void qualifiedName() throws RecognitionException {
         int qualifiedName_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 60) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:523:2: ( Identifier ( '.' Identifier )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:523:4: Identifier ( '.' Identifier )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 60) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:523:2: ( Identifier ( '.' Identifier )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:523:4: Identifier ( '.' Identifier )*
             {
-            match(input,Identifier,FOLLOW_Identifier_in_qualifiedName1740); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:523:15: ( '.' Identifier )*
+            match(input,Identifier,FOLLOW_Identifier_in_qualifiedName1740); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:523:15: ( '.' Identifier )*
             loop83:
             do {
                 int alt83=2;
@@ -4765,10 +4474,10 @@
 
                 switch (alt83) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:523:16: '.' Identifier
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:523:16: '.' Identifier
             	    {
-            	    match(input,28,FOLLOW_28_in_qualifiedName1743); if (failed) return ;
-            	    match(input,Identifier,FOLLOW_Identifier_in_qualifiedName1745); if (failed) return ;
+            	    match(input,28,FOLLOW_28_in_qualifiedName1743); if (state.failed) return ;
+            	    match(input,Identifier,FOLLOW_Identifier_in_qualifiedName1745); if (state.failed) return ;
 
             	    }
             	    break;
@@ -4787,20 +4496,20 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 60, qualifiedName_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 60, qualifiedName_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end qualifiedName
+    // $ANTLR end "qualifiedName"
 
 
-    // $ANTLR start literal
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:526:1: literal : ( integerLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | booleanLiteral | 'null' );
+    // $ANTLR start "literal"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:526:1: literal : ( integerLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | booleanLiteral | 'null' );
     public final void literal() throws RecognitionException {
         int literal_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 61) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:527:2: ( integerLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | booleanLiteral | 'null' )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 61) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:527:2: ( integerLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | booleanLiteral | 'null' )
             int alt84=6;
             switch ( input.LA(1) ) {
             case HexLiteral:
@@ -4837,59 +4546,61 @@
                 }
                 break;
             default:
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("526:1: literal : ( integerLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | booleanLiteral | 'null' );", 84, 0, input);
+                    new NoViableAltException("", 84, 0, input);
 
                 throw nvae;
             }
 
             switch (alt84) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:527:6: integerLiteral
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:527:6: integerLiteral
                     {
                     pushFollow(FOLLOW_integerLiteral_in_literal1762);
                     integerLiteral();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:528:9: FloatingPointLiteral
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:528:9: FloatingPointLiteral
                     {
-                    match(input,FloatingPointLiteral,FOLLOW_FloatingPointLiteral_in_literal1772); if (failed) return ;
+                    match(input,FloatingPointLiteral,FOLLOW_FloatingPointLiteral_in_literal1772); if (state.failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:529:9: CharacterLiteral
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:529:9: CharacterLiteral
                     {
-                    match(input,CharacterLiteral,FOLLOW_CharacterLiteral_in_literal1782); if (failed) return ;
+                    match(input,CharacterLiteral,FOLLOW_CharacterLiteral_in_literal1782); if (state.failed) return ;
 
                     }
                     break;
                 case 4 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:530:9: StringLiteral
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:530:9: StringLiteral
                     {
-                    match(input,StringLiteral,FOLLOW_StringLiteral_in_literal1792); if (failed) return ;
+                    match(input,StringLiteral,FOLLOW_StringLiteral_in_literal1792); if (state.failed) return ;
 
                     }
                     break;
                 case 5 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:531:9: booleanLiteral
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:531:9: booleanLiteral
                     {
                     pushFollow(FOLLOW_booleanLiteral_in_literal1802);
                     booleanLiteral();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 6 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:532:9: 'null'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:532:9: 'null'
                     {
-                    match(input,68,FOLLOW_68_in_literal1812); if (failed) return ;
+                    match(input,68,FOLLOW_68_in_literal1812); if (state.failed) return ;
 
                     }
                     break;
@@ -4901,31 +4612,30 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 61, literal_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 61, literal_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end literal
+    // $ANTLR end "literal"
 
 
-    // $ANTLR start integerLiteral
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:535:1: integerLiteral : ( HexLiteral | OctalLiteral | DecimalLiteral );
+    // $ANTLR start "integerLiteral"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:535:1: integerLiteral : ( HexLiteral | OctalLiteral | DecimalLiteral );
     public final void integerLiteral() throws RecognitionException {
         int integerLiteral_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 62) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:536:5: ( HexLiteral | OctalLiteral | DecimalLiteral )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:
+            if ( state.backtracking>0 && alreadyParsedRule(input, 62) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:536:5: ( HexLiteral | OctalLiteral | DecimalLiteral )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:
             {
             if ( (input.LA(1)>=HexLiteral && input.LA(1)<=DecimalLiteral) ) {
                 input.consume();
-                errorRecovery=false;failed=false;
+                state.errorRecovery=false;state.failed=false;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
-                MismatchedSetException mse =
-                    new MismatchedSetException(null,input);
-                recoverFromMismatchedSet(input,mse,FOLLOW_set_in_integerLiteral0);    throw mse;
+                if (state.backtracking>0) {state.failed=true; return ;}
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                throw mse;
             }
 
 
@@ -4937,31 +4647,30 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 62, integerLiteral_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 62, integerLiteral_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end integerLiteral
+    // $ANTLR end "integerLiteral"
 
 
-    // $ANTLR start booleanLiteral
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:541:1: booleanLiteral : ( 'true' | 'false' );
+    // $ANTLR start "booleanLiteral"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:541:1: booleanLiteral : ( 'true' | 'false' );
     public final void booleanLiteral() throws RecognitionException {
         int booleanLiteral_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 63) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:542:5: ( 'true' | 'false' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:
+            if ( state.backtracking>0 && alreadyParsedRule(input, 63) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:542:5: ( 'true' | 'false' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:
             {
             if ( (input.LA(1)>=69 && input.LA(1)<=70) ) {
                 input.consume();
-                errorRecovery=false;failed=false;
+                state.errorRecovery=false;state.failed=false;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
-                MismatchedSetException mse =
-                    new MismatchedSetException(null,input);
-                recoverFromMismatchedSet(input,mse,FOLLOW_set_in_booleanLiteral0);    throw mse;
+                if (state.backtracking>0) {state.failed=true; return ;}
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                throw mse;
             }
 
 
@@ -4973,61 +4682,44 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 63, booleanLiteral_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 63, booleanLiteral_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end booleanLiteral
+    // $ANTLR end "booleanLiteral"
 
 
-    // $ANTLR start annotations
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:548:1: annotations : ( annotation )+ ;
+    // $ANTLR start "annotations"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:548:1: annotations : ( annotation )+ ;
     public final void annotations() throws RecognitionException {
         int annotations_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 64) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:549:2: ( ( annotation )+ )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:549:4: ( annotation )+
+            if ( state.backtracking>0 && alreadyParsedRule(input, 64) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:549:2: ( ( annotation )+ )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:549:4: ( annotation )+
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:549:4: ( annotation )+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:549:4: ( annotation )+
             int cnt85=0;
             loop85:
             do {
                 int alt85=2;
-                int LA85_0 = input.LA(1);
-
-                if ( (LA85_0==71) ) {
-                    int LA85_3 = input.LA(2);
-
-                    if ( (LA85_3==Identifier) ) {
-                        int LA85_22 = input.LA(3);
-
-                        if ( (synpred120()) ) {
-                            alt85=1;
-                        }
-
-
-                    }
-
-
-                }
-
-
+                alt85 = dfa85.predict(input);
                 switch (alt85) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: annotation
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: annotation
             	    {
             	    pushFollow(FOLLOW_annotation_in_annotations1893);
             	    annotation();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
             	default :
             	    if ( cnt85 >= 1 ) break loop85;
-            	    if (backtracking>0) {failed=true; return ;}
+            	    if (state.backtracking>0) {state.failed=true; return ;}
                         EarlyExitException eee =
                             new EarlyExitException(85, input);
                         throw eee;
@@ -5044,61 +4736,55 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 64, annotations_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 64, annotations_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end annotations
+    // $ANTLR end "annotations"
 
 
-    // $ANTLR start annotation
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:552:1: annotation : '@' annotationName ( '(' ( elementValuePairs )? ')' )? ;
+    // $ANTLR start "annotation"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:552:1: annotation : '@' annotationName ( '(' ( elementValuePairs )? ')' )? ;
     public final void annotation() throws RecognitionException {
         int annotation_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 65) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:553:2: ( '@' annotationName ( '(' ( elementValuePairs )? ')' )? )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:553:4: '@' annotationName ( '(' ( elementValuePairs )? ')' )?
+            if ( state.backtracking>0 && alreadyParsedRule(input, 65) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:553:2: ( '@' annotationName ( '(' ( elementValuePairs )? ')' )? )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:553:4: '@' annotationName ( '(' ( elementValuePairs )? ')' )?
             {
-            match(input,71,FOLLOW_71_in_annotation1905); if (failed) return ;
+            match(input,71,FOLLOW_71_in_annotation1905); if (state.failed) return ;
             pushFollow(FOLLOW_annotationName_in_annotation1907);
             annotationName();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:553:23: ( '(' ( elementValuePairs )? ')' )?
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:553:23: ( '(' ( elementValuePairs )? ')' )?
             int alt87=2;
-            int LA87_0 = input.LA(1);
-
-            if ( (LA87_0==65) ) {
-                alt87=1;
-            }
+            alt87 = dfa87.predict(input);
             switch (alt87) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:553:24: '(' ( elementValuePairs )? ')'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:553:24: '(' ( elementValuePairs )? ')'
                     {
-                    match(input,65,FOLLOW_65_in_annotation1910); if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:553:28: ( elementValuePairs )?
+                    match(input,65,FOLLOW_65_in_annotation1910); if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:553:28: ( elementValuePairs )?
                     int alt86=2;
-                    int LA86_0 = input.LA(1);
-
-                    if ( (LA86_0==Identifier||(LA86_0>=FloatingPointLiteral && LA86_0<=DecimalLiteral)||LA86_0==33||LA86_0==37||LA86_0==40||(LA86_0>=55 && LA86_0<=62)||(LA86_0>=64 && LA86_0<=65)||(LA86_0>=68 && LA86_0<=71)||(LA86_0>=105 && LA86_0<=106)||(LA86_0>=109 && LA86_0<=114)) ) {
-                        alt86=1;
-                    }
+                    alt86 = dfa86.predict(input);
                     switch (alt86) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: elementValuePairs
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: elementValuePairs
                             {
                             pushFollow(FOLLOW_elementValuePairs_in_annotation1912);
                             elementValuePairs();
-                            _fsp--;
-                            if (failed) return ;
 
+                            state._fsp--;
+                            if (state.failed) return ;
+
                             }
                             break;
 
                     }
 
-                    match(input,66,FOLLOW_66_in_annotation1915); if (failed) return ;
+                    match(input,66,FOLLOW_66_in_annotation1915); if (state.failed) return ;
 
                     }
                     break;
@@ -5114,40 +4800,34 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 65, annotation_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 65, annotation_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end annotation
+    // $ANTLR end "annotation"
 
 
-    // $ANTLR start annotationName
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:556:1: annotationName : Identifier ( '.' Identifier )* ;
+    // $ANTLR start "annotationName"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:556:1: annotationName : Identifier ( '.' Identifier )* ;
     public final void annotationName() throws RecognitionException {
         int annotationName_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 66) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:557:2: ( Identifier ( '.' Identifier )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:557:4: Identifier ( '.' Identifier )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 66) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:557:2: ( Identifier ( '.' Identifier )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:557:4: Identifier ( '.' Identifier )*
             {
-            match(input,Identifier,FOLLOW_Identifier_in_annotationName1929); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:557:15: ( '.' Identifier )*
+            match(input,Identifier,FOLLOW_Identifier_in_annotationName1929); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:557:15: ( '.' Identifier )*
             loop88:
             do {
                 int alt88=2;
-                int LA88_0 = input.LA(1);
-
-                if ( (LA88_0==28) ) {
-                    alt88=1;
-                }
-
-
+                alt88 = dfa88.predict(input);
                 switch (alt88) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:557:16: '.' Identifier
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:557:16: '.' Identifier
             	    {
-            	    match(input,28,FOLLOW_28_in_annotationName1932); if (failed) return ;
-            	    match(input,Identifier,FOLLOW_Identifier_in_annotationName1934); if (failed) return ;
+            	    match(input,28,FOLLOW_28_in_annotationName1932); if (state.failed) return ;
+            	    match(input,Identifier,FOLLOW_Identifier_in_annotationName1934); if (state.failed) return ;
 
             	    }
             	    break;
@@ -5166,27 +4846,28 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 66, annotationName_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 66, annotationName_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end annotationName
+    // $ANTLR end "annotationName"
 
 
-    // $ANTLR start elementValuePairs
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:560:1: elementValuePairs : elementValuePair ( ',' elementValuePair )* ;
+    // $ANTLR start "elementValuePairs"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:560:1: elementValuePairs : elementValuePair ( ',' elementValuePair )* ;
     public final void elementValuePairs() throws RecognitionException {
         int elementValuePairs_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 67) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:561:2: ( elementValuePair ( ',' elementValuePair )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:561:4: elementValuePair ( ',' elementValuePair )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 67) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:561:2: ( elementValuePair ( ',' elementValuePair )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:561:4: elementValuePair ( ',' elementValuePair )*
             {
             pushFollow(FOLLOW_elementValuePair_in_elementValuePairs1948);
             elementValuePair();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:561:21: ( ',' elementValuePair )*
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:561:21: ( ',' elementValuePair )*
             loop89:
             do {
                 int alt89=2;
@@ -5199,14 +4880,15 @@
 
                 switch (alt89) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:561:22: ',' elementValuePair
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:561:22: ',' elementValuePair
             	    {
-            	    match(input,34,FOLLOW_34_in_elementValuePairs1951); if (failed) return ;
+            	    match(input,34,FOLLOW_34_in_elementValuePairs1951); if (state.failed) return ;
             	    pushFollow(FOLLOW_elementValuePair_in_elementValuePairs1953);
             	    elementValuePair();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -5224,39 +4906,31 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 67, elementValuePairs_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 67, elementValuePairs_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end elementValuePairs
+    // $ANTLR end "elementValuePairs"
 
 
-    // $ANTLR start elementValuePair
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:564:1: elementValuePair : ( Identifier '=' )? elementValue ;
+    // $ANTLR start "elementValuePair"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:564:1: elementValuePair : ( Identifier '=' )? elementValue ;
     public final void elementValuePair() throws RecognitionException {
         int elementValuePair_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 68) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:565:2: ( ( Identifier '=' )? elementValue )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:565:4: ( Identifier '=' )? elementValue
+            if ( state.backtracking>0 && alreadyParsedRule(input, 68) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:565:2: ( ( Identifier '=' )? elementValue )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:565:4: ( Identifier '=' )? elementValue
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:565:4: ( Identifier '=' )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:565:4: ( Identifier '=' )?
             int alt90=2;
-            int LA90_0 = input.LA(1);
-
-            if ( (LA90_0==Identifier) ) {
-                int LA90_1 = input.LA(2);
-
-                if ( (LA90_1==44) ) {
-                    alt90=1;
-                }
-            }
+            alt90 = dfa90.predict(input);
             switch (alt90) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:565:5: Identifier '='
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:565:5: Identifier '='
                     {
-                    match(input,Identifier,FOLLOW_Identifier_in_elementValuePair1968); if (failed) return ;
-                    match(input,44,FOLLOW_44_in_elementValuePair1970); if (failed) return ;
+                    match(input,Identifier,FOLLOW_Identifier_in_elementValuePair1968); if (state.failed) return ;
+                    match(input,44,FOLLOW_44_in_elementValuePair1970); if (state.failed) return ;
 
                     }
                     break;
@@ -5265,9 +4939,10 @@
 
             pushFollow(FOLLOW_elementValue_in_elementValuePair1974);
             elementValue();
-            _fsp--;
-            if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+
             }
 
         }
@@ -5276,103 +4951,54 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 68, elementValuePair_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 68, elementValuePair_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end elementValuePair
+    // $ANTLR end "elementValuePair"
 
 
-    // $ANTLR start elementValue
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:568:1: elementValue : ( conditionalExpression | annotation | elementValueArrayInitializer );
+    // $ANTLR start "elementValue"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:568:1: elementValue : ( conditionalExpression | annotation | elementValueArrayInitializer );
     public final void elementValue() throws RecognitionException {
         int elementValue_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 69) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:569:2: ( conditionalExpression | annotation | elementValueArrayInitializer )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 69) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:569:2: ( conditionalExpression | annotation | elementValueArrayInitializer )
             int alt91=3;
-            switch ( input.LA(1) ) {
-            case Identifier:
-            case FloatingPointLiteral:
-            case CharacterLiteral:
-            case StringLiteral:
-            case HexLiteral:
-            case OctalLiteral:
-            case DecimalLiteral:
-            case 33:
-            case 40:
-            case 55:
-            case 56:
-            case 57:
-            case 58:
-            case 59:
-            case 60:
-            case 61:
-            case 62:
-            case 64:
-            case 65:
-            case 68:
-            case 69:
-            case 70:
-            case 105:
-            case 106:
-            case 109:
-            case 110:
-            case 111:
-            case 112:
-            case 113:
-            case 114:
-                {
-                alt91=1;
-                }
-                break;
-            case 71:
-                {
-                alt91=2;
-                }
-                break;
-            case 37:
-                {
-                alt91=3;
-                }
-                break;
-            default:
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("568:1: elementValue : ( conditionalExpression | annotation | elementValueArrayInitializer );", 91, 0, input);
-
-                throw nvae;
-            }
-
+            alt91 = dfa91.predict(input);
             switch (alt91) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:569:4: conditionalExpression
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:569:4: conditionalExpression
                     {
                     pushFollow(FOLLOW_conditionalExpression_in_elementValue1986);
                     conditionalExpression();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:570:6: annotation
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:570:6: annotation
                     {
                     pushFollow(FOLLOW_annotation_in_elementValue1993);
                     annotation();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:571:6: elementValueArrayInitializer
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:571:6: elementValueArrayInitializer
                     {
                     pushFollow(FOLLOW_elementValueArrayInitializer_in_elementValue2000);
                     elementValueArrayInitializer();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -5383,39 +5009,36 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 69, elementValue_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 69, elementValue_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end elementValue
+    // $ANTLR end "elementValue"
 
 
-    // $ANTLR start elementValueArrayInitializer
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:574:1: elementValueArrayInitializer : '{' ( elementValue ( ',' elementValue )* )? '}' ;
+    // $ANTLR start "elementValueArrayInitializer"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:574:1: elementValueArrayInitializer : '{' ( elementValue ( ',' elementValue )* )? '}' ;
     public final void elementValueArrayInitializer() throws RecognitionException {
         int elementValueArrayInitializer_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 70) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:575:2: ( '{' ( elementValue ( ',' elementValue )* )? '}' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:575:4: '{' ( elementValue ( ',' elementValue )* )? '}'
+            if ( state.backtracking>0 && alreadyParsedRule(input, 70) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:575:2: ( '{' ( elementValue ( ',' elementValue )* )? '}' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:575:4: '{' ( elementValue ( ',' elementValue )* )? '}'
             {
-            match(input,37,FOLLOW_37_in_elementValueArrayInitializer2012); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:575:8: ( elementValue ( ',' elementValue )* )?
+            match(input,37,FOLLOW_37_in_elementValueArrayInitializer2012); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:575:8: ( elementValue ( ',' elementValue )* )?
             int alt93=2;
-            int LA93_0 = input.LA(1);
-
-            if ( (LA93_0==Identifier||(LA93_0>=FloatingPointLiteral && LA93_0<=DecimalLiteral)||LA93_0==33||LA93_0==37||LA93_0==40||(LA93_0>=55 && LA93_0<=62)||(LA93_0>=64 && LA93_0<=65)||(LA93_0>=68 && LA93_0<=71)||(LA93_0>=105 && LA93_0<=106)||(LA93_0>=109 && LA93_0<=114)) ) {
-                alt93=1;
-            }
+            alt93 = dfa93.predict(input);
             switch (alt93) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:575:9: elementValue ( ',' elementValue )*
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:575:9: elementValue ( ',' elementValue )*
                     {
                     pushFollow(FOLLOW_elementValue_in_elementValueArrayInitializer2015);
                     elementValue();
-                    _fsp--;
-                    if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:575:22: ( ',' elementValue )*
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:575:22: ( ',' elementValue )*
                     loop92:
                     do {
                         int alt92=2;
@@ -5428,14 +5051,15 @@
 
                         switch (alt92) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:575:23: ',' elementValue
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:575:23: ',' elementValue
                     	    {
-                    	    match(input,34,FOLLOW_34_in_elementValueArrayInitializer2018); if (failed) return ;
+                    	    match(input,34,FOLLOW_34_in_elementValueArrayInitializer2018); if (state.failed) return ;
                     	    pushFollow(FOLLOW_elementValue_in_elementValueArrayInitializer2020);
                     	    elementValue();
-                    	    _fsp--;
-                    	    if (failed) return ;
 
+                    	    state._fsp--;
+                    	    if (state.failed) return ;
+
                     	    }
                     	    break;
 
@@ -5450,7 +5074,7 @@
 
             }
 
-            match(input,38,FOLLOW_38_in_elementValueArrayInitializer2027); if (failed) return ;
+            match(input,38,FOLLOW_38_in_elementValueArrayInitializer2027); if (state.failed) return ;
 
             }
 
@@ -5460,30 +5084,31 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 70, elementValueArrayInitializer_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 70, elementValueArrayInitializer_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end elementValueArrayInitializer
+    // $ANTLR end "elementValueArrayInitializer"
 
 
-    // $ANTLR start annotationTypeDeclaration
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:578:1: annotationTypeDeclaration : '@' 'interface' Identifier annotationTypeBody ;
+    // $ANTLR start "annotationTypeDeclaration"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:578:1: annotationTypeDeclaration : '@' 'interface' Identifier annotationTypeBody ;
     public final void annotationTypeDeclaration() throws RecognitionException {
         int annotationTypeDeclaration_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 71) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:579:2: ( '@' 'interface' Identifier annotationTypeBody )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:579:4: '@' 'interface' Identifier annotationTypeBody
+            if ( state.backtracking>0 && alreadyParsedRule(input, 71) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:579:2: ( '@' 'interface' Identifier annotationTypeBody )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:579:4: '@' 'interface' Identifier annotationTypeBody
             {
-            match(input,71,FOLLOW_71_in_annotationTypeDeclaration2039); if (failed) return ;
-            match(input,39,FOLLOW_39_in_annotationTypeDeclaration2041); if (failed) return ;
-            match(input,Identifier,FOLLOW_Identifier_in_annotationTypeDeclaration2043); if (failed) return ;
+            match(input,71,FOLLOW_71_in_annotationTypeDeclaration2039); if (state.failed) return ;
+            match(input,39,FOLLOW_39_in_annotationTypeDeclaration2041); if (state.failed) return ;
+            match(input,Identifier,FOLLOW_Identifier_in_annotationTypeDeclaration2043); if (state.failed) return ;
             pushFollow(FOLLOW_annotationTypeBody_in_annotationTypeDeclaration2045);
             annotationTypeBody();
-            _fsp--;
-            if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+
             }
 
         }
@@ -5492,45 +5117,42 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 71, annotationTypeDeclaration_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 71, annotationTypeDeclaration_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end annotationTypeDeclaration
+    // $ANTLR end "annotationTypeDeclaration"
 
 
-    // $ANTLR start annotationTypeBody
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:582:1: annotationTypeBody : '{' ( annotationTypeElementDeclarations )? '}' ;
+    // $ANTLR start "annotationTypeBody"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:582:1: annotationTypeBody : '{' ( annotationTypeElementDeclarations )? '}' ;
     public final void annotationTypeBody() throws RecognitionException {
         int annotationTypeBody_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 72) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:583:2: ( '{' ( annotationTypeElementDeclarations )? '}' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:583:4: '{' ( annotationTypeElementDeclarations )? '}'
+            if ( state.backtracking>0 && alreadyParsedRule(input, 72) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:583:2: ( '{' ( annotationTypeElementDeclarations )? '}' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:583:4: '{' ( annotationTypeElementDeclarations )? '}'
             {
-            match(input,37,FOLLOW_37_in_annotationTypeBody2057); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:583:8: ( annotationTypeElementDeclarations )?
+            match(input,37,FOLLOW_37_in_annotationTypeBody2057); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:583:8: ( annotationTypeElementDeclarations )?
             int alt94=2;
-            int LA94_0 = input.LA(1);
-
-            if ( ((LA94_0>=Identifier && LA94_0<=ENUM)||LA94_0==27||LA94_0==30||LA94_0==39||(LA94_0>=45 && LA94_0<=62)||LA94_0==71) ) {
-                alt94=1;
-            }
+            alt94 = dfa94.predict(input);
             switch (alt94) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:583:9: annotationTypeElementDeclarations
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:583:9: annotationTypeElementDeclarations
                     {
                     pushFollow(FOLLOW_annotationTypeElementDeclarations_in_annotationTypeBody2060);
                     annotationTypeElementDeclarations();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
             }
 
-            match(input,38,FOLLOW_38_in_annotationTypeBody2064); if (failed) return ;
+            match(input,38,FOLLOW_38_in_annotationTypeBody2064); if (state.failed) return ;
 
             }
 
@@ -5540,52 +5162,48 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 72, annotationTypeBody_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 72, annotationTypeBody_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end annotationTypeBody
+    // $ANTLR end "annotationTypeBody"
 
 
-    // $ANTLR start annotationTypeElementDeclarations
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:586:1: annotationTypeElementDeclarations : ( annotationTypeElementDeclaration ) ( annotationTypeElementDeclaration )* ;
+    // $ANTLR start "annotationTypeElementDeclarations"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:586:1: annotationTypeElementDeclarations : ( annotationTypeElementDeclaration ) ( annotationTypeElementDeclaration )* ;
     public final void annotationTypeElementDeclarations() throws RecognitionException {
         int annotationTypeElementDeclarations_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 73) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:587:2: ( ( annotationTypeElementDeclaration ) ( annotationTypeElementDeclaration )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:587:4: ( annotationTypeElementDeclaration ) ( annotationTypeElementDeclaration )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 73) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:587:2: ( ( annotationTypeElementDeclaration ) ( annotationTypeElementDeclaration )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:587:4: ( annotationTypeElementDeclaration ) ( annotationTypeElementDeclaration )*
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:587:4: ( annotationTypeElementDeclaration )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:587:5: annotationTypeElementDeclaration
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:587:4: ( annotationTypeElementDeclaration )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:587:5: annotationTypeElementDeclaration
             {
             pushFollow(FOLLOW_annotationTypeElementDeclaration_in_annotationTypeElementDeclarations2077);
             annotationTypeElementDeclaration();
-            _fsp--;
-            if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+
             }
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:587:39: ( annotationTypeElementDeclaration )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:587:39: ( annotationTypeElementDeclaration )*
             loop95:
             do {
                 int alt95=2;
-                int LA95_0 = input.LA(1);
-
-                if ( ((LA95_0>=Identifier && LA95_0<=ENUM)||LA95_0==27||LA95_0==30||LA95_0==39||(LA95_0>=45 && LA95_0<=62)||LA95_0==71) ) {
-                    alt95=1;
-                }
-
-
+                alt95 = dfa95.predict(input);
                 switch (alt95) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:587:40: annotationTypeElementDeclaration
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:587:40: annotationTypeElementDeclaration
             	    {
             	    pushFollow(FOLLOW_annotationTypeElementDeclaration_in_annotationTypeElementDeclarations2081);
             	    annotationTypeElementDeclaration();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -5603,51 +5221,37 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 73, annotationTypeElementDeclarations_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 73, annotationTypeElementDeclarations_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end annotationTypeElementDeclarations
+    // $ANTLR end "annotationTypeElementDeclarations"
 
 
-    // $ANTLR start annotationTypeElementDeclaration
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:590:1: annotationTypeElementDeclaration : ( modifier )* annotationTypeElementRest ;
+    // $ANTLR start "annotationTypeElementDeclaration"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:590:1: annotationTypeElementDeclaration : ( modifier )* annotationTypeElementRest ;
     public final void annotationTypeElementDeclaration() throws RecognitionException {
         int annotationTypeElementDeclaration_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 74) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:591:2: ( ( modifier )* annotationTypeElementRest )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:591:4: ( modifier )* annotationTypeElementRest
+            if ( state.backtracking>0 && alreadyParsedRule(input, 74) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:591:2: ( ( modifier )* annotationTypeElementRest )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:591:4: ( modifier )* annotationTypeElementRest
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:591:4: ( modifier )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:591:4: ( modifier )*
             loop96:
             do {
                 int alt96=2;
-                int LA96_0 = input.LA(1);
-
-                if ( (LA96_0==71) ) {
-                    int LA96_6 = input.LA(2);
-
-                    if ( (LA96_6==Identifier) ) {
-                        alt96=1;
-                    }
-
-
-                }
-                else if ( (LA96_0==27||(LA96_0>=45 && LA96_0<=54)) ) {
-                    alt96=1;
-                }
-
-
+                alt96 = dfa96.predict(input);
                 switch (alt96) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:591:5: modifier
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:591:5: modifier
             	    {
             	    pushFollow(FOLLOW_modifier_in_annotationTypeElementDeclaration2096);
             	    modifier();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -5658,9 +5262,10 @@
 
             pushFollow(FOLLOW_annotationTypeElementRest_in_annotationTypeElementDeclaration2100);
             annotationTypeElementRest();
-            _fsp--;
-            if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+
             }
 
         }
@@ -5669,148 +5274,56 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 74, annotationTypeElementDeclaration_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 74, annotationTypeElementDeclaration_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end annotationTypeElementDeclaration
+    // $ANTLR end "annotationTypeElementDeclaration"
 
 
-    // $ANTLR start annotationTypeElementRest
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:594:1: annotationTypeElementRest : ( type annotationMethodOrConstantRest ';' | classDeclaration ( ';' )? | interfaceDeclaration ( ';' )? | enumDeclaration ( ';' )? | annotationTypeDeclaration ( ';' )? );
+    // $ANTLR start "annotationTypeElementRest"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:594:1: annotationTypeElementRest : ( type annotationMethodOrConstantRest ';' | classDeclaration ( ';' )? | interfaceDeclaration ( ';' )? | enumDeclaration ( ';' )? | annotationTypeDeclaration ( ';' )? );
     public final void annotationTypeElementRest() throws RecognitionException {
         int annotationTypeElementRest_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 75) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:595:2: ( type annotationMethodOrConstantRest ';' | classDeclaration ( ';' )? | interfaceDeclaration ( ';' )? | enumDeclaration ( ';' )? | annotationTypeDeclaration ( ';' )? )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 75) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:595:2: ( type annotationMethodOrConstantRest ';' | classDeclaration ( ';' )? | interfaceDeclaration ( ';' )? | enumDeclaration ( ';' )? | annotationTypeDeclaration ( ';' )? )
             int alt101=5;
-            switch ( input.LA(1) ) {
-            case Identifier:
-            case 55:
-            case 56:
-            case 57:
-            case 58:
-            case 59:
-            case 60:
-            case 61:
-            case 62:
-                {
-                alt101=1;
-                }
-                break;
-            case 30:
-                {
-                alt101=2;
-                }
-                break;
-            case ENUM:
-                {
-                int LA101_4 = input.LA(2);
-
-                if ( (LA101_4==Identifier) ) {
-                    int LA101_7 = input.LA(3);
-
-                    if ( (synpred135()) ) {
-                        alt101=2;
-                    }
-                    else if ( (synpred139()) ) {
-                        alt101=4;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("594:1: annotationTypeElementRest : ( type annotationMethodOrConstantRest ';' | classDeclaration ( ';' )? | interfaceDeclaration ( ';' )? | enumDeclaration ( ';' )? | annotationTypeDeclaration ( ';' )? );", 101, 7, input);
-
-                        throw nvae;
-                    }
-                }
-                else {
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("594:1: annotationTypeElementRest : ( type annotationMethodOrConstantRest ';' | classDeclaration ( ';' )? | interfaceDeclaration ( ';' )? | enumDeclaration ( ';' )? | annotationTypeDeclaration ( ';' )? );", 101, 4, input);
-
-                    throw nvae;
-                }
-                }
-                break;
-            case 39:
-                {
-                alt101=3;
-                }
-                break;
-            case 71:
-                {
-                int LA101_6 = input.LA(2);
-
-                if ( (LA101_6==39) ) {
-                    int LA101_8 = input.LA(3);
-
-                    if ( (synpred137()) ) {
-                        alt101=3;
-                    }
-                    else if ( (true) ) {
-                        alt101=5;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("594:1: annotationTypeElementRest : ( type annotationMethodOrConstantRest ';' | classDeclaration ( ';' )? | interfaceDeclaration ( ';' )? | enumDeclaration ( ';' )? | annotationTypeDeclaration ( ';' )? );", 101, 8, input);
-
-                        throw nvae;
-                    }
-                }
-                else {
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("594:1: annotationTypeElementRest : ( type annotationMethodOrConstantRest ';' | classDeclaration ( ';' )? | interfaceDeclaration ( ';' )? | enumDeclaration ( ';' )? | annotationTypeDeclaration ( ';' )? );", 101, 6, input);
-
-                    throw nvae;
-                }
-                }
-                break;
-            default:
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("594:1: annotationTypeElementRest : ( type annotationMethodOrConstantRest ';' | classDeclaration ( ';' )? | interfaceDeclaration ( ';' )? | enumDeclaration ( ';' )? | annotationTypeDeclaration ( ';' )? );", 101, 0, input);
-
-                throw nvae;
-            }
-
+            alt101 = dfa101.predict(input);
             switch (alt101) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:595:4: type annotationMethodOrConstantRest ';'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:595:4: type annotationMethodOrConstantRest ';'
                     {
                     pushFollow(FOLLOW_type_in_annotationTypeElementRest2112);
                     type();
-                    _fsp--;
-                    if (failed) return ;
+
+                    state._fsp--;
+                    if (state.failed) return ;
                     pushFollow(FOLLOW_annotationMethodOrConstantRest_in_annotationTypeElementRest2114);
                     annotationMethodOrConstantRest();
-                    _fsp--;
-                    if (failed) return ;
-                    match(input,25,FOLLOW_25_in_annotationTypeElementRest2116); if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,25,FOLLOW_25_in_annotationTypeElementRest2116); if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:596:6: classDeclaration ( ';' )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:596:6: classDeclaration ( ';' )?
                     {
                     pushFollow(FOLLOW_classDeclaration_in_annotationTypeElementRest2123);
                     classDeclaration();
-                    _fsp--;
-                    if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:596:23: ( ';' )?
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:596:23: ( ';' )?
                     int alt97=2;
-                    int LA97_0 = input.LA(1);
-
-                    if ( (LA97_0==25) ) {
-                        alt97=1;
-                    }
+                    alt97 = dfa97.predict(input);
                     switch (alt97) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: ';'
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: ';'
                             {
-                            match(input,25,FOLLOW_25_in_annotationTypeElementRest2125); if (failed) return ;
+                            match(input,25,FOLLOW_25_in_annotationTypeElementRest2125); if (state.failed) return ;
 
                             }
                             break;
@@ -5821,24 +5334,21 @@
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:597:6: interfaceDeclaration ( ';' )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:597:6: interfaceDeclaration ( ';' )?
                     {
                     pushFollow(FOLLOW_interfaceDeclaration_in_annotationTypeElementRest2133);
                     interfaceDeclaration();
-                    _fsp--;
-                    if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:597:27: ( ';' )?
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:597:27: ( ';' )?
                     int alt98=2;
-                    int LA98_0 = input.LA(1);
-
-                    if ( (LA98_0==25) ) {
-                        alt98=1;
-                    }
+                    alt98 = dfa98.predict(input);
                     switch (alt98) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: ';'
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: ';'
                             {
-                            match(input,25,FOLLOW_25_in_annotationTypeElementRest2135); if (failed) return ;
+                            match(input,25,FOLLOW_25_in_annotationTypeElementRest2135); if (state.failed) return ;
 
                             }
                             break;
@@ -5849,24 +5359,21 @@
                     }
                     break;
                 case 4 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:598:6: enumDeclaration ( ';' )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:598:6: enumDeclaration ( ';' )?
                     {
                     pushFollow(FOLLOW_enumDeclaration_in_annotationTypeElementRest2143);
                     enumDeclaration();
-                    _fsp--;
-                    if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:598:22: ( ';' )?
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:598:22: ( ';' )?
                     int alt99=2;
-                    int LA99_0 = input.LA(1);
-
-                    if ( (LA99_0==25) ) {
-                        alt99=1;
-                    }
+                    alt99 = dfa99.predict(input);
                     switch (alt99) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: ';'
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: ';'
                             {
-                            match(input,25,FOLLOW_25_in_annotationTypeElementRest2145); if (failed) return ;
+                            match(input,25,FOLLOW_25_in_annotationTypeElementRest2145); if (state.failed) return ;
 
                             }
                             break;
@@ -5877,24 +5384,21 @@
                     }
                     break;
                 case 5 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:599:6: annotationTypeDeclaration ( ';' )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:599:6: annotationTypeDeclaration ( ';' )?
                     {
                     pushFollow(FOLLOW_annotationTypeDeclaration_in_annotationTypeElementRest2153);
                     annotationTypeDeclaration();
-                    _fsp--;
-                    if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:599:32: ( ';' )?
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:599:32: ( ';' )?
                     int alt100=2;
-                    int LA100_0 = input.LA(1);
-
-                    if ( (LA100_0==25) ) {
-                        alt100=1;
-                    }
+                    alt100 = dfa100.predict(input);
                     switch (alt100) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: ';'
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: ';'
                             {
-                            match(input,25,FOLLOW_25_in_annotationTypeElementRest2155); if (failed) return ;
+                            match(input,25,FOLLOW_25_in_annotationTypeElementRest2155); if (state.failed) return ;
 
                             }
                             break;
@@ -5912,20 +5416,20 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 75, annotationTypeElementRest_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 75, annotationTypeElementRest_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end annotationTypeElementRest
+    // $ANTLR end "annotationTypeElementRest"
 
 
-    // $ANTLR start annotationMethodOrConstantRest
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:602:1: annotationMethodOrConstantRest : ( annotationMethodRest | annotationConstantRest );
+    // $ANTLR start "annotationMethodOrConstantRest"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:602:1: annotationMethodOrConstantRest : ( annotationMethodRest | annotationConstantRest );
     public final void annotationMethodOrConstantRest() throws RecognitionException {
         int annotationMethodOrConstantRest_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 76) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:603:2: ( annotationMethodRest | annotationConstantRest )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 76) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:603:2: ( annotationMethodRest | annotationConstantRest )
             int alt102=2;
             int LA102_0 = input.LA(1);
 
@@ -5939,39 +5443,41 @@
                     alt102=2;
                 }
                 else {
-                    if (backtracking>0) {failed=true; return ;}
+                    if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("602:1: annotationMethodOrConstantRest : ( annotationMethodRest | annotationConstantRest );", 102, 1, input);
+                        new NoViableAltException("", 102, 1, input);
 
                     throw nvae;
                 }
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("602:1: annotationMethodOrConstantRest : ( annotationMethodRest | annotationConstantRest );", 102, 0, input);
+                    new NoViableAltException("", 102, 0, input);
 
                 throw nvae;
             }
             switch (alt102) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:603:4: annotationMethodRest
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:603:4: annotationMethodRest
                     {
                     pushFollow(FOLLOW_annotationMethodRest_in_annotationMethodOrConstantRest2168);
                     annotationMethodRest();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:604:6: annotationConstantRest
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:604:6: annotationConstantRest
                     {
                     pushFollow(FOLLOW_annotationConstantRest_in_annotationMethodOrConstantRest2175);
                     annotationConstantRest();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -5982,26 +5488,26 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 76, annotationMethodOrConstantRest_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 76, annotationMethodOrConstantRest_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end annotationMethodOrConstantRest
+    // $ANTLR end "annotationMethodOrConstantRest"
 
 
-    // $ANTLR start annotationMethodRest
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:607:1: annotationMethodRest : Identifier '(' ')' ( defaultValue )? ;
+    // $ANTLR start "annotationMethodRest"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:607:1: annotationMethodRest : Identifier '(' ')' ( defaultValue )? ;
     public final void annotationMethodRest() throws RecognitionException {
         int annotationMethodRest_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 77) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:608:3: ( Identifier '(' ')' ( defaultValue )? )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:608:5: Identifier '(' ')' ( defaultValue )?
+            if ( state.backtracking>0 && alreadyParsedRule(input, 77) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:608:3: ( Identifier '(' ')' ( defaultValue )? )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:608:5: Identifier '(' ')' ( defaultValue )?
             {
-            match(input,Identifier,FOLLOW_Identifier_in_annotationMethodRest2188); if (failed) return ;
-            match(input,65,FOLLOW_65_in_annotationMethodRest2190); if (failed) return ;
-            match(input,66,FOLLOW_66_in_annotationMethodRest2192); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:608:24: ( defaultValue )?
+            match(input,Identifier,FOLLOW_Identifier_in_annotationMethodRest2188); if (state.failed) return ;
+            match(input,65,FOLLOW_65_in_annotationMethodRest2190); if (state.failed) return ;
+            match(input,66,FOLLOW_66_in_annotationMethodRest2192); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:608:24: ( defaultValue )?
             int alt103=2;
             int LA103_0 = input.LA(1);
 
@@ -6010,13 +5516,14 @@
             }
             switch (alt103) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:608:25: defaultValue
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:608:25: defaultValue
                     {
                     pushFollow(FOLLOW_defaultValue_in_annotationMethodRest2195);
                     defaultValue();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -6031,27 +5538,28 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 77, annotationMethodRest_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 77, annotationMethodRest_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end annotationMethodRest
+    // $ANTLR end "annotationMethodRest"
 
 
-    // $ANTLR start annotationConstantRest
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:611:1: annotationConstantRest : variableDeclarators ;
+    // $ANTLR start "annotationConstantRest"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:611:1: annotationConstantRest : variableDeclarators ;
     public final void annotationConstantRest() throws RecognitionException {
         int annotationConstantRest_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 78) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:612:3: ( variableDeclarators )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:612:5: variableDeclarators
+            if ( state.backtracking>0 && alreadyParsedRule(input, 78) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:612:3: ( variableDeclarators )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:612:5: variableDeclarators
             {
             pushFollow(FOLLOW_variableDeclarators_in_annotationConstantRest2212);
             variableDeclarators();
-            _fsp--;
-            if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+
             }
 
         }
@@ -6060,28 +5568,29 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 78, annotationConstantRest_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 78, annotationConstantRest_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end annotationConstantRest
+    // $ANTLR end "annotationConstantRest"
 
 
-    // $ANTLR start defaultValue
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:615:1: defaultValue : 'default' elementValue ;
+    // $ANTLR start "defaultValue"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:615:1: defaultValue : 'default' elementValue ;
     public final void defaultValue() throws RecognitionException {
         int defaultValue_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 79) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:616:3: ( 'default' elementValue )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:616:5: 'default' elementValue
+            if ( state.backtracking>0 && alreadyParsedRule(input, 79) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:616:3: ( 'default' elementValue )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:616:5: 'default' elementValue
             {
-            match(input,72,FOLLOW_72_in_defaultValue2227); if (failed) return ;
+            match(input,72,FOLLOW_72_in_defaultValue2227); if (state.failed) return ;
             pushFollow(FOLLOW_elementValue_in_defaultValue2229);
             elementValue();
-            _fsp--;
-            if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+
             }
 
         }
@@ -6090,46 +5599,41 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 79, defaultValue_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 79, defaultValue_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end defaultValue
+    // $ANTLR end "defaultValue"
 
 
-    // $ANTLR start block
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:621:1: block : '{' ( blockStatement )* '}' ;
+    // $ANTLR start "block"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:621:1: block : '{' ( blockStatement )* '}' ;
     public final void block() throws RecognitionException {
         int block_StartIndex = input.index();
 
                     this.localVariableLevel++;
                 
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 80) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:628:2: ( '{' ( blockStatement )* '}' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:628:4: '{' ( blockStatement )* '}'
+            if ( state.backtracking>0 && alreadyParsedRule(input, 80) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:628:2: ( '{' ( blockStatement )* '}' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:628:4: '{' ( blockStatement )* '}'
             {
-            match(input,37,FOLLOW_37_in_block2269); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:628:8: ( blockStatement )*
+            match(input,37,FOLLOW_37_in_block2269); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:628:8: ( blockStatement )*
             loop104:
             do {
                 int alt104=2;
-                int LA104_0 = input.LA(1);
-
-                if ( ((LA104_0>=Identifier && LA104_0<=DecimalLiteral)||LA104_0==25||LA104_0==27||LA104_0==30||LA104_0==33||LA104_0==37||(LA104_0>=39 && LA104_0<=40)||(LA104_0>=45 && LA104_0<=62)||(LA104_0>=64 && LA104_0<=65)||(LA104_0>=68 && LA104_0<=71)||LA104_0==73||LA104_0==75||(LA104_0>=77 && LA104_0<=80)||(LA104_0>=82 && LA104_0<=87)||(LA104_0>=105 && LA104_0<=106)||(LA104_0>=109 && LA104_0<=114)) ) {
-                    alt104=1;
-                }
-
-
+                alt104 = dfa104.predict(input);
                 switch (alt104) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: blockStatement
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: blockStatement
             	    {
             	    pushFollow(FOLLOW_blockStatement_in_block2271);
             	    blockStatement();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -6138,11 +5642,11 @@
                 }
             } while (true);
 
-            match(input,38,FOLLOW_38_in_block2274); if (failed) return ;
+            match(input,38,FOLLOW_38_in_block2274); if (state.failed) return ;
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
 
                           this.localVariableLevel--;
                       
@@ -6153,404 +5657,54 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 80, block_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 80, block_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end block
+    // $ANTLR end "block"
 
 
-    // $ANTLR start blockStatement
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:631:1: blockStatement : ( localVariableDeclaration | classOrInterfaceDeclaration | statement );
+    // $ANTLR start "blockStatement"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:631:1: blockStatement : ( localVariableDeclaration | classOrInterfaceDeclaration | statement );
     public final void blockStatement() throws RecognitionException {
         int blockStatement_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 81) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:632:2: ( localVariableDeclaration | classOrInterfaceDeclaration | statement )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 81) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:632:2: ( localVariableDeclaration | classOrInterfaceDeclaration | statement )
             int alt105=3;
-            switch ( input.LA(1) ) {
-            case 49:
-                {
-                switch ( input.LA(2) ) {
-                case Identifier:
-                case 55:
-                case 56:
-                case 57:
-                case 58:
-                case 59:
-                case 60:
-                case 61:
-                case 62:
-                    {
-                    alt105=1;
-                    }
-                    break;
-                case 49:
-                    {
-                    int LA105_52 = input.LA(3);
-
-                    if ( (synpred144()) ) {
-                        alt105=1;
-                    }
-                    else if ( (synpred145()) ) {
-                        alt105=2;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("631:1: blockStatement : ( localVariableDeclaration | classOrInterfaceDeclaration | statement );", 105, 52, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case 71:
-                    {
-                    int LA105_53 = input.LA(3);
-
-                    if ( (synpred144()) ) {
-                        alt105=1;
-                    }
-                    else if ( (synpred145()) ) {
-                        alt105=2;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("631:1: blockStatement : ( localVariableDeclaration | classOrInterfaceDeclaration | statement );", 105, 53, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case ENUM:
-                case 27:
-                case 30:
-                case 39:
-                case 45:
-                case 46:
-                case 47:
-                case 48:
-                case 50:
-                case 51:
-                case 52:
-                case 53:
-                case 54:
-                    {
-                    alt105=2;
-                    }
-                    break;
-                default:
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("631:1: blockStatement : ( localVariableDeclaration | classOrInterfaceDeclaration | statement );", 105, 1, input);
-
-                    throw nvae;
-                }
-
-                }
-                break;
-            case 71:
-                {
-                int LA105_2 = input.LA(2);
-
-                if ( (LA105_2==39) ) {
-                    alt105=2;
-                }
-                else if ( (LA105_2==Identifier) ) {
-                    int LA105_68 = input.LA(3);
-
-                    if ( (synpred144()) ) {
-                        alt105=1;
-                    }
-                    else if ( (synpred145()) ) {
-                        alt105=2;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("631:1: blockStatement : ( localVariableDeclaration | classOrInterfaceDeclaration | statement );", 105, 68, input);
-
-                        throw nvae;
-                    }
-                }
-                else {
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("631:1: blockStatement : ( localVariableDeclaration | classOrInterfaceDeclaration | statement );", 105, 2, input);
-
-                    throw nvae;
-                }
-                }
-                break;
-            case Identifier:
-                {
-                switch ( input.LA(2) ) {
-                case 25:
-                case 29:
-                case 35:
-                case 36:
-                case 44:
-                case 63:
-                case 65:
-                case 74:
-                case 90:
-                case 91:
-                case 92:
-                case 93:
-                case 94:
-                case 95:
-                case 96:
-                case 97:
-                case 98:
-                case 99:
-                case 100:
-                case 101:
-                case 102:
-                case 103:
-                case 104:
-                case 105:
-                case 106:
-                case 107:
-                case 108:
-                case 109:
-                case 110:
-                    {
-                    alt105=3;
-                    }
-                    break;
-                case 28:
-                    {
-                    int LA105_70 = input.LA(3);
-
-                    if ( (synpred144()) ) {
-                        alt105=1;
-                    }
-                    else if ( (true) ) {
-                        alt105=3;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("631:1: blockStatement : ( localVariableDeclaration | classOrInterfaceDeclaration | statement );", 105, 70, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case 41:
-                    {
-                    int LA105_71 = input.LA(3);
-
-                    if ( (synpred144()) ) {
-                        alt105=1;
-                    }
-                    else if ( (true) ) {
-                        alt105=3;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("631:1: blockStatement : ( localVariableDeclaration | classOrInterfaceDeclaration | statement );", 105, 71, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case 33:
-                    {
-                    int LA105_76 = input.LA(3);
-
-                    if ( (synpred144()) ) {
-                        alt105=1;
-                    }
-                    else if ( (true) ) {
-                        alt105=3;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("631:1: blockStatement : ( localVariableDeclaration | classOrInterfaceDeclaration | statement );", 105, 76, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case Identifier:
-                    {
-                    alt105=1;
-                    }
-                    break;
-                default:
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("631:1: blockStatement : ( localVariableDeclaration | classOrInterfaceDeclaration | statement );", 105, 3, input);
-
-                    throw nvae;
-                }
-
-                }
-                break;
-            case 55:
-            case 56:
-            case 57:
-            case 58:
-            case 59:
-            case 60:
-            case 61:
-            case 62:
-                {
-                switch ( input.LA(2) ) {
-                case 41:
-                    {
-                    int LA105_97 = input.LA(3);
-
-                    if ( (synpred144()) ) {
-                        alt105=1;
-                    }
-                    else if ( (true) ) {
-                        alt105=3;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("631:1: blockStatement : ( localVariableDeclaration | classOrInterfaceDeclaration | statement );", 105, 97, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case Identifier:
-                    {
-                    alt105=1;
-                    }
-                    break;
-                case 28:
-                    {
-                    alt105=3;
-                    }
-                    break;
-                default:
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("631:1: blockStatement : ( localVariableDeclaration | classOrInterfaceDeclaration | statement );", 105, 4, input);
-
-                    throw nvae;
-                }
-
-                }
-                break;
-            case ENUM:
-            case 27:
-            case 30:
-            case 39:
-            case 45:
-            case 46:
-            case 47:
-            case 48:
-            case 50:
-            case 52:
-            case 53:
-            case 54:
-                {
-                alt105=2;
-                }
-                break;
-            case 51:
-                {
-                int LA105_11 = input.LA(2);
-
-                if ( (LA105_11==ENUM||LA105_11==27||LA105_11==30||LA105_11==39||(LA105_11>=45 && LA105_11<=54)||LA105_11==71) ) {
-                    alt105=2;
-                }
-                else if ( (LA105_11==65) ) {
-                    alt105=3;
-                }
-                else {
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("631:1: blockStatement : ( localVariableDeclaration | classOrInterfaceDeclaration | statement );", 105, 11, input);
-
-                    throw nvae;
-                }
-                }
-                break;
-            case FloatingPointLiteral:
-            case CharacterLiteral:
-            case StringLiteral:
-            case HexLiteral:
-            case OctalLiteral:
-            case DecimalLiteral:
-            case 25:
-            case 33:
-            case 37:
-            case 40:
-            case 64:
-            case 65:
-            case 68:
-            case 69:
-            case 70:
-            case 73:
-            case 75:
-            case 77:
-            case 78:
-            case 79:
-            case 80:
-            case 82:
-            case 83:
-            case 84:
-            case 85:
-            case 86:
-            case 87:
-            case 105:
-            case 106:
-            case 109:
-            case 110:
-            case 111:
-            case 112:
-            case 113:
-            case 114:
-                {
-                alt105=3;
-                }
-                break;
-            default:
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("631:1: blockStatement : ( localVariableDeclaration | classOrInterfaceDeclaration | statement );", 105, 0, input);
-
-                throw nvae;
-            }
-
+            alt105 = dfa105.predict(input);
             switch (alt105) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:632:4: localVariableDeclaration
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:632:4: localVariableDeclaration
                     {
                     pushFollow(FOLLOW_localVariableDeclaration_in_blockStatement2286);
                     localVariableDeclaration();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:633:4: classOrInterfaceDeclaration
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:633:4: classOrInterfaceDeclaration
                     {
                     pushFollow(FOLLOW_classOrInterfaceDeclaration_in_blockStatement2291);
                     classOrInterfaceDeclaration();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:634:8: statement
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:634:8: statement
                     {
                     pushFollow(FOLLOW_statement_in_blockStatement2300);
                     statement();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -6561,11 +5715,11 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 81, blockStatement_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 81, blockStatement_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end blockStatement
+    // $ANTLR end "blockStatement"
 
     protected static class localVariableDeclaration_scope {
         JavaLocalDeclarationDescr descr;
@@ -6573,25 +5727,25 @@
     protected Stack localVariableDeclaration_stack = new Stack();
 
 
-    // $ANTLR start localVariableDeclaration
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:637:1: localVariableDeclaration : ( variableModifier )* type variableDeclarators ';' ;
+    // $ANTLR start "localVariableDeclaration"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:637:1: localVariableDeclaration : ( variableModifier )* type variableDeclarators ';' ;
     public final void localVariableDeclaration() throws RecognitionException {
         localVariableDeclaration_stack.push(new localVariableDeclaration_scope());
         int localVariableDeclaration_StartIndex = input.index();
-        variableModifier_return variableModifier1 = null;
+        JavaParser.variableModifier_return variableModifier1 = null;
 
-        type_return type2 = null;
+        JavaParser.type_return type2 = null;
 
 
 
                     ((localVariableDeclaration_scope)localVariableDeclaration_stack.peek()).descr = new JavaLocalDeclarationDescr();
                 
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 82) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:647:2: ( ( variableModifier )* type variableDeclarators ';' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:648:2: ( variableModifier )* type variableDeclarators ';'
+            if ( state.backtracking>0 && alreadyParsedRule(input, 82) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:647:2: ( ( variableModifier )* type variableDeclarators ';' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:648:2: ( variableModifier )* type variableDeclarators ';'
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:648:2: ( variableModifier )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:648:2: ( variableModifier )*
             loop106:
             do {
                 int alt106=2;
@@ -6604,16 +5758,17 @@
 
                 switch (alt106) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:648:4: variableModifier
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:648:4: variableModifier
             	    {
             	    pushFollow(FOLLOW_variableModifier_in_localVariableDeclaration2348);
             	    variableModifier1=variableModifier();
-            	    _fsp--;
-            	    if (failed) return ;
-            	    if ( backtracking==0 ) {
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+            	    if ( state.backtracking==0 ) {
             	       
-            	      	        ((localVariableDeclaration_scope)localVariableDeclaration_stack.peek()).descr.updateStart( ((CommonToken)((Token)variableModifier1.start)).getStartIndex() - 1 ); 
-            	      	        ((localVariableDeclaration_scope)localVariableDeclaration_stack.peek()).descr.addModifier( input.toString(variableModifier1.start,variableModifier1.stop) ); 
+            	      	        ((localVariableDeclaration_scope)localVariableDeclaration_stack.peek()).descr.updateStart( ((CommonToken)(variableModifier1!=null?((Token)variableModifier1.start):null)).getStartIndex() - 1 ); 
+            	      	        ((localVariableDeclaration_scope)localVariableDeclaration_stack.peek()).descr.addModifier( (variableModifier1!=null?input.toString(variableModifier1.start,variableModifier1.stop):null) ); 
             	      	    
             	    }
 
@@ -6627,24 +5782,26 @@
 
             pushFollow(FOLLOW_type_in_localVariableDeclaration2365);
             type2=type();
-            _fsp--;
-            if (failed) return ;
-            if ( backtracking==0 ) {
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
                
-              	        ((localVariableDeclaration_scope)localVariableDeclaration_stack.peek()).descr.updateStart( ((CommonToken)((Token)type2.start)).getStartIndex() - 1 ); 
-              	        ((localVariableDeclaration_scope)localVariableDeclaration_stack.peek()).descr.setType( input.toString(type2.start,type2.stop) ); 
-              	        ((localVariableDeclaration_scope)localVariableDeclaration_stack.peek()).descr.setEnd( ((CommonToken)((Token)type2.stop)).getStopIndex() ); 
+              	        ((localVariableDeclaration_scope)localVariableDeclaration_stack.peek()).descr.updateStart( ((CommonToken)(type2!=null?((Token)type2.start):null)).getStartIndex() - 1 ); 
+              	        ((localVariableDeclaration_scope)localVariableDeclaration_stack.peek()).descr.setType( (type2!=null?input.toString(type2.start,type2.stop):null) ); 
+              	        ((localVariableDeclaration_scope)localVariableDeclaration_stack.peek()).descr.setEnd( ((CommonToken)(type2!=null?((Token)type2.stop):null)).getStopIndex() ); 
               	    
             }
             pushFollow(FOLLOW_variableDeclarators_in_localVariableDeclaration2376);
             variableDeclarators();
-            _fsp--;
-            if (failed) return ;
-            match(input,25,FOLLOW_25_in_localVariableDeclaration2378); if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+            match(input,25,FOLLOW_25_in_localVariableDeclaration2378); if (state.failed) return ;
+
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
 
                           localDeclarations.add( ((localVariableDeclaration_scope)localVariableDeclaration_stack.peek()).descr );
                       
@@ -6655,178 +5812,45 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 82, localVariableDeclaration_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 82, localVariableDeclaration_StartIndex); }
             localVariableDeclaration_stack.pop();
         }
         return ;
     }
-    // $ANTLR end localVariableDeclaration
+    // $ANTLR end "localVariableDeclaration"
 
 
-    // $ANTLR start statement
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:663:1: statement : ( block | 'assert' expression ( ':' expression )? ';' | 'if' parExpression statement ( options {k=1; } : 'else' statement )? | 'for' '(' forControl ')' statement | 'while' parExpression statement | 'do' statement 'while' parExpression ';' | 'try' block ( catches 'finally' block | catches | 'finally' block ) | 'switch' parExpression '{' switchBlockStatementGroups '}' | 'synchronized' parExpression block | 'return' ( expression )? ';' | 'throw' expression ';' | 'break' ( Identifier )? ';' | 'continue' ( Identifier )? ';' | modifyStatement | ';' | statementExpression ';' | Identifier ':' statement );
+    // $ANTLR start "statement"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:663:1: statement : ( block | 'assert' expression ( ':' expression )? ';' | 'if' parExpression statement ( options {k=1; } : 'else' statement )? | 'for' '(' forControl ')' statement | 'while' parExpression statement | 'do' statement 'while' parExpression ';' | 'try' block ( catches 'finally' block | catches | 'finally' block ) | 'switch' parExpression '{' switchBlockStatementGroups '}' | 'synchronized' parExpression block | 'return' ( expression )? ';' | 'throw' expression ';' | 'break' ( Identifier )? ';' | 'continue' ( Identifier )? ';' | modifyStatement | ';' | statementExpression ';' | Identifier ':' statement );
     public final void statement() throws RecognitionException {
         int statement_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 83) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:664:2: ( block | 'assert' expression ( ':' expression )? ';' | 'if' parExpression statement ( options {k=1; } : 'else' statement )? | 'for' '(' forControl ')' statement | 'while' parExpression statement | 'do' statement 'while' parExpression ';' | 'try' block ( catches 'finally' block | catches | 'finally' block ) | 'switch' parExpression '{' switchBlockStatementGroups '}' | 'synchronized' parExpression block | 'return' ( expression )? ';' | 'throw' expression ';' | 'break' ( Identifier )? ';' | 'continue' ( Identifier )? ';' | modifyStatement | ';' | statementExpression ';' | Identifier ':' statement )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 83) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:664:2: ( block | 'assert' expression ( ':' expression )? ';' | 'if' parExpression statement ( options {k=1; } : 'else' statement )? | 'for' '(' forControl ')' statement | 'while' parExpression statement | 'do' statement 'while' parExpression ';' | 'try' block ( catches 'finally' block | catches | 'finally' block ) | 'switch' parExpression '{' switchBlockStatementGroups '}' | 'synchronized' parExpression block | 'return' ( expression )? ';' | 'throw' expression ';' | 'break' ( Identifier )? ';' | 'continue' ( Identifier )? ';' | modifyStatement | ';' | statementExpression ';' | Identifier ':' statement )
             int alt113=17;
-            switch ( input.LA(1) ) {
-            case 37:
-                {
-                alt113=1;
-                }
-                break;
-            case 73:
-                {
-                alt113=2;
-                }
-                break;
-            case 75:
-                {
-                alt113=3;
-                }
-                break;
-            case 77:
-                {
-                alt113=4;
-                }
-                break;
-            case 78:
-                {
-                alt113=5;
-                }
-                break;
-            case 79:
-                {
-                alt113=6;
-                }
-                break;
-            case 80:
-                {
-                alt113=7;
-                }
-                break;
-            case 82:
-                {
-                alt113=8;
-                }
-                break;
-            case 51:
-                {
-                alt113=9;
-                }
-                break;
-            case 83:
-                {
-                alt113=10;
-                }
-                break;
-            case 84:
-                {
-                alt113=11;
-                }
-                break;
-            case 85:
-                {
-                alt113=12;
-                }
-                break;
-            case 86:
-                {
-                alt113=13;
-                }
-                break;
-            case 87:
-                {
-                alt113=14;
-                }
-                break;
-            case 25:
-                {
-                alt113=15;
-                }
-                break;
-            case FloatingPointLiteral:
-            case CharacterLiteral:
-            case StringLiteral:
-            case HexLiteral:
-            case OctalLiteral:
-            case DecimalLiteral:
-            case 33:
-            case 40:
-            case 55:
-            case 56:
-            case 57:
-            case 58:
-            case 59:
-            case 60:
-            case 61:
-            case 62:
-            case 64:
-            case 65:
-            case 68:
-            case 69:
-            case 70:
-            case 105:
-            case 106:
-            case 109:
-            case 110:
-            case 111:
-            case 112:
-            case 113:
-            case 114:
-                {
-                alt113=16;
-                }
-                break;
-            case Identifier:
-                {
-                int LA113_33 = input.LA(2);
-
-                if ( (LA113_33==74) ) {
-                    alt113=17;
-                }
-                else if ( (LA113_33==25||(LA113_33>=28 && LA113_33<=29)||LA113_33==33||(LA113_33>=35 && LA113_33<=36)||LA113_33==41||LA113_33==44||LA113_33==63||LA113_33==65||(LA113_33>=90 && LA113_33<=110)) ) {
-                    alt113=16;
-                }
-                else {
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("663:1: statement : ( block | 'assert' expression ( ':' expression )? ';' | 'if' parExpression statement ( options {k=1; } : 'else' statement )? | 'for' '(' forControl ')' statement | 'while' parExpression statement | 'do' statement 'while' parExpression ';' | 'try' block ( catches 'finally' block | catches | 'finally' block ) | 'switch' parExpression '{' switchBlockStatementGroups '}' | 'synchronized' parExpression block | 'return' ( expression )? ';' | 'throw' expression ';' | 'break' ( Identifier )? ';' | 'continue' ( Identifier )? ';' | modifyStatement | ';' | statementExpression ';' | Identifier ':' statement );", 113, 33, input);
-
-                    throw nvae;
-                }
-                }
-                break;
-            default:
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("663:1: statement : ( block | 'assert' expression ( ':' expression )? ';' | 'if' parExpression statement ( options {k=1; } : 'else' statement )? | 'for' '(' forControl ')' statement | 'while' parExpression statement | 'do' statement 'while' parExpression ';' | 'try' block ( catches 'finally' block | catches | 'finally' block ) | 'switch' parExpression '{' switchBlockStatementGroups '}' | 'synchronized' parExpression block | 'return' ( expression )? ';' | 'throw' expression ';' | 'break' ( Identifier )? ';' | 'continue' ( Identifier )? ';' | modifyStatement | ';' | statementExpression ';' | Identifier ':' statement );", 113, 0, input);
-
-                throw nvae;
-            }
-
+            alt113 = dfa113.predict(input);
             switch (alt113) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:664:4: block
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:664:4: block
                     {
                     pushFollow(FOLLOW_block_in_statement2390);
                     block();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:665:7: 'assert' expression ( ':' expression )? ';'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:665:7: 'assert' expression ( ':' expression )? ';'
                     {
-                    match(input,73,FOLLOW_73_in_statement2398); if (failed) return ;
+                    match(input,73,FOLLOW_73_in_statement2398); if (state.failed) return ;
                     pushFollow(FOLLOW_expression_in_statement2400);
                     expression();
-                    _fsp--;
-                    if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:665:27: ( ':' expression )?
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:665:27: ( ':' expression )?
                     int alt107=2;
                     int LA107_0 = input.LA(1);
 
@@ -6835,56 +5859,60 @@
                     }
                     switch (alt107) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:665:28: ':' expression
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:665:28: ':' expression
                             {
-                            match(input,74,FOLLOW_74_in_statement2403); if (failed) return ;
+                            match(input,74,FOLLOW_74_in_statement2403); if (state.failed) return ;
                             pushFollow(FOLLOW_expression_in_statement2405);
                             expression();
-                            _fsp--;
-                            if (failed) return ;
 
+                            state._fsp--;
+                            if (state.failed) return ;
+
                             }
                             break;
 
                     }
 
-                    match(input,25,FOLLOW_25_in_statement2409); if (failed) return ;
+                    match(input,25,FOLLOW_25_in_statement2409); if (state.failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:666:7: 'if' parExpression statement ( options {k=1; } : 'else' statement )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:666:7: 'if' parExpression statement ( options {k=1; } : 'else' statement )?
                     {
-                    match(input,75,FOLLOW_75_in_statement2417); if (failed) return ;
+                    match(input,75,FOLLOW_75_in_statement2417); if (state.failed) return ;
                     pushFollow(FOLLOW_parExpression_in_statement2419);
                     parExpression();
-                    _fsp--;
-                    if (failed) return ;
+
+                    state._fsp--;
+                    if (state.failed) return ;
                     pushFollow(FOLLOW_statement_in_statement2421);
                     statement();
-                    _fsp--;
-                    if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:666:36: ( options {k=1; } : 'else' statement )?
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:666:36: ( options {k=1; } : 'else' statement )?
                     int alt108=2;
                     int LA108_0 = input.LA(1);
 
                     if ( (LA108_0==76) ) {
                         int LA108_1 = input.LA(2);
 
-                        if ( (synpred150()) ) {
+                        if ( (synpred150_Java()) ) {
                             alt108=1;
                         }
                     }
                     switch (alt108) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:666:52: 'else' statement
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:666:52: 'else' statement
                             {
-                            match(input,76,FOLLOW_76_in_statement2431); if (failed) return ;
+                            match(input,76,FOLLOW_76_in_statement2431); if (state.failed) return ;
                             pushFollow(FOLLOW_statement_in_statement2433);
                             statement();
-                            _fsp--;
-                            if (failed) return ;
 
+                            state._fsp--;
+                            if (state.failed) return ;
+
                             }
                             break;
 
@@ -6894,63 +5922,70 @@
                     }
                     break;
                 case 4 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:667:7: 'for' '(' forControl ')' statement
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:667:7: 'for' '(' forControl ')' statement
                     {
-                    match(input,77,FOLLOW_77_in_statement2443); if (failed) return ;
-                    match(input,65,FOLLOW_65_in_statement2445); if (failed) return ;
+                    match(input,77,FOLLOW_77_in_statement2443); if (state.failed) return ;
+                    match(input,65,FOLLOW_65_in_statement2445); if (state.failed) return ;
                     pushFollow(FOLLOW_forControl_in_statement2447);
                     forControl();
-                    _fsp--;
-                    if (failed) return ;
-                    match(input,66,FOLLOW_66_in_statement2449); if (failed) return ;
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,66,FOLLOW_66_in_statement2449); if (state.failed) return ;
                     pushFollow(FOLLOW_statement_in_statement2451);
                     statement();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 5 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:668:7: 'while' parExpression statement
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:668:7: 'while' parExpression statement
                     {
-                    match(input,78,FOLLOW_78_in_statement2459); if (failed) return ;
+                    match(input,78,FOLLOW_78_in_statement2459); if (state.failed) return ;
                     pushFollow(FOLLOW_parExpression_in_statement2461);
                     parExpression();
-                    _fsp--;
-                    if (failed) return ;
+
+                    state._fsp--;
+                    if (state.failed) return ;
                     pushFollow(FOLLOW_statement_in_statement2463);
                     statement();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 6 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:669:7: 'do' statement 'while' parExpression ';'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:669:7: 'do' statement 'while' parExpression ';'
                     {
-                    match(input,79,FOLLOW_79_in_statement2471); if (failed) return ;
+                    match(input,79,FOLLOW_79_in_statement2471); if (state.failed) return ;
                     pushFollow(FOLLOW_statement_in_statement2473);
                     statement();
-                    _fsp--;
-                    if (failed) return ;
-                    match(input,78,FOLLOW_78_in_statement2475); if (failed) return ;
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,78,FOLLOW_78_in_statement2475); if (state.failed) return ;
                     pushFollow(FOLLOW_parExpression_in_statement2477);
                     parExpression();
-                    _fsp--;
-                    if (failed) return ;
-                    match(input,25,FOLLOW_25_in_statement2479); if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,25,FOLLOW_25_in_statement2479); if (state.failed) return ;
+
                     }
                     break;
                 case 7 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:670:7: 'try' block ( catches 'finally' block | catches | 'finally' block )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:670:7: 'try' block ( catches 'finally' block | catches | 'finally' block )
                     {
-                    match(input,80,FOLLOW_80_in_statement2487); if (failed) return ;
+                    match(input,80,FOLLOW_80_in_statement2487); if (state.failed) return ;
                     pushFollow(FOLLOW_block_in_statement2489);
                     block();
-                    _fsp--;
-                    if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:671:7: ( catches 'finally' block | catches | 'finally' block )
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:671:7: ( catches 'finally' block | catches | 'finally' block )
                     int alt109=3;
                     int LA109_0 = input.LA(1);
 
@@ -6960,24 +5995,24 @@
                         if ( (LA109_1==65) ) {
                             int LA109_3 = input.LA(3);
 
-                            if ( (synpred155()) ) {
+                            if ( (synpred155_Java()) ) {
                                 alt109=1;
                             }
-                            else if ( (synpred156()) ) {
+                            else if ( (synpred156_Java()) ) {
                                 alt109=2;
                             }
                             else {
-                                if (backtracking>0) {failed=true; return ;}
+                                if (state.backtracking>0) {state.failed=true; return ;}
                                 NoViableAltException nvae =
-                                    new NoViableAltException("671:7: ( catches 'finally' block | catches | 'finally' block )", 109, 3, input);
+                                    new NoViableAltException("", 109, 3, input);
 
                                 throw nvae;
                             }
                         }
                         else {
-                            if (backtracking>0) {failed=true; return ;}
+                            if (state.backtracking>0) {state.failed=true; return ;}
                             NoViableAltException nvae =
-                                new NoViableAltException("671:7: ( catches 'finally' block | catches | 'finally' block )", 109, 1, input);
+                                new NoViableAltException("", 109, 1, input);
 
                             throw nvae;
                         }
@@ -6986,47 +6021,51 @@
                         alt109=3;
                     }
                     else {
-                        if (backtracking>0) {failed=true; return ;}
+                        if (state.backtracking>0) {state.failed=true; return ;}
                         NoViableAltException nvae =
-                            new NoViableAltException("671:7: ( catches 'finally' block | catches | 'finally' block )", 109, 0, input);
+                            new NoViableAltException("", 109, 0, input);
 
                         throw nvae;
                     }
                     switch (alt109) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:671:9: catches 'finally' block
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:671:9: catches 'finally' block
                             {
                             pushFollow(FOLLOW_catches_in_statement2499);
                             catches();
-                            _fsp--;
-                            if (failed) return ;
-                            match(input,81,FOLLOW_81_in_statement2501); if (failed) return ;
+
+                            state._fsp--;
+                            if (state.failed) return ;
+                            match(input,81,FOLLOW_81_in_statement2501); if (state.failed) return ;
                             pushFollow(FOLLOW_block_in_statement2503);
                             block();
-                            _fsp--;
-                            if (failed) return ;
 
+                            state._fsp--;
+                            if (state.failed) return ;
+
                             }
                             break;
                         case 2 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:672:9: catches
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:672:9: catches
                             {
                             pushFollow(FOLLOW_catches_in_statement2513);
                             catches();
-                            _fsp--;
-                            if (failed) return ;
 
+                            state._fsp--;
+                            if (state.failed) return ;
+
                             }
                             break;
                         case 3 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:673:9: 'finally' block
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:673:9: 'finally' block
                             {
-                            match(input,81,FOLLOW_81_in_statement2523); if (failed) return ;
+                            match(input,81,FOLLOW_81_in_statement2523); if (state.failed) return ;
                             pushFollow(FOLLOW_block_in_statement2525);
                             block();
-                            _fsp--;
-                            if (failed) return ;
 
+                            state._fsp--;
+                            if (state.failed) return ;
+
                             }
                             break;
 
@@ -7036,83 +6075,85 @@
                     }
                     break;
                 case 8 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:675:7: 'switch' parExpression '{' switchBlockStatementGroups '}'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:675:7: 'switch' parExpression '{' switchBlockStatementGroups '}'
                     {
-                    match(input,82,FOLLOW_82_in_statement2541); if (failed) return ;
+                    match(input,82,FOLLOW_82_in_statement2541); if (state.failed) return ;
                     pushFollow(FOLLOW_parExpression_in_statement2543);
                     parExpression();
-                    _fsp--;
-                    if (failed) return ;
-                    match(input,37,FOLLOW_37_in_statement2545); if (failed) return ;
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,37,FOLLOW_37_in_statement2545); if (state.failed) return ;
                     pushFollow(FOLLOW_switchBlockStatementGroups_in_statement2547);
                     switchBlockStatementGroups();
-                    _fsp--;
-                    if (failed) return ;
-                    match(input,38,FOLLOW_38_in_statement2549); if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,38,FOLLOW_38_in_statement2549); if (state.failed) return ;
+
                     }
                     break;
                 case 9 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:676:7: 'synchronized' parExpression block
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:676:7: 'synchronized' parExpression block
                     {
-                    match(input,51,FOLLOW_51_in_statement2557); if (failed) return ;
+                    match(input,51,FOLLOW_51_in_statement2557); if (state.failed) return ;
                     pushFollow(FOLLOW_parExpression_in_statement2559);
                     parExpression();
-                    _fsp--;
-                    if (failed) return ;
+
+                    state._fsp--;
+                    if (state.failed) return ;
                     pushFollow(FOLLOW_block_in_statement2561);
                     block();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 10 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:677:7: 'return' ( expression )? ';'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:677:7: 'return' ( expression )? ';'
                     {
-                    match(input,83,FOLLOW_83_in_statement2569); if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:677:16: ( expression )?
+                    match(input,83,FOLLOW_83_in_statement2569); if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:677:16: ( expression )?
                     int alt110=2;
-                    int LA110_0 = input.LA(1);
-
-                    if ( (LA110_0==Identifier||(LA110_0>=FloatingPointLiteral && LA110_0<=DecimalLiteral)||LA110_0==33||LA110_0==40||(LA110_0>=55 && LA110_0<=62)||(LA110_0>=64 && LA110_0<=65)||(LA110_0>=68 && LA110_0<=70)||(LA110_0>=105 && LA110_0<=106)||(LA110_0>=109 && LA110_0<=114)) ) {
-                        alt110=1;
-                    }
+                    alt110 = dfa110.predict(input);
                     switch (alt110) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: expression
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: expression
                             {
                             pushFollow(FOLLOW_expression_in_statement2571);
                             expression();
-                            _fsp--;
-                            if (failed) return ;
 
+                            state._fsp--;
+                            if (state.failed) return ;
+
                             }
                             break;
 
                     }
 
-                    match(input,25,FOLLOW_25_in_statement2574); if (failed) return ;
+                    match(input,25,FOLLOW_25_in_statement2574); if (state.failed) return ;
 
                     }
                     break;
                 case 11 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:678:7: 'throw' expression ';'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:678:7: 'throw' expression ';'
                     {
-                    match(input,84,FOLLOW_84_in_statement2582); if (failed) return ;
+                    match(input,84,FOLLOW_84_in_statement2582); if (state.failed) return ;
                     pushFollow(FOLLOW_expression_in_statement2584);
                     expression();
-                    _fsp--;
-                    if (failed) return ;
-                    match(input,25,FOLLOW_25_in_statement2586); if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,25,FOLLOW_25_in_statement2586); if (state.failed) return ;
+
                     }
                     break;
                 case 12 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:679:7: 'break' ( Identifier )? ';'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:679:7: 'break' ( Identifier )? ';'
                     {
-                    match(input,85,FOLLOW_85_in_statement2594); if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:679:15: ( Identifier )?
+                    match(input,85,FOLLOW_85_in_statement2594); if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:679:15: ( Identifier )?
                     int alt111=2;
                     int LA111_0 = input.LA(1);
 
@@ -7121,24 +6162,24 @@
                     }
                     switch (alt111) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: Identifier
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: Identifier
                             {
-                            match(input,Identifier,FOLLOW_Identifier_in_statement2596); if (failed) return ;
+                            match(input,Identifier,FOLLOW_Identifier_in_statement2596); if (state.failed) return ;
 
                             }
                             break;
 
                     }
 
-                    match(input,25,FOLLOW_25_in_statement2599); if (failed) return ;
+                    match(input,25,FOLLOW_25_in_statement2599); if (state.failed) return ;
 
                     }
                     break;
                 case 13 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:680:7: 'continue' ( Identifier )? ';'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:680:7: 'continue' ( Identifier )? ';'
                     {
-                    match(input,86,FOLLOW_86_in_statement2607); if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:680:18: ( Identifier )?
+                    match(input,86,FOLLOW_86_in_statement2607); if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:680:18: ( Identifier )?
                     int alt112=2;
                     int LA112_0 = input.LA(1);
 
@@ -7147,57 +6188,60 @@
                     }
                     switch (alt112) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: Identifier
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: Identifier
                             {
-                            match(input,Identifier,FOLLOW_Identifier_in_statement2609); if (failed) return ;
+                            match(input,Identifier,FOLLOW_Identifier_in_statement2609); if (state.failed) return ;
 
                             }
                             break;
 
                     }
 
-                    match(input,25,FOLLOW_25_in_statement2612); if (failed) return ;
+                    match(input,25,FOLLOW_25_in_statement2612); if (state.failed) return ;
 
                     }
                     break;
                 case 14 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:682:7: modifyStatement
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:682:7: modifyStatement
                     {
                     pushFollow(FOLLOW_modifyStatement_in_statement2625);
                     modifyStatement();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 15 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:683:7: ';'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:683:7: ';'
                     {
-                    match(input,25,FOLLOW_25_in_statement2633); if (failed) return ;
+                    match(input,25,FOLLOW_25_in_statement2633); if (state.failed) return ;
 
                     }
                     break;
                 case 16 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:684:7: statementExpression ';'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:684:7: statementExpression ';'
                     {
                     pushFollow(FOLLOW_statementExpression_in_statement2641);
                     statementExpression();
-                    _fsp--;
-                    if (failed) return ;
-                    match(input,25,FOLLOW_25_in_statement2643); if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,25,FOLLOW_25_in_statement2643); if (state.failed) return ;
+
                     }
                     break;
                 case 17 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:685:7: Identifier ':' statement
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:685:7: Identifier ':' statement
                     {
-                    match(input,Identifier,FOLLOW_Identifier_in_statement2651); if (failed) return ;
-                    match(input,74,FOLLOW_74_in_statement2653); if (failed) return ;
+                    match(input,Identifier,FOLLOW_Identifier_in_statement2651); if (state.failed) return ;
+                    match(input,74,FOLLOW_74_in_statement2653); if (state.failed) return ;
                     pushFollow(FOLLOW_statement_in_statement2655);
                     statement();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -7208,66 +6252,63 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 83, statement_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 83, statement_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end statement
+    // $ANTLR end "statement"
 
 
-    // $ANTLR start modifyStatement
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:688:1: modifyStatement : s= 'modify' parExpression '{' (e= expression ( ',' e= expression )* )? c= '}' ;
+    // $ANTLR start "modifyStatement"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:688:1: modifyStatement : s= 'modify' parExpression '{' (e= expression ( ',' e= expression )* )? c= '}' ;
     public final void modifyStatement() throws RecognitionException {
         int modifyStatement_StartIndex = input.index();
         Token s=null;
         Token c=null;
-        expression_return e = null;
+        JavaParser.expression_return e = null;
 
-        parExpression_return parExpression3 = null;
+        JavaParser.parExpression_return parExpression3 = null;
 
 
 
         	    JavaModifyBlockDescr d = null;
         	
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 84) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:692:2: (s= 'modify' parExpression '{' (e= expression ( ',' e= expression )* )? c= '}' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:692:4: s= 'modify' parExpression '{' (e= expression ( ',' e= expression )* )? c= '}'
+            if ( state.backtracking>0 && alreadyParsedRule(input, 84) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:692:2: (s= 'modify' parExpression '{' (e= expression ( ',' e= expression )* )? c= '}' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:692:4: s= 'modify' parExpression '{' (e= expression ( ',' e= expression )* )? c= '}'
             {
-            s=(Token)input.LT(1);
-            match(input,87,FOLLOW_87_in_modifyStatement2675); if (failed) return ;
+            s=(Token)match(input,87,FOLLOW_87_in_modifyStatement2675); if (state.failed) return ;
             pushFollow(FOLLOW_parExpression_in_modifyStatement2677);
             parExpression3=parExpression();
-            _fsp--;
-            if (failed) return ;
-            if ( backtracking==0 ) {
 
-              	    d = new JavaModifyBlockDescr( input.toString(parExpression3.start,parExpression3.stop) );
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+
+              	    d = new JavaModifyBlockDescr( (parExpression3!=null?input.toString(parExpression3.start,parExpression3.stop):null) );
               	    d.setStart( ((CommonToken)s).getStartIndex() );
               	    this.modifyBlocks.add( d );
               	    
               	
             }
-            match(input,37,FOLLOW_37_in_modifyStatement2684); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:699:6: (e= expression ( ',' e= expression )* )?
+            match(input,37,FOLLOW_37_in_modifyStatement2684); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:699:6: (e= expression ( ',' e= expression )* )?
             int alt115=2;
-            int LA115_0 = input.LA(1);
-
-            if ( (LA115_0==Identifier||(LA115_0>=FloatingPointLiteral && LA115_0<=DecimalLiteral)||LA115_0==33||LA115_0==40||(LA115_0>=55 && LA115_0<=62)||(LA115_0>=64 && LA115_0<=65)||(LA115_0>=68 && LA115_0<=70)||(LA115_0>=105 && LA115_0<=106)||(LA115_0>=109 && LA115_0<=114)) ) {
-                alt115=1;
-            }
+            alt115 = dfa115.predict(input);
             switch (alt115) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:699:8: e= expression ( ',' e= expression )*
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:699:8: e= expression ( ',' e= expression )*
                     {
                     pushFollow(FOLLOW_expression_in_modifyStatement2692);
                     e=expression();
-                    _fsp--;
-                    if (failed) return ;
-                    if ( backtracking==0 ) {
-                       d.getExpressions().add( input.toString(e.start,e.stop) ); 
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       d.getExpressions().add( (e!=null?input.toString(e.start,e.stop):null) ); 
                     }
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:700:9: ( ',' e= expression )*
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:700:9: ( ',' e= expression )*
                     loop114:
                     do {
                         int alt114=2;
@@ -7280,15 +6321,16 @@
 
                         switch (alt114) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:700:10: ',' e= expression
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:700:10: ',' e= expression
                     	    {
-                    	    match(input,34,FOLLOW_34_in_modifyStatement2705); if (failed) return ;
+                    	    match(input,34,FOLLOW_34_in_modifyStatement2705); if (state.failed) return ;
                     	    pushFollow(FOLLOW_expression_in_modifyStatement2709);
                     	    e=expression();
-                    	    _fsp--;
-                    	    if (failed) return ;
-                    	    if ( backtracking==0 ) {
-                    	       d.getExpressions().add( input.toString(e.start,e.stop) ); 
+
+                    	    state._fsp--;
+                    	    if (state.failed) return ;
+                    	    if ( state.backtracking==0 ) {
+                    	       d.getExpressions().add( (e!=null?input.toString(e.start,e.stop):null) ); 
                     	    }
 
                     	    }
@@ -7305,9 +6347,8 @@
 
             }
 
-            c=(Token)input.LT(1);
-            match(input,38,FOLLOW_38_in_modifyStatement2728); if (failed) return ;
-            if ( backtracking==0 ) {
+            c=(Token)match(input,38,FOLLOW_38_in_modifyStatement2728); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
 
                           d.setEnd( ((CommonToken)c).getStopIndex() ); 
                       
@@ -7321,46 +6362,42 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 84, modifyStatement_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 84, modifyStatement_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end modifyStatement
+    // $ANTLR end "modifyStatement"
 
 
-    // $ANTLR start catches
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:708:1: catches : catchClause ( catchClause )* ;
+    // $ANTLR start "catches"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:708:1: catches : catchClause ( catchClause )* ;
     public final void catches() throws RecognitionException {
         int catches_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 85) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:709:2: ( catchClause ( catchClause )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:709:4: catchClause ( catchClause )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 85) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:709:2: ( catchClause ( catchClause )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:709:4: catchClause ( catchClause )*
             {
             pushFollow(FOLLOW_catchClause_in_catches2752);
             catchClause();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:709:16: ( catchClause )*
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:709:16: ( catchClause )*
             loop116:
             do {
                 int alt116=2;
-                int LA116_0 = input.LA(1);
-
-                if ( (LA116_0==88) ) {
-                    alt116=1;
-                }
-
-
+                alt116 = dfa116.predict(input);
                 switch (alt116) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:709:17: catchClause
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:709:17: catchClause
             	    {
             	    pushFollow(FOLLOW_catchClause_in_catches2755);
             	    catchClause();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -7378,34 +6415,36 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 85, catches_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 85, catches_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end catches
+    // $ANTLR end "catches"
 
 
-    // $ANTLR start catchClause
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:712:1: catchClause : 'catch' '(' formalParameter ')' block ;
+    // $ANTLR start "catchClause"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:712:1: catchClause : 'catch' '(' formalParameter ')' block ;
     public final void catchClause() throws RecognitionException {
         int catchClause_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 86) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:713:2: ( 'catch' '(' formalParameter ')' block )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:713:4: 'catch' '(' formalParameter ')' block
+            if ( state.backtracking>0 && alreadyParsedRule(input, 86) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:713:2: ( 'catch' '(' formalParameter ')' block )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:713:4: 'catch' '(' formalParameter ')' block
             {
-            match(input,88,FOLLOW_88_in_catchClause2769); if (failed) return ;
-            match(input,65,FOLLOW_65_in_catchClause2771); if (failed) return ;
+            match(input,88,FOLLOW_88_in_catchClause2769); if (state.failed) return ;
+            match(input,65,FOLLOW_65_in_catchClause2771); if (state.failed) return ;
             pushFollow(FOLLOW_formalParameter_in_catchClause2773);
             formalParameter();
-            _fsp--;
-            if (failed) return ;
-            match(input,66,FOLLOW_66_in_catchClause2775); if (failed) return ;
+
+            state._fsp--;
+            if (state.failed) return ;
+            match(input,66,FOLLOW_66_in_catchClause2775); if (state.failed) return ;
             pushFollow(FOLLOW_block_in_catchClause2777);
             block();
-            _fsp--;
-            if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+
             }
 
         }
@@ -7414,23 +6453,23 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 86, catchClause_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 86, catchClause_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end catchClause
+    // $ANTLR end "catchClause"
 
 
-    // $ANTLR start formalParameter
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:716:1: formalParameter : ( variableModifier )* type variableDeclaratorId ;
+    // $ANTLR start "formalParameter"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:716:1: formalParameter : ( variableModifier )* type variableDeclaratorId ;
     public final void formalParameter() throws RecognitionException {
         int formalParameter_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 87) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:717:2: ( ( variableModifier )* type variableDeclaratorId )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:717:4: ( variableModifier )* type variableDeclaratorId
+            if ( state.backtracking>0 && alreadyParsedRule(input, 87) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:717:2: ( ( variableModifier )* type variableDeclaratorId )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:717:4: ( variableModifier )* type variableDeclaratorId
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:717:4: ( variableModifier )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:717:4: ( variableModifier )*
             loop117:
             do {
                 int alt117=2;
@@ -7443,13 +6482,14 @@
 
                 switch (alt117) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: variableModifier
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: variableModifier
             	    {
             	    pushFollow(FOLLOW_variableModifier_in_formalParameter2788);
             	    variableModifier();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -7460,13 +6500,15 @@
 
             pushFollow(FOLLOW_type_in_formalParameter2791);
             type();
-            _fsp--;
-            if (failed) return ;
+
+            state._fsp--;
+            if (state.failed) return ;
             pushFollow(FOLLOW_variableDeclaratorId_in_formalParameter2793);
             variableDeclaratorId();
-            _fsp--;
-            if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+
             }
 
         }
@@ -7475,23 +6517,23 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 87, formalParameter_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 87, formalParameter_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end formalParameter
+    // $ANTLR end "formalParameter"
 
 
-    // $ANTLR start switchBlockStatementGroups
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:720:1: switchBlockStatementGroups : ( switchBlockStatementGroup )* ;
+    // $ANTLR start "switchBlockStatementGroups"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:720:1: switchBlockStatementGroups : ( switchBlockStatementGroup )* ;
     public final void switchBlockStatementGroups() throws RecognitionException {
         int switchBlockStatementGroups_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 88) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:721:2: ( ( switchBlockStatementGroup )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:721:4: ( switchBlockStatementGroup )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 88) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:721:2: ( ( switchBlockStatementGroup )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:721:4: ( switchBlockStatementGroup )*
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:721:4: ( switchBlockStatementGroup )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:721:4: ( switchBlockStatementGroup )*
             loop118:
             do {
                 int alt118=2;
@@ -7504,13 +6546,14 @@
 
                 switch (alt118) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:721:5: switchBlockStatementGroup
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:721:5: switchBlockStatementGroup
             	    {
             	    pushFollow(FOLLOW_switchBlockStatementGroup_in_switchBlockStatementGroups2807);
             	    switchBlockStatementGroup();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -7528,46 +6571,42 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 88, switchBlockStatementGroups_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 88, switchBlockStatementGroups_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end switchBlockStatementGroups
+    // $ANTLR end "switchBlockStatementGroups"
 
 
-    // $ANTLR start switchBlockStatementGroup
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:724:1: switchBlockStatementGroup : switchLabel ( blockStatement )* ;
+    // $ANTLR start "switchBlockStatementGroup"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:724:1: switchBlockStatementGroup : switchLabel ( blockStatement )* ;
     public final void switchBlockStatementGroup() throws RecognitionException {
         int switchBlockStatementGroup_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 89) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:725:2: ( switchLabel ( blockStatement )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:725:4: switchLabel ( blockStatement )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 89) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:725:2: ( switchLabel ( blockStatement )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:725:4: switchLabel ( blockStatement )*
             {
             pushFollow(FOLLOW_switchLabel_in_switchBlockStatementGroup2821);
             switchLabel();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:725:16: ( blockStatement )*
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:725:16: ( blockStatement )*
             loop119:
             do {
                 int alt119=2;
-                int LA119_0 = input.LA(1);
-
-                if ( ((LA119_0>=Identifier && LA119_0<=DecimalLiteral)||LA119_0==25||LA119_0==27||LA119_0==30||LA119_0==33||LA119_0==37||(LA119_0>=39 && LA119_0<=40)||(LA119_0>=45 && LA119_0<=62)||(LA119_0>=64 && LA119_0<=65)||(LA119_0>=68 && LA119_0<=71)||LA119_0==73||LA119_0==75||(LA119_0>=77 && LA119_0<=80)||(LA119_0>=82 && LA119_0<=87)||(LA119_0>=105 && LA119_0<=106)||(LA119_0>=109 && LA119_0<=114)) ) {
-                    alt119=1;
-                }
-
-
+                alt119 = dfa119.predict(input);
                 switch (alt119) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: blockStatement
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: blockStatement
             	    {
             	    pushFollow(FOLLOW_blockStatement_in_switchBlockStatementGroup2823);
             	    blockStatement();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -7585,94 +6624,54 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 89, switchBlockStatementGroup_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 89, switchBlockStatementGroup_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end switchBlockStatementGroup
+    // $ANTLR end "switchBlockStatementGroup"
 
 
-    // $ANTLR start switchLabel
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:728:1: switchLabel : ( 'case' constantExpression ':' | 'case' enumConstantName ':' | 'default' ':' );
+    // $ANTLR start "switchLabel"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:728:1: switchLabel : ( 'case' constantExpression ':' | 'case' enumConstantName ':' | 'default' ':' );
     public final void switchLabel() throws RecognitionException {
         int switchLabel_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 90) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:729:2: ( 'case' constantExpression ':' | 'case' enumConstantName ':' | 'default' ':' )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 90) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:729:2: ( 'case' constantExpression ':' | 'case' enumConstantName ':' | 'default' ':' )
             int alt120=3;
-            int LA120_0 = input.LA(1);
-
-            if ( (LA120_0==89) ) {
-                int LA120_1 = input.LA(2);
-
-                if ( ((LA120_1>=FloatingPointLiteral && LA120_1<=DecimalLiteral)||LA120_1==33||LA120_1==40||(LA120_1>=55 && LA120_1<=62)||(LA120_1>=64 && LA120_1<=65)||(LA120_1>=68 && LA120_1<=70)||(LA120_1>=105 && LA120_1<=106)||(LA120_1>=109 && LA120_1<=114)) ) {
-                    alt120=1;
-                }
-                else if ( (LA120_1==Identifier) ) {
-                    int LA120_20 = input.LA(3);
-
-                    if ( (synpred176()) ) {
-                        alt120=1;
-                    }
-                    else if ( (synpred177()) ) {
-                        alt120=2;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("728:1: switchLabel : ( 'case' constantExpression ':' | 'case' enumConstantName ':' | 'default' ':' );", 120, 20, input);
-
-                        throw nvae;
-                    }
-                }
-                else {
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("728:1: switchLabel : ( 'case' constantExpression ':' | 'case' enumConstantName ':' | 'default' ':' );", 120, 1, input);
-
-                    throw nvae;
-                }
-            }
-            else if ( (LA120_0==72) ) {
-                alt120=3;
-            }
-            else {
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("728:1: switchLabel : ( 'case' constantExpression ':' | 'case' enumConstantName ':' | 'default' ':' );", 120, 0, input);
-
-                throw nvae;
-            }
+            alt120 = dfa120.predict(input);
             switch (alt120) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:729:4: 'case' constantExpression ':'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:729:4: 'case' constantExpression ':'
                     {
-                    match(input,89,FOLLOW_89_in_switchLabel2836); if (failed) return ;
+                    match(input,89,FOLLOW_89_in_switchLabel2836); if (state.failed) return ;
                     pushFollow(FOLLOW_constantExpression_in_switchLabel2838);
                     constantExpression();
-                    _fsp--;
-                    if (failed) return ;
-                    match(input,74,FOLLOW_74_in_switchLabel2840); if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,74,FOLLOW_74_in_switchLabel2840); if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:730:6: 'case' enumConstantName ':'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:730:6: 'case' enumConstantName ':'
                     {
-                    match(input,89,FOLLOW_89_in_switchLabel2847); if (failed) return ;
+                    match(input,89,FOLLOW_89_in_switchLabel2847); if (state.failed) return ;
                     pushFollow(FOLLOW_enumConstantName_in_switchLabel2849);
                     enumConstantName();
-                    _fsp--;
-                    if (failed) return ;
-                    match(input,74,FOLLOW_74_in_switchLabel2851); if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,74,FOLLOW_74_in_switchLabel2851); if (state.failed) return ;
+
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:731:6: 'default' ':'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:731:6: 'default' ':'
                     {
-                    match(input,72,FOLLOW_72_in_switchLabel2858); if (failed) return ;
-                    match(input,74,FOLLOW_74_in_switchLabel2860); if (failed) return ;
+                    match(input,72,FOLLOW_72_in_switchLabel2858); if (state.failed) return ;
+                    match(input,74,FOLLOW_74_in_switchLabel2860); if (state.failed) return ;
 
                     }
                     break;
@@ -7684,23 +6683,23 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 90, switchLabel_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 90, switchLabel_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end switchLabel
+    // $ANTLR end "switchLabel"
 
 
-    // $ANTLR start moreStatementExpressions
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:734:1: moreStatementExpressions : ( ',' statementExpression )* ;
+    // $ANTLR start "moreStatementExpressions"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:734:1: moreStatementExpressions : ( ',' statementExpression )* ;
     public final void moreStatementExpressions() throws RecognitionException {
         int moreStatementExpressions_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 91) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:735:2: ( ( ',' statementExpression )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:735:4: ( ',' statementExpression )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 91) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:735:2: ( ( ',' statementExpression )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:735:4: ( ',' statementExpression )*
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:735:4: ( ',' statementExpression )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:735:4: ( ',' statementExpression )*
             loop121:
             do {
                 int alt121=2;
@@ -7713,14 +6712,15 @@
 
                 switch (alt121) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:735:5: ',' statementExpression
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:735:5: ',' statementExpression
             	    {
-            	    match(input,34,FOLLOW_34_in_moreStatementExpressions2873); if (failed) return ;
+            	    match(input,34,FOLLOW_34_in_moreStatementExpressions2873); if (state.failed) return ;
             	    pushFollow(FOLLOW_statementExpression_in_moreStatementExpressions2875);
             	    statementExpression();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -7738,865 +6738,88 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 91, moreStatementExpressions_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 91, moreStatementExpressions_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end moreStatementExpressions
+    // $ANTLR end "moreStatementExpressions"
 
 
-    // $ANTLR start forControl
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );
+    // $ANTLR start "forControl"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );
     public final void forControl() throws RecognitionException {
         int forControl_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 92) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:740:2: ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 92) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:740:2: ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? )
             int alt125=2;
-            switch ( input.LA(1) ) {
-            case 49:
-                {
-                switch ( input.LA(2) ) {
-                case Identifier:
-                    {
-                    switch ( input.LA(3) ) {
-                    case 33:
-                        {
-                        int LA125_60 = input.LA(4);
-
-                        if ( (synpred179()) ) {
-                            alt125=1;
-                        }
-                        else if ( (true) ) {
-                            alt125=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return ;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 60, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    case 28:
-                        {
-                        int LA125_61 = input.LA(4);
-
-                        if ( (synpred179()) ) {
-                            alt125=1;
-                        }
-                        else if ( (true) ) {
-                            alt125=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return ;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 61, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    case 41:
-                        {
-                        int LA125_62 = input.LA(4);
-
-                        if ( (synpred179()) ) {
-                            alt125=1;
-                        }
-                        else if ( (true) ) {
-                            alt125=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return ;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 62, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    case Identifier:
-                        {
-                        int LA125_63 = input.LA(4);
-
-                        if ( (synpred179()) ) {
-                            alt125=1;
-                        }
-                        else if ( (true) ) {
-                            alt125=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return ;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 63, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    default:
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 24, input);
-
-                        throw nvae;
-                    }
-
-                    }
-                    break;
-                case 55:
-                case 56:
-                case 57:
-                case 58:
-                case 59:
-                case 60:
-                case 61:
-                case 62:
-                    {
-                    int LA125_25 = input.LA(3);
-
-                    if ( (LA125_25==41) ) {
-                        int LA125_64 = input.LA(4);
-
-                        if ( (synpred179()) ) {
-                            alt125=1;
-                        }
-                        else if ( (true) ) {
-                            alt125=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return ;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 64, input);
-
-                            throw nvae;
-                        }
-                    }
-                    else if ( (LA125_25==Identifier) ) {
-                        int LA125_65 = input.LA(4);
-
-                        if ( (synpred179()) ) {
-                            alt125=1;
-                        }
-                        else if ( (true) ) {
-                            alt125=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return ;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 65, input);
-
-                            throw nvae;
-                        }
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 25, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case 49:
-                    {
-                    switch ( input.LA(3) ) {
-                    case Identifier:
-                        {
-                        int LA125_66 = input.LA(4);
-
-                        if ( (synpred179()) ) {
-                            alt125=1;
-                        }
-                        else if ( (true) ) {
-                            alt125=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return ;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 66, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    case 55:
-                    case 56:
-                    case 57:
-                    case 58:
-                    case 59:
-                    case 60:
-                    case 61:
-                    case 62:
-                        {
-                        int LA125_67 = input.LA(4);
-
-                        if ( (synpred179()) ) {
-                            alt125=1;
-                        }
-                        else if ( (true) ) {
-                            alt125=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return ;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 67, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    case 49:
-                        {
-                        int LA125_68 = input.LA(4);
-
-                        if ( (synpred179()) ) {
-                            alt125=1;
-                        }
-                        else if ( (true) ) {
-                            alt125=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return ;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 68, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    case 71:
-                        {
-                        int LA125_69 = input.LA(4);
-
-                        if ( (synpred179()) ) {
-                            alt125=1;
-                        }
-                        else if ( (true) ) {
-                            alt125=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return ;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 69, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    default:
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 26, input);
-
-                        throw nvae;
-                    }
-
-                    }
-                    break;
-                case 71:
-                    {
-                    int LA125_27 = input.LA(3);
-
-                    if ( (LA125_27==Identifier) ) {
-                        int LA125_70 = input.LA(4);
-
-                        if ( (synpred179()) ) {
-                            alt125=1;
-                        }
-                        else if ( (true) ) {
-                            alt125=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return ;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 70, input);
-
-                            throw nvae;
-                        }
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 27, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                default:
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 1, input);
-
-                    throw nvae;
-                }
-
-                }
-                break;
-            case 71:
-                {
-                int LA125_2 = input.LA(2);
-
-                if ( (LA125_2==Identifier) ) {
-                    switch ( input.LA(3) ) {
-                    case 28:
-                        {
-                        int LA125_71 = input.LA(4);
-
-                        if ( (synpred179()) ) {
-                            alt125=1;
-                        }
-                        else if ( (true) ) {
-                            alt125=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return ;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 71, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    case 65:
-                        {
-                        int LA125_72 = input.LA(4);
-
-                        if ( (synpred179()) ) {
-                            alt125=1;
-                        }
-                        else if ( (true) ) {
-                            alt125=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return ;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 72, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    case Identifier:
-                        {
-                        int LA125_73 = input.LA(4);
-
-                        if ( (synpred179()) ) {
-                            alt125=1;
-                        }
-                        else if ( (true) ) {
-                            alt125=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return ;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 73, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    case 55:
-                    case 56:
-                    case 57:
-                    case 58:
-                    case 59:
-                    case 60:
-                    case 61:
-                    case 62:
-                        {
-                        int LA125_74 = input.LA(4);
-
-                        if ( (synpred179()) ) {
-                            alt125=1;
-                        }
-                        else if ( (true) ) {
-                            alt125=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return ;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 74, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    case 49:
-                        {
-                        int LA125_75 = input.LA(4);
-
-                        if ( (synpred179()) ) {
-                            alt125=1;
-                        }
-                        else if ( (true) ) {
-                            alt125=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return ;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 75, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    case 71:
-                        {
-                        int LA125_76 = input.LA(4);
-
-                        if ( (synpred179()) ) {
-                            alt125=1;
-                        }
-                        else if ( (true) ) {
-                            alt125=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return ;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 76, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    default:
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 28, input);
-
-                        throw nvae;
-                    }
-
-                }
-                else {
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 2, input);
-
-                    throw nvae;
-                }
-                }
-                break;
-            case Identifier:
-                {
-                switch ( input.LA(2) ) {
-                case 28:
-                    {
-                    int LA125_29 = input.LA(3);
-
-                    if ( (LA125_29==30||LA125_29==33||LA125_29==64||(LA125_29>=113 && LA125_29<=114)) ) {
-                        alt125=2;
-                    }
-                    else if ( (LA125_29==Identifier) ) {
-                        int LA125_79 = input.LA(4);
-
-                        if ( (synpred179()) ) {
-                            alt125=1;
-                        }
-                        else if ( (true) ) {
-                            alt125=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return ;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 79, input);
-
-                            throw nvae;
-                        }
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 29, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case 41:
-                    {
-                    int LA125_30 = input.LA(3);
-
-                    if ( (LA125_30==42) ) {
-                        int LA125_83 = input.LA(4);
-
-                        if ( (synpred179()) ) {
-                            alt125=1;
-                        }
-                        else if ( (true) ) {
-                            alt125=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return ;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 83, input);
-
-                            throw nvae;
-                        }
-                    }
-                    else if ( (LA125_30==Identifier||(LA125_30>=FloatingPointLiteral && LA125_30<=DecimalLiteral)||LA125_30==33||LA125_30==40||(LA125_30>=55 && LA125_30<=62)||(LA125_30>=64 && LA125_30<=65)||(LA125_30>=68 && LA125_30<=70)||(LA125_30>=105 && LA125_30<=106)||(LA125_30>=109 && LA125_30<=114)) ) {
-                        alt125=2;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 30, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case 25:
-                case 29:
-                case 34:
-                case 35:
-                case 36:
-                case 44:
-                case 63:
-                case 65:
-                case 90:
-                case 91:
-                case 92:
-                case 93:
-                case 94:
-                case 95:
-                case 96:
-                case 97:
-                case 98:
-                case 99:
-                case 100:
-                case 101:
-                case 102:
-                case 103:
-                case 104:
-                case 105:
-                case 106:
-                case 107:
-                case 108:
-                case 109:
-                case 110:
-                    {
-                    alt125=2;
-                    }
-                    break;
-                case 33:
-                    {
-                    switch ( input.LA(3) ) {
-                    case FloatingPointLiteral:
-                    case CharacterLiteral:
-                    case StringLiteral:
-                    case HexLiteral:
-                    case OctalLiteral:
-                    case DecimalLiteral:
-                    case 33:
-                    case 40:
-                    case 44:
-                    case 64:
-                    case 65:
-                    case 68:
-                    case 69:
-                    case 70:
-                    case 105:
-                    case 106:
-                    case 109:
-                    case 110:
-                    case 111:
-                    case 112:
-                    case 113:
-                    case 114:
-                        {
-                        alt125=2;
-                        }
-                        break;
-                    case Identifier:
-                        {
-                        int LA125_106 = input.LA(4);
-
-                        if ( (synpred179()) ) {
-                            alt125=1;
-                        }
-                        else if ( (true) ) {
-                            alt125=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return ;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 106, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    case 55:
-                    case 56:
-                    case 57:
-                    case 58:
-                    case 59:
-                    case 60:
-                    case 61:
-                    case 62:
-                        {
-                        int LA125_107 = input.LA(4);
-
-                        if ( (synpred179()) ) {
-                            alt125=1;
-                        }
-                        else if ( (true) ) {
-                            alt125=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return ;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 107, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    case 63:
-                        {
-                        int LA125_108 = input.LA(4);
-
-                        if ( (synpred179()) ) {
-                            alt125=1;
-                        }
-                        else if ( (true) ) {
-                            alt125=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return ;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 108, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    default:
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 35, input);
-
-                        throw nvae;
-                    }
-
-                    }
-                    break;
-                case Identifier:
-                    {
-                    int LA125_56 = input.LA(3);
-
-                    if ( (LA125_56==74) ) {
-                        alt125=1;
-                    }
-                    else if ( (LA125_56==25||LA125_56==34||LA125_56==41||LA125_56==44) ) {
-                        alt125=2;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 56, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                default:
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 3, input);
-
-                    throw nvae;
-                }
-
-                }
-                break;
-            case 55:
-            case 56:
-            case 57:
-            case 58:
-            case 59:
-            case 60:
-            case 61:
-            case 62:
-                {
-                switch ( input.LA(2) ) {
-                case 41:
-                    {
-                    int LA125_57 = input.LA(3);
-
-                    if ( (LA125_57==42) ) {
-                        int LA125_131 = input.LA(4);
-
-                        if ( (synpred179()) ) {
-                            alt125=1;
-                        }
-                        else if ( (true) ) {
-                            alt125=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return ;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 131, input);
-
-                            throw nvae;
-                        }
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 57, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case 28:
-                    {
-                    alt125=2;
-                    }
-                    break;
-                case Identifier:
-                    {
-                    int LA125_59 = input.LA(3);
-
-                    if ( (LA125_59==74) ) {
-                        alt125=1;
-                    }
-                    else if ( (LA125_59==25||LA125_59==34||LA125_59==41||LA125_59==44) ) {
-                        alt125=2;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 59, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                default:
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 4, input);
-
-                    throw nvae;
-                }
-
-                }
-                break;
-            case FloatingPointLiteral:
-            case CharacterLiteral:
-            case StringLiteral:
-            case HexLiteral:
-            case OctalLiteral:
-            case DecimalLiteral:
-            case 25:
-            case 33:
-            case 40:
-            case 64:
-            case 65:
-            case 68:
-            case 69:
-            case 70:
-            case 105:
-            case 106:
-            case 109:
-            case 110:
-            case 111:
-            case 112:
-            case 113:
-            case 114:
-                {
-                alt125=2;
-                }
-                break;
-            default:
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );", 125, 0, input);
-
-                throw nvae;
-            }
-
+            alt125 = dfa125.predict(input);
             switch (alt125) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:740:4: forVarControl
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:740:4: forVarControl
                     {
                     pushFollow(FOLLOW_forVarControl_in_forControl2896);
                     forVarControl();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:741:4: ( forInit )? ';' ( expression )? ';' ( forUpdate )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:741:4: ( forInit )? ';' ( expression )? ';' ( forUpdate )?
                     {
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:741:4: ( forInit )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:741:4: ( forInit )?
                     int alt122=2;
-                    int LA122_0 = input.LA(1);
-
-                    if ( (LA122_0==Identifier||(LA122_0>=FloatingPointLiteral && LA122_0<=DecimalLiteral)||LA122_0==33||LA122_0==40||LA122_0==49||(LA122_0>=55 && LA122_0<=62)||(LA122_0>=64 && LA122_0<=65)||(LA122_0>=68 && LA122_0<=71)||(LA122_0>=105 && LA122_0<=106)||(LA122_0>=109 && LA122_0<=114)) ) {
-                        alt122=1;
-                    }
+                    alt122 = dfa122.predict(input);
                     switch (alt122) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: forInit
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: forInit
                             {
                             pushFollow(FOLLOW_forInit_in_forControl2901);
                             forInit();
-                            _fsp--;
-                            if (failed) return ;
 
+                            state._fsp--;
+                            if (state.failed) return ;
+
                             }
                             break;
 
                     }
 
-                    match(input,25,FOLLOW_25_in_forControl2904); if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:741:17: ( expression )?
+                    match(input,25,FOLLOW_25_in_forControl2904); if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:741:17: ( expression )?
                     int alt123=2;
-                    int LA123_0 = input.LA(1);
-
-                    if ( (LA123_0==Identifier||(LA123_0>=FloatingPointLiteral && LA123_0<=DecimalLiteral)||LA123_0==33||LA123_0==40||(LA123_0>=55 && LA123_0<=62)||(LA123_0>=64 && LA123_0<=65)||(LA123_0>=68 && LA123_0<=70)||(LA123_0>=105 && LA123_0<=106)||(LA123_0>=109 && LA123_0<=114)) ) {
-                        alt123=1;
-                    }
+                    alt123 = dfa123.predict(input);
                     switch (alt123) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: expression
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: expression
                             {
                             pushFollow(FOLLOW_expression_in_forControl2906);
                             expression();
-                            _fsp--;
-                            if (failed) return ;
 
+                            state._fsp--;
+                            if (state.failed) return ;
+
                             }
                             break;
 
                     }
 
-                    match(input,25,FOLLOW_25_in_forControl2909); if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:741:33: ( forUpdate )?
+                    match(input,25,FOLLOW_25_in_forControl2909); if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:741:33: ( forUpdate )?
                     int alt124=2;
-                    int LA124_0 = input.LA(1);
-
-                    if ( (LA124_0==Identifier||(LA124_0>=FloatingPointLiteral && LA124_0<=DecimalLiteral)||LA124_0==33||LA124_0==40||(LA124_0>=55 && LA124_0<=62)||(LA124_0>=64 && LA124_0<=65)||(LA124_0>=68 && LA124_0<=70)||(LA124_0>=105 && LA124_0<=106)||(LA124_0>=109 && LA124_0<=114)) ) {
-                        alt124=1;
-                    }
+                    alt124 = dfa124.predict(input);
                     switch (alt124) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: forUpdate
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: forUpdate
                             {
                             pushFollow(FOLLOW_forUpdate_in_forControl2911);
                             forUpdate();
-                            _fsp--;
-                            if (failed) return ;
 
+                            state._fsp--;
+                            if (state.failed) return ;
+
                             }
                             break;
 
@@ -8613,227 +6836,30 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 92, forControl_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 92, forControl_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end forControl
+    // $ANTLR end "forControl"
 
 
-    // $ANTLR start forInit
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:744:1: forInit : ( ( variableModifier )* type variableDeclarators | expressionList );
+    // $ANTLR start "forInit"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:744:1: forInit : ( ( variableModifier )* type variableDeclarators | expressionList );
     public final void forInit() throws RecognitionException {
         int forInit_StartIndex = input.index();
 
                     this.localVariableLevel++;
                 
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 93) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:751:2: ( ( variableModifier )* type variableDeclarators | expressionList )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 93) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:751:2: ( ( variableModifier )* type variableDeclarators | expressionList )
             int alt127=2;
-            switch ( input.LA(1) ) {
-            case 49:
-            case 71:
-                {
-                alt127=1;
-                }
-                break;
-            case Identifier:
-                {
-                switch ( input.LA(2) ) {
-                case 28:
-                    {
-                    int LA127_23 = input.LA(3);
-
-                    if ( (synpred184()) ) {
-                        alt127=1;
-                    }
-                    else if ( (true) ) {
-                        alt127=2;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("744:1: forInit : ( ( variableModifier )* type variableDeclarators | expressionList );", 127, 23, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case 41:
-                    {
-                    int LA127_24 = input.LA(3);
-
-                    if ( (synpred184()) ) {
-                        alt127=1;
-                    }
-                    else if ( (true) ) {
-                        alt127=2;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("744:1: forInit : ( ( variableModifier )* type variableDeclarators | expressionList );", 127, 24, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case EOF:
-                case 25:
-                case 29:
-                case 34:
-                case 35:
-                case 36:
-                case 44:
-                case 63:
-                case 65:
-                case 90:
-                case 91:
-                case 92:
-                case 93:
-                case 94:
-                case 95:
-                case 96:
-                case 97:
-                case 98:
-                case 99:
-                case 100:
-                case 101:
-                case 102:
-                case 103:
-                case 104:
-                case 105:
-                case 106:
-                case 107:
-                case 108:
-                case 109:
-                case 110:
-                    {
-                    alt127=2;
-                    }
-                    break;
-                case 33:
-                    {
-                    int LA127_29 = input.LA(3);
-
-                    if ( (synpred184()) ) {
-                        alt127=1;
-                    }
-                    else if ( (true) ) {
-                        alt127=2;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("744:1: forInit : ( ( variableModifier )* type variableDeclarators | expressionList );", 127, 29, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case Identifier:
-                    {
-                    alt127=1;
-                    }
-                    break;
-                default:
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("744:1: forInit : ( ( variableModifier )* type variableDeclarators | expressionList );", 127, 3, input);
-
-                    throw nvae;
-                }
-
-                }
-                break;
-            case 55:
-            case 56:
-            case 57:
-            case 58:
-            case 59:
-            case 60:
-            case 61:
-            case 62:
-                {
-                switch ( input.LA(2) ) {
-                case 41:
-                    {
-                    int LA127_52 = input.LA(3);
-
-                    if ( (synpred184()) ) {
-                        alt127=1;
-                    }
-                    else if ( (true) ) {
-                        alt127=2;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("744:1: forInit : ( ( variableModifier )* type variableDeclarators | expressionList );", 127, 52, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case Identifier:
-                    {
-                    alt127=1;
-                    }
-                    break;
-                case 28:
-                    {
-                    alt127=2;
-                    }
-                    break;
-                default:
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("744:1: forInit : ( ( variableModifier )* type variableDeclarators | expressionList );", 127, 4, input);
-
-                    throw nvae;
-                }
-
-                }
-                break;
-            case FloatingPointLiteral:
-            case CharacterLiteral:
-            case StringLiteral:
-            case HexLiteral:
-            case OctalLiteral:
-            case DecimalLiteral:
-            case 33:
-            case 40:
-            case 64:
-            case 65:
-            case 68:
-            case 69:
-            case 70:
-            case 105:
-            case 106:
-            case 109:
-            case 110:
-            case 111:
-            case 112:
-            case 113:
-            case 114:
-                {
-                alt127=2;
-                }
-                break;
-            default:
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("744:1: forInit : ( ( variableModifier )* type variableDeclarators | expressionList );", 127, 0, input);
-
-                throw nvae;
-            }
-
+            alt127 = dfa127.predict(input);
             switch (alt127) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:751:4: ( variableModifier )* type variableDeclarators
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:751:4: ( variableModifier )* type variableDeclarators
                     {
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:751:4: ( variableModifier )*
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:751:4: ( variableModifier )*
                     loop126:
                     do {
                         int alt126=2;
@@ -8846,13 +6872,14 @@
 
                         switch (alt126) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: variableModifier
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: variableModifier
                     	    {
                     	    pushFollow(FOLLOW_variableModifier_in_forInit2949);
                     	    variableModifier();
-                    	    _fsp--;
-                    	    if (failed) return ;
 
+                    	    state._fsp--;
+                    	    if (state.failed) return ;
+
                     	    }
                     	    break;
 
@@ -8863,28 +6890,31 @@
 
                     pushFollow(FOLLOW_type_in_forInit2952);
                     type();
-                    _fsp--;
-                    if (failed) return ;
+
+                    state._fsp--;
+                    if (state.failed) return ;
                     pushFollow(FOLLOW_variableDeclarators_in_forInit2954);
                     variableDeclarators();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:752:4: expressionList
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:752:4: expressionList
                     {
                     pushFollow(FOLLOW_expressionList_in_forInit2959);
                     expressionList();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
 
                           this.localVariableLevel--;
                       
@@ -8895,23 +6925,23 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 93, forInit_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 93, forInit_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end forInit
+    // $ANTLR end "forInit"
 
 
-    // $ANTLR start forVarControl
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:755:1: forVarControl : ( variableModifier )* type Identifier ':' expression ;
+    // $ANTLR start "forVarControl"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:755:1: forVarControl : ( variableModifier )* type Identifier ':' expression ;
     public final void forVarControl() throws RecognitionException {
         int forVarControl_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 94) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:756:2: ( ( variableModifier )* type Identifier ':' expression )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:756:4: ( variableModifier )* type Identifier ':' expression
+            if ( state.backtracking>0 && alreadyParsedRule(input, 94) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:756:2: ( ( variableModifier )* type Identifier ':' expression )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:756:4: ( variableModifier )* type Identifier ':' expression
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:756:4: ( variableModifier )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:756:4: ( variableModifier )*
             loop128:
             do {
                 int alt128=2;
@@ -8924,13 +6954,14 @@
 
                 switch (alt128) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: variableModifier
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: variableModifier
             	    {
             	    pushFollow(FOLLOW_variableModifier_in_forVarControl2971);
             	    variableModifier();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -8941,15 +6972,17 @@
 
             pushFollow(FOLLOW_type_in_forVarControl2974);
             type();
-            _fsp--;
-            if (failed) return ;
-            match(input,Identifier,FOLLOW_Identifier_in_forVarControl2976); if (failed) return ;
-            match(input,74,FOLLOW_74_in_forVarControl2978); if (failed) return ;
+
+            state._fsp--;
+            if (state.failed) return ;
+            match(input,Identifier,FOLLOW_Identifier_in_forVarControl2976); if (state.failed) return ;
+            match(input,74,FOLLOW_74_in_forVarControl2978); if (state.failed) return ;
             pushFollow(FOLLOW_expression_in_forVarControl2980);
             expression();
-            _fsp--;
-            if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+
             }
 
         }
@@ -8958,27 +6991,28 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 94, forVarControl_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 94, forVarControl_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end forVarControl
+    // $ANTLR end "forVarControl"
 
 
-    // $ANTLR start forUpdate
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:759:1: forUpdate : expressionList ;
+    // $ANTLR start "forUpdate"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:759:1: forUpdate : expressionList ;
     public final void forUpdate() throws RecognitionException {
         int forUpdate_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 95) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:760:2: ( expressionList )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:760:4: expressionList
+            if ( state.backtracking>0 && alreadyParsedRule(input, 95) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:760:2: ( expressionList )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:760:4: expressionList
             {
             pushFollow(FOLLOW_expressionList_in_forUpdate2991);
             expressionList();
-            _fsp--;
-            if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+
             }
 
         }
@@ -8987,33 +7021,34 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 95, forUpdate_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 95, forUpdate_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end forUpdate
+    // $ANTLR end "forUpdate"
 
     public static class parExpression_return extends ParserRuleReturnScope {
     };
 
-    // $ANTLR start parExpression
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:765:1: parExpression : '(' expression ')' ;
-    public final parExpression_return parExpression() throws RecognitionException {
-        parExpression_return retval = new parExpression_return();
+    // $ANTLR start "parExpression"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:765:1: parExpression : '(' expression ')' ;
+    public final JavaParser.parExpression_return parExpression() throws RecognitionException {
+        JavaParser.parExpression_return retval = new JavaParser.parExpression_return();
         retval.start = input.LT(1);
         int parExpression_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 96) ) { return retval; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:766:2: ( '(' expression ')' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:766:4: '(' expression ')'
+            if ( state.backtracking>0 && alreadyParsedRule(input, 96) ) { return retval; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:766:2: ( '(' expression ')' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:766:4: '(' expression ')'
             {
-            match(input,65,FOLLOW_65_in_parExpression3004); if (failed) return retval;
+            match(input,65,FOLLOW_65_in_parExpression3004); if (state.failed) return retval;
             pushFollow(FOLLOW_expression_in_parExpression3006);
             expression();
-            _fsp--;
-            if (failed) return retval;
-            match(input,66,FOLLOW_66_in_parExpression3008); if (failed) return retval;
 
+            state._fsp--;
+            if (state.failed) return retval;
+            match(input,66,FOLLOW_66_in_parExpression3008); if (state.failed) return retval;
+
             }
 
             retval.stop = input.LT(-1);
@@ -9024,27 +7059,28 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 96, parExpression_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 96, parExpression_StartIndex); }
         }
         return retval;
     }
-    // $ANTLR end parExpression
+    // $ANTLR end "parExpression"
 
 
-    // $ANTLR start expressionList
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:769:1: expressionList : expression ( ',' expression )* ;
+    // $ANTLR start "expressionList"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:769:1: expressionList : expression ( ',' expression )* ;
     public final void expressionList() throws RecognitionException {
         int expressionList_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 97) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:770:5: ( expression ( ',' expression )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:770:9: expression ( ',' expression )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 97) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:770:5: ( expression ( ',' expression )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:770:9: expression ( ',' expression )*
             {
             pushFollow(FOLLOW_expression_in_expressionList3025);
             expression();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:770:20: ( ',' expression )*
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:770:20: ( ',' expression )*
             loop129:
             do {
                 int alt129=2;
@@ -9057,14 +7093,15 @@
 
                 switch (alt129) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:770:21: ',' expression
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:770:21: ',' expression
             	    {
-            	    match(input,34,FOLLOW_34_in_expressionList3028); if (failed) return ;
+            	    match(input,34,FOLLOW_34_in_expressionList3028); if (state.failed) return ;
             	    pushFollow(FOLLOW_expression_in_expressionList3030);
             	    expression();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -9082,27 +7119,28 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 97, expressionList_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 97, expressionList_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end expressionList
+    // $ANTLR end "expressionList"
 
 
-    // $ANTLR start statementExpression
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:773:1: statementExpression : expression ;
+    // $ANTLR start "statementExpression"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:773:1: statementExpression : expression ;
     public final void statementExpression() throws RecognitionException {
         int statementExpression_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 98) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:774:2: ( expression )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:774:4: expression
+            if ( state.backtracking>0 && alreadyParsedRule(input, 98) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:774:2: ( expression )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:774:4: expression
             {
             pushFollow(FOLLOW_expression_in_statementExpression3046);
             expression();
-            _fsp--;
-            if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+
             }
 
         }
@@ -9111,27 +7149,28 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 98, statementExpression_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 98, statementExpression_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end statementExpression
+    // $ANTLR end "statementExpression"
 
 
-    // $ANTLR start constantExpression
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:777:1: constantExpression : expression ;
+    // $ANTLR start "constantExpression"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:777:1: constantExpression : expression ;
     public final void constantExpression() throws RecognitionException {
         int constantExpression_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 99) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:778:2: ( expression )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:778:4: expression
+            if ( state.backtracking>0 && alreadyParsedRule(input, 99) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:778:2: ( expression )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:778:4: expression
             {
             pushFollow(FOLLOW_expression_in_constantExpression3058);
             expression();
-            _fsp--;
-            if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+
             }
 
         }
@@ -9140,147 +7179,49 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 99, constantExpression_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 99, constantExpression_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end constantExpression
+    // $ANTLR end "constantExpression"
 
     public static class expression_return extends ParserRuleReturnScope {
     };
 
-    // $ANTLR start expression
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:781:1: expression : conditionalExpression ( assignmentOperator expression )? ;
-    public final expression_return expression() throws RecognitionException {
-        expression_return retval = new expression_return();
+    // $ANTLR start "expression"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:781:1: expression : conditionalExpression ( assignmentOperator expression )? ;
+    public final JavaParser.expression_return expression() throws RecognitionException {
+        JavaParser.expression_return retval = new JavaParser.expression_return();
         retval.start = input.LT(1);
         int expression_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 100) ) { return retval; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:782:2: ( conditionalExpression ( assignmentOperator expression )? )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:782:4: conditionalExpression ( assignmentOperator expression )?
+            if ( state.backtracking>0 && alreadyParsedRule(input, 100) ) { return retval; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:782:2: ( conditionalExpression ( assignmentOperator expression )? )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:782:4: conditionalExpression ( assignmentOperator expression )?
             {
             pushFollow(FOLLOW_conditionalExpression_in_expression3070);
             conditionalExpression();
-            _fsp--;
-            if (failed) return retval;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:782:26: ( assignmentOperator expression )?
+
+            state._fsp--;
+            if (state.failed) return retval;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:782:26: ( assignmentOperator expression )?
             int alt130=2;
-            switch ( input.LA(1) ) {
-                case 44:
-                    {
-                    int LA130_1 = input.LA(2);
-
-                    if ( (synpred187()) ) {
-                        alt130=1;
-                    }
-                    }
-                    break;
-                case 90:
-                    {
-                    int LA130_2 = input.LA(2);
-
-                    if ( (synpred187()) ) {
-                        alt130=1;
-                    }
-                    }
-                    break;
-                case 91:
-                    {
-                    int LA130_3 = input.LA(2);
-
-                    if ( (synpred187()) ) {
-                        alt130=1;
-                    }
-                    }
-                    break;
-                case 92:
-                    {
-                    int LA130_4 = input.LA(2);
-
-                    if ( (synpred187()) ) {
-                        alt130=1;
-                    }
-                    }
-                    break;
-                case 93:
-                    {
-                    int LA130_5 = input.LA(2);
-
-                    if ( (synpred187()) ) {
-                        alt130=1;
-                    }
-                    }
-                    break;
-                case 94:
-                    {
-                    int LA130_6 = input.LA(2);
-
-                    if ( (synpred187()) ) {
-                        alt130=1;
-                    }
-                    }
-                    break;
-                case 95:
-                    {
-                    int LA130_7 = input.LA(2);
-
-                    if ( (synpred187()) ) {
-                        alt130=1;
-                    }
-                    }
-                    break;
-                case 96:
-                    {
-                    int LA130_8 = input.LA(2);
-
-                    if ( (synpred187()) ) {
-                        alt130=1;
-                    }
-                    }
-                    break;
-                case 97:
-                    {
-                    int LA130_9 = input.LA(2);
-
-                    if ( (synpred187()) ) {
-                        alt130=1;
-                    }
-                    }
-                    break;
-                case 33:
-                    {
-                    int LA130_10 = input.LA(2);
-
-                    if ( (synpred187()) ) {
-                        alt130=1;
-                    }
-                    }
-                    break;
-                case 35:
-                    {
-                    int LA130_11 = input.LA(2);
-
-                    if ( (synpred187()) ) {
-                        alt130=1;
-                    }
-                    }
-                    break;
-            }
-
+            alt130 = dfa130.predict(input);
             switch (alt130) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:782:27: assignmentOperator expression
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:782:27: assignmentOperator expression
                     {
                     pushFollow(FOLLOW_assignmentOperator_in_expression3073);
                     assignmentOperator();
-                    _fsp--;
-                    if (failed) return retval;
+
+                    state._fsp--;
+                    if (state.failed) return retval;
                     pushFollow(FOLLOW_expression_in_expression3075);
                     expression();
-                    _fsp--;
-                    if (failed) return retval;
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+
                     }
                     break;
 
@@ -9297,199 +7238,111 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 100, expression_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 100, expression_StartIndex); }
         }
         return retval;
     }
-    // $ANTLR end expression
+    // $ANTLR end "expression"
 
 
-    // $ANTLR start assignmentOperator
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:785:1: assignmentOperator : ( '=' | '+=' | '-=' | '*=' | '/=' | '&=' | '|=' | '^=' | '%=' | '<' '<' '=' | '>' '>' '=' | '>' '>' '>' '=' );
+    // $ANTLR start "assignmentOperator"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:785:1: assignmentOperator : ( '=' | '+=' | '-=' | '*=' | '/=' | '&=' | '|=' | '^=' | '%=' | '<' '<' '=' | '>' '>' '=' | '>' '>' '>' '=' );
     public final void assignmentOperator() throws RecognitionException {
         int assignmentOperator_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 101) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:786:2: ( '=' | '+=' | '-=' | '*=' | '/=' | '&=' | '|=' | '^=' | '%=' | '<' '<' '=' | '>' '>' '=' | '>' '>' '>' '=' )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 101) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:786:2: ( '=' | '+=' | '-=' | '*=' | '/=' | '&=' | '|=' | '^=' | '%=' | '<' '<' '=' | '>' '>' '=' | '>' '>' '>' '=' )
             int alt131=12;
-            switch ( input.LA(1) ) {
-            case 44:
-                {
-                alt131=1;
-                }
-                break;
-            case 90:
-                {
-                alt131=2;
-                }
-                break;
-            case 91:
-                {
-                alt131=3;
-                }
-                break;
-            case 92:
-                {
-                alt131=4;
-                }
-                break;
-            case 93:
-                {
-                alt131=5;
-                }
-                break;
-            case 94:
-                {
-                alt131=6;
-                }
-                break;
-            case 95:
-                {
-                alt131=7;
-                }
-                break;
-            case 96:
-                {
-                alt131=8;
-                }
-                break;
-            case 97:
-                {
-                alt131=9;
-                }
-                break;
-            case 33:
-                {
-                alt131=10;
-                }
-                break;
-            case 35:
-                {
-                int LA131_11 = input.LA(2);
-
-                if ( (LA131_11==35) ) {
-                    int LA131_12 = input.LA(3);
-
-                    if ( (synpred198()) ) {
-                        alt131=11;
-                    }
-                    else if ( (true) ) {
-                        alt131=12;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("785:1: assignmentOperator : ( '=' | '+=' | '-=' | '*=' | '/=' | '&=' | '|=' | '^=' | '%=' | '<' '<' '=' | '>' '>' '=' | '>' '>' '>' '=' );", 131, 12, input);
-
-                        throw nvae;
-                    }
-                }
-                else {
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("785:1: assignmentOperator : ( '=' | '+=' | '-=' | '*=' | '/=' | '&=' | '|=' | '^=' | '%=' | '<' '<' '=' | '>' '>' '=' | '>' '>' '>' '=' );", 131, 11, input);
-
-                    throw nvae;
-                }
-                }
-                break;
-            default:
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("785:1: assignmentOperator : ( '=' | '+=' | '-=' | '*=' | '/=' | '&=' | '|=' | '^=' | '%=' | '<' '<' '=' | '>' '>' '=' | '>' '>' '>' '=' );", 131, 0, input);
-
-                throw nvae;
-            }
-
+            alt131 = dfa131.predict(input);
             switch (alt131) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:786:4: '='
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:786:4: '='
                     {
-                    match(input,44,FOLLOW_44_in_assignmentOperator3089); if (failed) return ;
+                    match(input,44,FOLLOW_44_in_assignmentOperator3089); if (state.failed) return ;
 
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:787:9: '+='
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:787:9: '+='
                     {
-                    match(input,90,FOLLOW_90_in_assignmentOperator3099); if (failed) return ;
+                    match(input,90,FOLLOW_90_in_assignmentOperator3099); if (state.failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:788:9: '-='
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:788:9: '-='
                     {
-                    match(input,91,FOLLOW_91_in_assignmentOperator3109); if (failed) return ;
+                    match(input,91,FOLLOW_91_in_assignmentOperator3109); if (state.failed) return ;
 
                     }
                     break;
                 case 4 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:789:9: '*='
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:789:9: '*='
                     {
-                    match(input,92,FOLLOW_92_in_assignmentOperator3119); if (failed) return ;
+                    match(input,92,FOLLOW_92_in_assignmentOperator3119); if (state.failed) return ;
 
                     }
                     break;
                 case 5 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:790:9: '/='
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:790:9: '/='
                     {
-                    match(input,93,FOLLOW_93_in_assignmentOperator3129); if (failed) return ;
+                    match(input,93,FOLLOW_93_in_assignmentOperator3129); if (state.failed) return ;
 
                     }
                     break;
                 case 6 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:791:9: '&='
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:791:9: '&='
                     {
-                    match(input,94,FOLLOW_94_in_assignmentOperator3139); if (failed) return ;
+                    match(input,94,FOLLOW_94_in_assignmentOperator3139); if (state.failed) return ;
 
                     }
                     break;
                 case 7 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:792:9: '|='
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:792:9: '|='
                     {
-                    match(input,95,FOLLOW_95_in_assignmentOperator3149); if (failed) return ;
+                    match(input,95,FOLLOW_95_in_assignmentOperator3149); if (state.failed) return ;
 
                     }
                     break;
                 case 8 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:793:9: '^='
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:793:9: '^='
                     {
-                    match(input,96,FOLLOW_96_in_assignmentOperator3159); if (failed) return ;
+                    match(input,96,FOLLOW_96_in_assignmentOperator3159); if (state.failed) return ;
 
                     }
                     break;
                 case 9 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:794:9: '%='
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:794:9: '%='
                     {
-                    match(input,97,FOLLOW_97_in_assignmentOperator3169); if (failed) return ;
+                    match(input,97,FOLLOW_97_in_assignmentOperator3169); if (state.failed) return ;
 
                     }
                     break;
                 case 10 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:795:9: '<' '<' '='
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:795:9: '<' '<' '='
                     {
-                    match(input,33,FOLLOW_33_in_assignmentOperator3179); if (failed) return ;
-                    match(input,33,FOLLOW_33_in_assignmentOperator3181); if (failed) return ;
-                    match(input,44,FOLLOW_44_in_assignmentOperator3183); if (failed) return ;
+                    match(input,33,FOLLOW_33_in_assignmentOperator3179); if (state.failed) return ;
+                    match(input,33,FOLLOW_33_in_assignmentOperator3181); if (state.failed) return ;
+                    match(input,44,FOLLOW_44_in_assignmentOperator3183); if (state.failed) return ;
 
                     }
                     break;
                 case 11 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:796:9: '>' '>' '='
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:796:9: '>' '>' '='
                     {
-                    match(input,35,FOLLOW_35_in_assignmentOperator3193); if (failed) return ;
-                    match(input,35,FOLLOW_35_in_assignmentOperator3195); if (failed) return ;
-                    match(input,44,FOLLOW_44_in_assignmentOperator3197); if (failed) return ;
+                    match(input,35,FOLLOW_35_in_assignmentOperator3193); if (state.failed) return ;
+                    match(input,35,FOLLOW_35_in_assignmentOperator3195); if (state.failed) return ;
+                    match(input,44,FOLLOW_44_in_assignmentOperator3197); if (state.failed) return ;
 
                     }
                     break;
                 case 12 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:797:9: '>' '>' '>' '='
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:797:9: '>' '>' '>' '='
                     {
-                    match(input,35,FOLLOW_35_in_assignmentOperator3207); if (failed) return ;
-                    match(input,35,FOLLOW_35_in_assignmentOperator3209); if (failed) return ;
-                    match(input,35,FOLLOW_35_in_assignmentOperator3211); if (failed) return ;
-                    match(input,44,FOLLOW_44_in_assignmentOperator3213); if (failed) return ;
+                    match(input,35,FOLLOW_35_in_assignmentOperator3207); if (state.failed) return ;
+                    match(input,35,FOLLOW_35_in_assignmentOperator3209); if (state.failed) return ;
+                    match(input,35,FOLLOW_35_in_assignmentOperator3211); if (state.failed) return ;
+                    match(input,44,FOLLOW_44_in_assignmentOperator3213); if (state.failed) return ;
 
                     }
                     break;
@@ -9501,48 +7354,47 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 101, assignmentOperator_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 101, assignmentOperator_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end assignmentOperator
+    // $ANTLR end "assignmentOperator"
 
 
-    // $ANTLR start conditionalExpression
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:800:1: conditionalExpression : conditionalOrExpression ( '?' expression ':' expression )? ;
+    // $ANTLR start "conditionalExpression"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:800:1: conditionalExpression : conditionalOrExpression ( '?' expression ':' expression )? ;
     public final void conditionalExpression() throws RecognitionException {
         int conditionalExpression_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 102) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:801:5: ( conditionalOrExpression ( '?' expression ':' expression )? )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:801:9: conditionalOrExpression ( '?' expression ':' expression )?
+            if ( state.backtracking>0 && alreadyParsedRule(input, 102) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:801:5: ( conditionalOrExpression ( '?' expression ':' expression )? )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:801:9: conditionalOrExpression ( '?' expression ':' expression )?
             {
             pushFollow(FOLLOW_conditionalOrExpression_in_conditionalExpression3229);
             conditionalOrExpression();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:801:33: ( '?' expression ':' expression )?
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:801:33: ( '?' expression ':' expression )?
             int alt132=2;
-            int LA132_0 = input.LA(1);
-
-            if ( (LA132_0==63) ) {
-                alt132=1;
-            }
+            alt132 = dfa132.predict(input);
             switch (alt132) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:801:35: '?' expression ':' expression
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:801:35: '?' expression ':' expression
                     {
-                    match(input,63,FOLLOW_63_in_conditionalExpression3233); if (failed) return ;
+                    match(input,63,FOLLOW_63_in_conditionalExpression3233); if (state.failed) return ;
                     pushFollow(FOLLOW_expression_in_conditionalExpression3235);
                     expression();
-                    _fsp--;
-                    if (failed) return ;
-                    match(input,74,FOLLOW_74_in_conditionalExpression3237); if (failed) return ;
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,74,FOLLOW_74_in_conditionalExpression3237); if (state.failed) return ;
                     pushFollow(FOLLOW_expression_in_conditionalExpression3239);
                     expression();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -9557,47 +7409,43 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 102, conditionalExpression_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 102, conditionalExpression_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end conditionalExpression
+    // $ANTLR end "conditionalExpression"
 
 
-    // $ANTLR start conditionalOrExpression
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:804:1: conditionalOrExpression : conditionalAndExpression ( '||' conditionalAndExpression )* ;
+    // $ANTLR start "conditionalOrExpression"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:804:1: conditionalOrExpression : conditionalAndExpression ( '||' conditionalAndExpression )* ;
     public final void conditionalOrExpression() throws RecognitionException {
         int conditionalOrExpression_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 103) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:805:5: ( conditionalAndExpression ( '||' conditionalAndExpression )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:805:9: conditionalAndExpression ( '||' conditionalAndExpression )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 103) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:805:5: ( conditionalAndExpression ( '||' conditionalAndExpression )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:805:9: conditionalAndExpression ( '||' conditionalAndExpression )*
             {
             pushFollow(FOLLOW_conditionalAndExpression_in_conditionalOrExpression3258);
             conditionalAndExpression();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:805:34: ( '||' conditionalAndExpression )*
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:805:34: ( '||' conditionalAndExpression )*
             loop133:
             do {
                 int alt133=2;
-                int LA133_0 = input.LA(1);
-
-                if ( (LA133_0==98) ) {
-                    alt133=1;
-                }
-
-
+                alt133 = dfa133.predict(input);
                 switch (alt133) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:805:36: '||' conditionalAndExpression
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:805:36: '||' conditionalAndExpression
             	    {
-            	    match(input,98,FOLLOW_98_in_conditionalOrExpression3262); if (failed) return ;
+            	    match(input,98,FOLLOW_98_in_conditionalOrExpression3262); if (state.failed) return ;
             	    pushFollow(FOLLOW_conditionalAndExpression_in_conditionalOrExpression3264);
             	    conditionalAndExpression();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -9615,47 +7463,43 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 103, conditionalOrExpression_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 103, conditionalOrExpression_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end conditionalOrExpression
+    // $ANTLR end "conditionalOrExpression"
 
 
-    // $ANTLR start conditionalAndExpression
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:808:1: conditionalAndExpression : inclusiveOrExpression ( '&&' inclusiveOrExpression )* ;
+    // $ANTLR start "conditionalAndExpression"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:808:1: conditionalAndExpression : inclusiveOrExpression ( '&&' inclusiveOrExpression )* ;
     public final void conditionalAndExpression() throws RecognitionException {
         int conditionalAndExpression_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 104) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:809:5: ( inclusiveOrExpression ( '&&' inclusiveOrExpression )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:809:9: inclusiveOrExpression ( '&&' inclusiveOrExpression )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 104) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:809:5: ( inclusiveOrExpression ( '&&' inclusiveOrExpression )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:809:9: inclusiveOrExpression ( '&&' inclusiveOrExpression )*
             {
             pushFollow(FOLLOW_inclusiveOrExpression_in_conditionalAndExpression3283);
             inclusiveOrExpression();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:809:31: ( '&&' inclusiveOrExpression )*
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:809:31: ( '&&' inclusiveOrExpression )*
             loop134:
             do {
                 int alt134=2;
-                int LA134_0 = input.LA(1);
-
-                if ( (LA134_0==99) ) {
-                    alt134=1;
-                }
-
-
+                alt134 = dfa134.predict(input);
                 switch (alt134) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:809:33: '&&' inclusiveOrExpression
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:809:33: '&&' inclusiveOrExpression
             	    {
-            	    match(input,99,FOLLOW_99_in_conditionalAndExpression3287); if (failed) return ;
+            	    match(input,99,FOLLOW_99_in_conditionalAndExpression3287); if (state.failed) return ;
             	    pushFollow(FOLLOW_inclusiveOrExpression_in_conditionalAndExpression3289);
             	    inclusiveOrExpression();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -9673,47 +7517,43 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 104, conditionalAndExpression_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 104, conditionalAndExpression_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end conditionalAndExpression
+    // $ANTLR end "conditionalAndExpression"
 
 
-    // $ANTLR start inclusiveOrExpression
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:812:1: inclusiveOrExpression : exclusiveOrExpression ( '|' exclusiveOrExpression )* ;
+    // $ANTLR start "inclusiveOrExpression"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:812:1: inclusiveOrExpression : exclusiveOrExpression ( '|' exclusiveOrExpression )* ;
     public final void inclusiveOrExpression() throws RecognitionException {
         int inclusiveOrExpression_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 105) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:813:5: ( exclusiveOrExpression ( '|' exclusiveOrExpression )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:813:9: exclusiveOrExpression ( '|' exclusiveOrExpression )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 105) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:813:5: ( exclusiveOrExpression ( '|' exclusiveOrExpression )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:813:9: exclusiveOrExpression ( '|' exclusiveOrExpression )*
             {
             pushFollow(FOLLOW_exclusiveOrExpression_in_inclusiveOrExpression3308);
             exclusiveOrExpression();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:813:31: ( '|' exclusiveOrExpression )*
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:813:31: ( '|' exclusiveOrExpression )*
             loop135:
             do {
                 int alt135=2;
-                int LA135_0 = input.LA(1);
-
-                if ( (LA135_0==100) ) {
-                    alt135=1;
-                }
-
-
+                alt135 = dfa135.predict(input);
                 switch (alt135) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:813:33: '|' exclusiveOrExpression
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:813:33: '|' exclusiveOrExpression
             	    {
-            	    match(input,100,FOLLOW_100_in_inclusiveOrExpression3312); if (failed) return ;
+            	    match(input,100,FOLLOW_100_in_inclusiveOrExpression3312); if (state.failed) return ;
             	    pushFollow(FOLLOW_exclusiveOrExpression_in_inclusiveOrExpression3314);
             	    exclusiveOrExpression();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -9731,47 +7571,43 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 105, inclusiveOrExpression_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 105, inclusiveOrExpression_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end inclusiveOrExpression
+    // $ANTLR end "inclusiveOrExpression"
 
 
-    // $ANTLR start exclusiveOrExpression
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:816:1: exclusiveOrExpression : andExpression ( '^' andExpression )* ;
+    // $ANTLR start "exclusiveOrExpression"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:816:1: exclusiveOrExpression : andExpression ( '^' andExpression )* ;
     public final void exclusiveOrExpression() throws RecognitionException {
         int exclusiveOrExpression_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 106) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:817:5: ( andExpression ( '^' andExpression )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:817:9: andExpression ( '^' andExpression )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 106) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:817:5: ( andExpression ( '^' andExpression )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:817:9: andExpression ( '^' andExpression )*
             {
             pushFollow(FOLLOW_andExpression_in_exclusiveOrExpression3333);
             andExpression();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:817:23: ( '^' andExpression )*
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:817:23: ( '^' andExpression )*
             loop136:
             do {
                 int alt136=2;
-                int LA136_0 = input.LA(1);
-
-                if ( (LA136_0==101) ) {
-                    alt136=1;
-                }
-
-
+                alt136 = dfa136.predict(input);
                 switch (alt136) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:817:25: '^' andExpression
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:817:25: '^' andExpression
             	    {
-            	    match(input,101,FOLLOW_101_in_exclusiveOrExpression3337); if (failed) return ;
+            	    match(input,101,FOLLOW_101_in_exclusiveOrExpression3337); if (state.failed) return ;
             	    pushFollow(FOLLOW_andExpression_in_exclusiveOrExpression3339);
             	    andExpression();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -9789,47 +7625,43 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 106, exclusiveOrExpression_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 106, exclusiveOrExpression_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end exclusiveOrExpression
+    // $ANTLR end "exclusiveOrExpression"
 
 
-    // $ANTLR start andExpression
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:820:1: andExpression : equalityExpression ( '&' equalityExpression )* ;
+    // $ANTLR start "andExpression"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:820:1: andExpression : equalityExpression ( '&' equalityExpression )* ;
     public final void andExpression() throws RecognitionException {
         int andExpression_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 107) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:821:5: ( equalityExpression ( '&' equalityExpression )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:821:9: equalityExpression ( '&' equalityExpression )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 107) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:821:5: ( equalityExpression ( '&' equalityExpression )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:821:9: equalityExpression ( '&' equalityExpression )*
             {
             pushFollow(FOLLOW_equalityExpression_in_andExpression3358);
             equalityExpression();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:821:28: ( '&' equalityExpression )*
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:821:28: ( '&' equalityExpression )*
             loop137:
             do {
                 int alt137=2;
-                int LA137_0 = input.LA(1);
-
-                if ( (LA137_0==36) ) {
-                    alt137=1;
-                }
-
-
+                alt137 = dfa137.predict(input);
                 switch (alt137) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:821:30: '&' equalityExpression
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:821:30: '&' equalityExpression
             	    {
-            	    match(input,36,FOLLOW_36_in_andExpression3362); if (failed) return ;
+            	    match(input,36,FOLLOW_36_in_andExpression3362); if (state.failed) return ;
             	    pushFollow(FOLLOW_equalityExpression_in_andExpression3364);
             	    equalityExpression();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -9847,57 +7679,52 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 107, andExpression_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 107, andExpression_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end andExpression
+    // $ANTLR end "andExpression"
 
 
-    // $ANTLR start equalityExpression
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:824:1: equalityExpression : instanceOfExpression ( ( '==' | '!=' ) instanceOfExpression )* ;
+    // $ANTLR start "equalityExpression"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:824:1: equalityExpression : instanceOfExpression ( ( '==' | '!=' ) instanceOfExpression )* ;
     public final void equalityExpression() throws RecognitionException {
         int equalityExpression_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 108) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:825:5: ( instanceOfExpression ( ( '==' | '!=' ) instanceOfExpression )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:825:9: instanceOfExpression ( ( '==' | '!=' ) instanceOfExpression )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 108) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:825:5: ( instanceOfExpression ( ( '==' | '!=' ) instanceOfExpression )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:825:9: instanceOfExpression ( ( '==' | '!=' ) instanceOfExpression )*
             {
             pushFollow(FOLLOW_instanceOfExpression_in_equalityExpression3383);
             instanceOfExpression();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:825:30: ( ( '==' | '!=' ) instanceOfExpression )*
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:825:30: ( ( '==' | '!=' ) instanceOfExpression )*
             loop138:
             do {
                 int alt138=2;
-                int LA138_0 = input.LA(1);
-
-                if ( ((LA138_0>=102 && LA138_0<=103)) ) {
-                    alt138=1;
-                }
-
-
+                alt138 = dfa138.predict(input);
                 switch (alt138) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:825:32: ( '==' | '!=' ) instanceOfExpression
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:825:32: ( '==' | '!=' ) instanceOfExpression
             	    {
             	    if ( (input.LA(1)>=102 && input.LA(1)<=103) ) {
             	        input.consume();
-            	        errorRecovery=false;failed=false;
+            	        state.errorRecovery=false;state.failed=false;
             	    }
             	    else {
-            	        if (backtracking>0) {failed=true; return ;}
-            	        MismatchedSetException mse =
-            	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_equalityExpression3387);    throw mse;
+            	        if (state.backtracking>0) {state.failed=true; return ;}
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        throw mse;
             	    }
 
             	    pushFollow(FOLLOW_instanceOfExpression_in_equalityExpression3395);
             	    instanceOfExpression();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -9915,43 +7742,41 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 108, equalityExpression_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 108, equalityExpression_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end equalityExpression
+    // $ANTLR end "equalityExpression"
 
 
-    // $ANTLR start instanceOfExpression
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:828:1: instanceOfExpression : relationalExpression ( 'instanceof' type )? ;
+    // $ANTLR start "instanceOfExpression"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:828:1: instanceOfExpression : relationalExpression ( 'instanceof' type )? ;
     public final void instanceOfExpression() throws RecognitionException {
         int instanceOfExpression_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 109) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:829:5: ( relationalExpression ( 'instanceof' type )? )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:829:9: relationalExpression ( 'instanceof' type )?
+            if ( state.backtracking>0 && alreadyParsedRule(input, 109) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:829:5: ( relationalExpression ( 'instanceof' type )? )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:829:9: relationalExpression ( 'instanceof' type )?
             {
             pushFollow(FOLLOW_relationalExpression_in_instanceOfExpression3414);
             relationalExpression();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:829:30: ( 'instanceof' type )?
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:829:30: ( 'instanceof' type )?
             int alt139=2;
-            int LA139_0 = input.LA(1);
-
-            if ( (LA139_0==104) ) {
-                alt139=1;
-            }
+            alt139 = dfa139.predict(input);
             switch (alt139) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:829:31: 'instanceof' type
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:829:31: 'instanceof' type
                     {
-                    match(input,104,FOLLOW_104_in_instanceOfExpression3417); if (failed) return ;
+                    match(input,104,FOLLOW_104_in_instanceOfExpression3417); if (state.failed) return ;
                     pushFollow(FOLLOW_type_in_instanceOfExpression3419);
                     type();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -9966,74 +7791,47 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 109, instanceOfExpression_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 109, instanceOfExpression_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end instanceOfExpression
+    // $ANTLR end "instanceOfExpression"
 
 
-    // $ANTLR start relationalExpression
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:832:1: relationalExpression : shiftExpression ( relationalOp shiftExpression )* ;
+    // $ANTLR start "relationalExpression"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:832:1: relationalExpression : shiftExpression ( relationalOp shiftExpression )* ;
     public final void relationalExpression() throws RecognitionException {
         int relationalExpression_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 110) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:833:5: ( shiftExpression ( relationalOp shiftExpression )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:833:9: shiftExpression ( relationalOp shiftExpression )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 110) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:833:5: ( shiftExpression ( relationalOp shiftExpression )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:833:9: shiftExpression ( relationalOp shiftExpression )*
             {
             pushFollow(FOLLOW_shiftExpression_in_relationalExpression3437);
             shiftExpression();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:833:25: ( relationalOp shiftExpression )*
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:833:25: ( relationalOp shiftExpression )*
             loop140:
             do {
                 int alt140=2;
-                int LA140_0 = input.LA(1);
-
-                if ( (LA140_0==33) ) {
-                    int LA140_23 = input.LA(2);
-
-                    if ( (LA140_23==Identifier||(LA140_23>=FloatingPointLiteral && LA140_23<=DecimalLiteral)||LA140_23==40||LA140_23==44||(LA140_23>=55 && LA140_23<=62)||(LA140_23>=64 && LA140_23<=65)||(LA140_23>=68 && LA140_23<=70)||(LA140_23>=105 && LA140_23<=106)||(LA140_23>=109 && LA140_23<=114)) ) {
-                        alt140=1;
-                    }
-                    else if ( (LA140_23==33) ) {
-                        int LA140_28 = input.LA(3);
-
-                        if ( (synpred208()) ) {
-                            alt140=1;
-                        }
-
-
-                    }
-
-
-                }
-                else if ( (LA140_0==35) ) {
-                    int LA140_24 = input.LA(2);
-
-                    if ( (LA140_24==Identifier||(LA140_24>=FloatingPointLiteral && LA140_24<=DecimalLiteral)||LA140_24==33||LA140_24==40||LA140_24==44||(LA140_24>=55 && LA140_24<=62)||(LA140_24>=64 && LA140_24<=65)||(LA140_24>=68 && LA140_24<=70)||(LA140_24>=105 && LA140_24<=106)||(LA140_24>=109 && LA140_24<=114)) ) {
-                        alt140=1;
-                    }
-
-
-                }
-
-
+                alt140 = dfa140.predict(input);
                 switch (alt140) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:833:27: relationalOp shiftExpression
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:833:27: relationalOp shiftExpression
             	    {
             	    pushFollow(FOLLOW_relationalOp_in_relationalExpression3441);
             	    relationalOp();
-            	    _fsp--;
-            	    if (failed) return ;
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
             	    pushFollow(FOLLOW_shiftExpression_in_relationalExpression3443);
             	    shiftExpression();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -10051,95 +7849,53 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 110, relationalExpression_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 110, relationalExpression_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end relationalExpression
+    // $ANTLR end "relationalExpression"
 
 
-    // $ANTLR start relationalOp
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:836:1: relationalOp : ( '<' '=' | '>' '=' | '<' | '>' ) ;
+    // $ANTLR start "relationalOp"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:836:1: relationalOp : ( '<' '=' | '>' '=' | '<' | '>' ) ;
     public final void relationalOp() throws RecognitionException {
         int relationalOp_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 111) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:837:2: ( ( '<' '=' | '>' '=' | '<' | '>' ) )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:837:4: ( '<' '=' | '>' '=' | '<' | '>' )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 111) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:837:2: ( ( '<' '=' | '>' '=' | '<' | '>' ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:837:4: ( '<' '=' | '>' '=' | '<' | '>' )
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:837:4: ( '<' '=' | '>' '=' | '<' | '>' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:837:4: ( '<' '=' | '>' '=' | '<' | '>' )
             int alt141=4;
-            int LA141_0 = input.LA(1);
-
-            if ( (LA141_0==33) ) {
-                int LA141_1 = input.LA(2);
-
-                if ( (LA141_1==44) ) {
-                    alt141=1;
-                }
-                else if ( (LA141_1==Identifier||(LA141_1>=FloatingPointLiteral && LA141_1<=DecimalLiteral)||LA141_1==33||LA141_1==40||(LA141_1>=55 && LA141_1<=62)||(LA141_1>=64 && LA141_1<=65)||(LA141_1>=68 && LA141_1<=70)||(LA141_1>=105 && LA141_1<=106)||(LA141_1>=109 && LA141_1<=114)) ) {
-                    alt141=3;
-                }
-                else {
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("837:4: ( '<' '=' | '>' '=' | '<' | '>' )", 141, 1, input);
-
-                    throw nvae;
-                }
-            }
-            else if ( (LA141_0==35) ) {
-                int LA141_2 = input.LA(2);
-
-                if ( (LA141_2==44) ) {
-                    alt141=2;
-                }
-                else if ( (LA141_2==Identifier||(LA141_2>=FloatingPointLiteral && LA141_2<=DecimalLiteral)||LA141_2==33||LA141_2==40||(LA141_2>=55 && LA141_2<=62)||(LA141_2>=64 && LA141_2<=65)||(LA141_2>=68 && LA141_2<=70)||(LA141_2>=105 && LA141_2<=106)||(LA141_2>=109 && LA141_2<=114)) ) {
-                    alt141=4;
-                }
-                else {
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("837:4: ( '<' '=' | '>' '=' | '<' | '>' )", 141, 2, input);
-
-                    throw nvae;
-                }
-            }
-            else {
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("837:4: ( '<' '=' | '>' '=' | '<' | '>' )", 141, 0, input);
-
-                throw nvae;
-            }
+            alt141 = dfa141.predict(input);
             switch (alt141) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:837:5: '<' '='
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:837:5: '<' '='
                     {
-                    match(input,33,FOLLOW_33_in_relationalOp3459); if (failed) return ;
-                    match(input,44,FOLLOW_44_in_relationalOp3461); if (failed) return ;
+                    match(input,33,FOLLOW_33_in_relationalOp3459); if (state.failed) return ;
+                    match(input,44,FOLLOW_44_in_relationalOp3461); if (state.failed) return ;
 
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:837:15: '>' '='
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:837:15: '>' '='
                     {
-                    match(input,35,FOLLOW_35_in_relationalOp3465); if (failed) return ;
-                    match(input,44,FOLLOW_44_in_relationalOp3467); if (failed) return ;
+                    match(input,35,FOLLOW_35_in_relationalOp3465); if (state.failed) return ;
+                    match(input,44,FOLLOW_44_in_relationalOp3467); if (state.failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:837:25: '<'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:837:25: '<'
                     {
-                    match(input,33,FOLLOW_33_in_relationalOp3471); if (failed) return ;
+                    match(input,33,FOLLOW_33_in_relationalOp3471); if (state.failed) return ;
 
                     }
                     break;
                 case 4 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:837:31: '>'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:837:31: '>'
                     {
-                    match(input,35,FOLLOW_35_in_relationalOp3475); if (failed) return ;
+                    match(input,35,FOLLOW_35_in_relationalOp3475); if (state.failed) return ;
 
                     }
                     break;
@@ -10155,77 +7911,47 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 111, relationalOp_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 111, relationalOp_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end relationalOp
+    // $ANTLR end "relationalOp"
 
 
-    // $ANTLR start shiftExpression
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:840:1: shiftExpression : additiveExpression ( shiftOp additiveExpression )* ;
+    // $ANTLR start "shiftExpression"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:840:1: shiftExpression : additiveExpression ( shiftOp additiveExpression )* ;
     public final void shiftExpression() throws RecognitionException {
         int shiftExpression_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 112) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:841:5: ( additiveExpression ( shiftOp additiveExpression )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:841:9: additiveExpression ( shiftOp additiveExpression )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 112) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:841:5: ( additiveExpression ( shiftOp additiveExpression )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:841:9: additiveExpression ( shiftOp additiveExpression )*
             {
             pushFollow(FOLLOW_additiveExpression_in_shiftExpression3492);
             additiveExpression();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:841:28: ( shiftOp additiveExpression )*
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:841:28: ( shiftOp additiveExpression )*
             loop142:
             do {
                 int alt142=2;
-                int LA142_0 = input.LA(1);
-
-                if ( (LA142_0==33) ) {
-                    int LA142_1 = input.LA(2);
-
-                    if ( (LA142_1==33) ) {
-                        int LA142_27 = input.LA(3);
-
-                        if ( (synpred212()) ) {
-                            alt142=1;
-                        }
-
-
-                    }
-
-
-                }
-                else if ( (LA142_0==35) ) {
-                    int LA142_2 = input.LA(2);
-
-                    if ( (LA142_2==35) ) {
-                        int LA142_48 = input.LA(3);
-
-                        if ( (synpred212()) ) {
-                            alt142=1;
-                        }
-
-
-                    }
-
-
-                }
-
-
+                alt142 = dfa142.predict(input);
                 switch (alt142) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:841:30: shiftOp additiveExpression
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:841:30: shiftOp additiveExpression
             	    {
             	    pushFollow(FOLLOW_shiftOp_in_shiftExpression3496);
             	    shiftOp();
-            	    _fsp--;
-            	    if (failed) return ;
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
             	    pushFollow(FOLLOW_additiveExpression_in_shiftExpression3498);
             	    additiveExpression();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -10243,23 +7969,23 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 112, shiftExpression_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 112, shiftExpression_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end shiftExpression
+    // $ANTLR end "shiftExpression"
 
 
-    // $ANTLR start shiftOp
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:845:1: shiftOp : ( '<' '<' | '>' '>' '>' | '>' '>' ) ;
+    // $ANTLR start "shiftOp"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:845:1: shiftOp : ( '<' '<' | '>' '>' '>' | '>' '>' ) ;
     public final void shiftOp() throws RecognitionException {
         int shiftOp_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 113) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:846:2: ( ( '<' '<' | '>' '>' '>' | '>' '>' ) )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:846:4: ( '<' '<' | '>' '>' '>' | '>' '>' )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 113) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:846:2: ( ( '<' '<' | '>' '>' '>' | '>' '>' ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:846:4: ( '<' '<' | '>' '>' '>' | '>' '>' )
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:846:4: ( '<' '<' | '>' '>' '>' | '>' '>' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:846:4: ( '<' '<' | '>' '>' '>' | '>' '>' )
             int alt143=3;
             int LA143_0 = input.LA(1);
 
@@ -10272,58 +7998,58 @@
                 if ( (LA143_2==35) ) {
                     int LA143_3 = input.LA(3);
 
-                    if ( (synpred214()) ) {
+                    if ( (synpred214_Java()) ) {
                         alt143=2;
                     }
                     else if ( (true) ) {
                         alt143=3;
                     }
                     else {
-                        if (backtracking>0) {failed=true; return ;}
+                        if (state.backtracking>0) {state.failed=true; return ;}
                         NoViableAltException nvae =
-                            new NoViableAltException("846:4: ( '<' '<' | '>' '>' '>' | '>' '>' )", 143, 3, input);
+                            new NoViableAltException("", 143, 3, input);
 
                         throw nvae;
                     }
                 }
                 else {
-                    if (backtracking>0) {failed=true; return ;}
+                    if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("846:4: ( '<' '<' | '>' '>' '>' | '>' '>' )", 143, 2, input);
+                        new NoViableAltException("", 143, 2, input);
 
                     throw nvae;
                 }
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("846:4: ( '<' '<' | '>' '>' '>' | '>' '>' )", 143, 0, input);
+                    new NoViableAltException("", 143, 0, input);
 
                 throw nvae;
             }
             switch (alt143) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:846:5: '<' '<'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:846:5: '<' '<'
                     {
-                    match(input,33,FOLLOW_33_in_shiftOp3522); if (failed) return ;
-                    match(input,33,FOLLOW_33_in_shiftOp3524); if (failed) return ;
+                    match(input,33,FOLLOW_33_in_shiftOp3522); if (state.failed) return ;
+                    match(input,33,FOLLOW_33_in_shiftOp3524); if (state.failed) return ;
 
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:846:15: '>' '>' '>'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:846:15: '>' '>' '>'
                     {
-                    match(input,35,FOLLOW_35_in_shiftOp3528); if (failed) return ;
-                    match(input,35,FOLLOW_35_in_shiftOp3530); if (failed) return ;
-                    match(input,35,FOLLOW_35_in_shiftOp3532); if (failed) return ;
+                    match(input,35,FOLLOW_35_in_shiftOp3528); if (state.failed) return ;
+                    match(input,35,FOLLOW_35_in_shiftOp3530); if (state.failed) return ;
+                    match(input,35,FOLLOW_35_in_shiftOp3532); if (state.failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:846:29: '>' '>'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:846:29: '>' '>'
                     {
-                    match(input,35,FOLLOW_35_in_shiftOp3536); if (failed) return ;
-                    match(input,35,FOLLOW_35_in_shiftOp3538); if (failed) return ;
+                    match(input,35,FOLLOW_35_in_shiftOp3536); if (state.failed) return ;
+                    match(input,35,FOLLOW_35_in_shiftOp3538); if (state.failed) return ;
 
                     }
                     break;
@@ -10339,57 +8065,52 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 113, shiftOp_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 113, shiftOp_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end shiftOp
+    // $ANTLR end "shiftOp"
 
 
-    // $ANTLR start additiveExpression
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:850:1: additiveExpression : multiplicativeExpression ( ( '+' | '-' ) multiplicativeExpression )* ;
+    // $ANTLR start "additiveExpression"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:850:1: additiveExpression : multiplicativeExpression ( ( '+' | '-' ) multiplicativeExpression )* ;
     public final void additiveExpression() throws RecognitionException {
         int additiveExpression_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 114) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:851:5: ( multiplicativeExpression ( ( '+' | '-' ) multiplicativeExpression )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:851:9: multiplicativeExpression ( ( '+' | '-' ) multiplicativeExpression )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 114) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:851:5: ( multiplicativeExpression ( ( '+' | '-' ) multiplicativeExpression )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:851:9: multiplicativeExpression ( ( '+' | '-' ) multiplicativeExpression )*
             {
             pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression3556);
             multiplicativeExpression();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:851:34: ( ( '+' | '-' ) multiplicativeExpression )*
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:851:34: ( ( '+' | '-' ) multiplicativeExpression )*
             loop144:
             do {
                 int alt144=2;
-                int LA144_0 = input.LA(1);
-
-                if ( ((LA144_0>=105 && LA144_0<=106)) ) {
-                    alt144=1;
-                }
-
-
+                alt144 = dfa144.predict(input);
                 switch (alt144) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:851:36: ( '+' | '-' ) multiplicativeExpression
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:851:36: ( '+' | '-' ) multiplicativeExpression
             	    {
             	    if ( (input.LA(1)>=105 && input.LA(1)<=106) ) {
             	        input.consume();
-            	        errorRecovery=false;failed=false;
+            	        state.errorRecovery=false;state.failed=false;
             	    }
             	    else {
-            	        if (backtracking>0) {failed=true; return ;}
-            	        MismatchedSetException mse =
-            	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_additiveExpression3560);    throw mse;
+            	        if (state.backtracking>0) {state.failed=true; return ;}
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        throw mse;
             	    }
 
             	    pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression3568);
             	    multiplicativeExpression();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -10407,57 +8128,52 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 114, additiveExpression_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 114, additiveExpression_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end additiveExpression
+    // $ANTLR end "additiveExpression"
 
 
-    // $ANTLR start multiplicativeExpression
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:854:1: multiplicativeExpression : unaryExpression ( ( '*' | '/' | '%' ) unaryExpression )* ;
+    // $ANTLR start "multiplicativeExpression"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:854:1: multiplicativeExpression : unaryExpression ( ( '*' | '/' | '%' ) unaryExpression )* ;
     public final void multiplicativeExpression() throws RecognitionException {
         int multiplicativeExpression_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 115) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:855:5: ( unaryExpression ( ( '*' | '/' | '%' ) unaryExpression )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:855:9: unaryExpression ( ( '*' | '/' | '%' ) unaryExpression )*
+            if ( state.backtracking>0 && alreadyParsedRule(input, 115) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:855:5: ( unaryExpression ( ( '*' | '/' | '%' ) unaryExpression )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:855:9: unaryExpression ( ( '*' | '/' | '%' ) unaryExpression )*
             {
             pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression3587);
             unaryExpression();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:855:25: ( ( '*' | '/' | '%' ) unaryExpression )*
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:855:25: ( ( '*' | '/' | '%' ) unaryExpression )*
             loop145:
             do {
                 int alt145=2;
-                int LA145_0 = input.LA(1);
-
-                if ( (LA145_0==29||(LA145_0>=107 && LA145_0<=108)) ) {
-                    alt145=1;
-                }
-
-
+                alt145 = dfa145.predict(input);
                 switch (alt145) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:855:27: ( '*' | '/' | '%' ) unaryExpression
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:855:27: ( '*' | '/' | '%' ) unaryExpression
             	    {
             	    if ( input.LA(1)==29||(input.LA(1)>=107 && input.LA(1)<=108) ) {
             	        input.consume();
-            	        errorRecovery=false;failed=false;
+            	        state.errorRecovery=false;state.failed=false;
             	    }
             	    else {
-            	        if (backtracking>0) {failed=true; return ;}
-            	        MismatchedSetException mse =
-            	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_multiplicativeExpression3591);    throw mse;
+            	        if (state.backtracking>0) {state.failed=true; return ;}
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        throw mse;
             	    }
 
             	    pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression3605);
             	    unaryExpression();
-            	    _fsp--;
-            	    if (failed) return ;
 
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
             	    }
             	    break;
 
@@ -10475,133 +8191,80 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 115, multiplicativeExpression_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 115, multiplicativeExpression_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end multiplicativeExpression
+    // $ANTLR end "multiplicativeExpression"
 
 
-    // $ANTLR start unaryExpression
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:858:1: unaryExpression : ( '+' unaryExpression | '-' unaryExpression | '++' primary | '--' primary | unaryExpressionNotPlusMinus );
+    // $ANTLR start "unaryExpression"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:858:1: unaryExpression : ( '+' unaryExpression | '-' unaryExpression | '++' primary | '--' primary | unaryExpressionNotPlusMinus );
     public final void unaryExpression() throws RecognitionException {
         int unaryExpression_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 116) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:859:5: ( '+' unaryExpression | '-' unaryExpression | '++' primary | '--' primary | unaryExpressionNotPlusMinus )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 116) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:859:5: ( '+' unaryExpression | '-' unaryExpression | '++' primary | '--' primary | unaryExpressionNotPlusMinus )
             int alt146=5;
-            switch ( input.LA(1) ) {
-            case 105:
-                {
-                alt146=1;
-                }
-                break;
-            case 106:
-                {
-                alt146=2;
-                }
-                break;
-            case 109:
-                {
-                alt146=3;
-                }
-                break;
-            case 110:
-                {
-                alt146=4;
-                }
-                break;
-            case Identifier:
-            case FloatingPointLiteral:
-            case CharacterLiteral:
-            case StringLiteral:
-            case HexLiteral:
-            case OctalLiteral:
-            case DecimalLiteral:
-            case 33:
-            case 40:
-            case 55:
-            case 56:
-            case 57:
-            case 58:
-            case 59:
-            case 60:
-            case 61:
-            case 62:
-            case 64:
-            case 65:
-            case 68:
-            case 69:
-            case 70:
-            case 111:
-            case 112:
-            case 113:
-            case 114:
-                {
-                alt146=5;
-                }
-                break;
-            default:
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("858:1: unaryExpression : ( '+' unaryExpression | '-' unaryExpression | '++' primary | '--' primary | unaryExpressionNotPlusMinus );", 146, 0, input);
-
-                throw nvae;
-            }
-
+            alt146 = dfa146.predict(input);
             switch (alt146) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:859:9: '+' unaryExpression
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:859:9: '+' unaryExpression
                     {
-                    match(input,105,FOLLOW_105_in_unaryExpression3625); if (failed) return ;
+                    match(input,105,FOLLOW_105_in_unaryExpression3625); if (state.failed) return ;
                     pushFollow(FOLLOW_unaryExpression_in_unaryExpression3627);
                     unaryExpression();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:860:7: '-' unaryExpression
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:860:7: '-' unaryExpression
                     {
-                    match(input,106,FOLLOW_106_in_unaryExpression3635); if (failed) return ;
+                    match(input,106,FOLLOW_106_in_unaryExpression3635); if (state.failed) return ;
                     pushFollow(FOLLOW_unaryExpression_in_unaryExpression3637);
                     unaryExpression();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:861:9: '++' primary
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:861:9: '++' primary
                     {
-                    match(input,109,FOLLOW_109_in_unaryExpression3647); if (failed) return ;
+                    match(input,109,FOLLOW_109_in_unaryExpression3647); if (state.failed) return ;
                     pushFollow(FOLLOW_primary_in_unaryExpression3649);
                     primary();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 4 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:862:9: '--' primary
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:862:9: '--' primary
                     {
-                    match(input,110,FOLLOW_110_in_unaryExpression3659); if (failed) return ;
+                    match(input,110,FOLLOW_110_in_unaryExpression3659); if (state.failed) return ;
                     pushFollow(FOLLOW_primary_in_unaryExpression3661);
                     primary();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 5 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:863:9: unaryExpressionNotPlusMinus
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:863:9: unaryExpressionNotPlusMinus
                     {
                     pushFollow(FOLLOW_unaryExpressionNotPlusMinus_in_unaryExpression3671);
                     unaryExpressionNotPlusMinus();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -10612,530 +8275,81 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 116, unaryExpression_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 116, unaryExpression_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end unaryExpression
+    // $ANTLR end "unaryExpression"
 
 
-    // $ANTLR start unaryExpressionNotPlusMinus
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:866:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );
+    // $ANTLR start "unaryExpressionNotPlusMinus"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:866:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );
     public final void unaryExpressionNotPlusMinus() throws RecognitionException {
         int unaryExpressionNotPlusMinus_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 117) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:867:5: ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 117) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:867:5: ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? )
             int alt149=4;
-            switch ( input.LA(1) ) {
-            case 111:
-                {
-                alt149=1;
-                }
-                break;
-            case 112:
-                {
-                alt149=2;
-                }
-                break;
-            case 65:
-                {
-                switch ( input.LA(2) ) {
-                case Identifier:
-                    {
-                    int LA149_17 = input.LA(3);
-
-                    if ( (synpred226()) ) {
-                        alt149=3;
-                    }
-                    else if ( (true) ) {
-                        alt149=4;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("866:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );", 149, 17, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case 55:
-                case 56:
-                case 57:
-                case 58:
-                case 59:
-                case 60:
-                case 61:
-                case 62:
-                    {
-                    int LA149_18 = input.LA(3);
-
-                    if ( (synpred226()) ) {
-                        alt149=3;
-                    }
-                    else if ( (true) ) {
-                        alt149=4;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("866:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );", 149, 18, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case 105:
-                    {
-                    int LA149_19 = input.LA(3);
-
-                    if ( (synpred226()) ) {
-                        alt149=3;
-                    }
-                    else if ( (true) ) {
-                        alt149=4;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("866:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );", 149, 19, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case 106:
-                    {
-                    int LA149_20 = input.LA(3);
-
-                    if ( (synpred226()) ) {
-                        alt149=3;
-                    }
-                    else if ( (true) ) {
-                        alt149=4;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("866:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );", 149, 20, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case 109:
-                    {
-                    int LA149_21 = input.LA(3);
-
-                    if ( (synpred226()) ) {
-                        alt149=3;
-                    }
-                    else if ( (true) ) {
-                        alt149=4;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("866:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );", 149, 21, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case 110:
-                    {
-                    int LA149_22 = input.LA(3);
-
-                    if ( (synpred226()) ) {
-                        alt149=3;
-                    }
-                    else if ( (true) ) {
-                        alt149=4;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("866:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );", 149, 22, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case 111:
-                    {
-                    int LA149_23 = input.LA(3);
-
-                    if ( (synpred226()) ) {
-                        alt149=3;
-                    }
-                    else if ( (true) ) {
-                        alt149=4;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("866:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );", 149, 23, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case 112:
-                    {
-                    int LA149_24 = input.LA(3);
-
-                    if ( (synpred226()) ) {
-                        alt149=3;
-                    }
-                    else if ( (true) ) {
-                        alt149=4;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("866:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );", 149, 24, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case 65:
-                    {
-                    int LA149_25 = input.LA(3);
-
-                    if ( (synpred226()) ) {
-                        alt149=3;
-                    }
-                    else if ( (true) ) {
-                        alt149=4;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("866:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );", 149, 25, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case 33:
-                    {
-                    int LA149_26 = input.LA(3);
-
-                    if ( (synpred226()) ) {
-                        alt149=3;
-                    }
-                    else if ( (true) ) {
-                        alt149=4;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("866:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );", 149, 26, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case 113:
-                    {
-                    int LA149_27 = input.LA(3);
-
-                    if ( (synpred226()) ) {
-                        alt149=3;
-                    }
-                    else if ( (true) ) {
-                        alt149=4;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("866:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );", 149, 27, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case 64:
-                    {
-                    int LA149_28 = input.LA(3);
-
-                    if ( (synpred226()) ) {
-                        alt149=3;
-                    }
-                    else if ( (true) ) {
-                        alt149=4;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("866:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );", 149, 28, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case HexLiteral:
-                case OctalLiteral:
-                case DecimalLiteral:
-                    {
-                    int LA149_29 = input.LA(3);
-
-                    if ( (synpred226()) ) {
-                        alt149=3;
-                    }
-                    else if ( (true) ) {
-                        alt149=4;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("866:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );", 149, 29, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case FloatingPointLiteral:
-                    {
-                    int LA149_30 = input.LA(3);
-
-                    if ( (synpred226()) ) {
-                        alt149=3;
-                    }
-                    else if ( (true) ) {
-                        alt149=4;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("866:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );", 149, 30, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case CharacterLiteral:
-                    {
-                    int LA149_31 = input.LA(3);
-
-                    if ( (synpred226()) ) {
-                        alt149=3;
-                    }
-                    else if ( (true) ) {
-                        alt149=4;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("866:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );", 149, 31, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case StringLiteral:
-                    {
-                    int LA149_32 = input.LA(3);
-
-                    if ( (synpred226()) ) {
-                        alt149=3;
-                    }
-                    else if ( (true) ) {
-                        alt149=4;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("866:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );", 149, 32, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case 69:
-                case 70:
-                    {
-                    int LA149_33 = input.LA(3);
-
-                    if ( (synpred226()) ) {
-                        alt149=3;
-                    }
-                    else if ( (true) ) {
-                        alt149=4;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("866:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );", 149, 33, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case 68:
-                    {
-                    int LA149_34 = input.LA(3);
-
-                    if ( (synpred226()) ) {
-                        alt149=3;
-                    }
-                    else if ( (true) ) {
-                        alt149=4;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("866:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );", 149, 34, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case 114:
-                    {
-                    int LA149_35 = input.LA(3);
-
-                    if ( (synpred226()) ) {
-                        alt149=3;
-                    }
-                    else if ( (true) ) {
-                        alt149=4;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("866:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );", 149, 35, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                case 40:
-                    {
-                    int LA149_36 = input.LA(3);
-
-                    if ( (synpred226()) ) {
-                        alt149=3;
-                    }
-                    else if ( (true) ) {
-                        alt149=4;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("866:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );", 149, 36, input);
-
-                        throw nvae;
-                    }
-                    }
-                    break;
-                default:
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("866:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );", 149, 3, input);
-
-                    throw nvae;
-                }
-
-                }
-                break;
-            case Identifier:
-            case FloatingPointLiteral:
-            case CharacterLiteral:
-            case StringLiteral:
-            case HexLiteral:
-            case OctalLiteral:
-            case DecimalLiteral:
-            case 33:
-            case 40:
-            case 55:
-            case 56:
-            case 57:
-            case 58:
-            case 59:
-            case 60:
-            case 61:
-            case 62:
-            case 64:
-            case 68:
-            case 69:
-            case 70:
-            case 113:
-            case 114:
-                {
-                alt149=4;
-                }
-                break;
-            default:
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("866:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );", 149, 0, input);
-
-                throw nvae;
-            }
-
+            alt149 = dfa149.predict(input);
             switch (alt149) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:867:9: '~' unaryExpression
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:867:9: '~' unaryExpression
                     {
-                    match(input,111,FOLLOW_111_in_unaryExpressionNotPlusMinus3690); if (failed) return ;
+                    match(input,111,FOLLOW_111_in_unaryExpressionNotPlusMinus3690); if (state.failed) return ;
                     pushFollow(FOLLOW_unaryExpression_in_unaryExpressionNotPlusMinus3692);
                     unaryExpression();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:868:8: '!' unaryExpression
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:868:8: '!' unaryExpression
                     {
-                    match(input,112,FOLLOW_112_in_unaryExpressionNotPlusMinus3701); if (failed) return ;
+                    match(input,112,FOLLOW_112_in_unaryExpressionNotPlusMinus3701); if (state.failed) return ;
                     pushFollow(FOLLOW_unaryExpression_in_unaryExpressionNotPlusMinus3703);
                     unaryExpression();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:869:9: castExpression
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:869:9: castExpression
                     {
                     pushFollow(FOLLOW_castExpression_in_unaryExpressionNotPlusMinus3713);
                     castExpression();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 4 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:870:9: primary ( selector )* ( '++' | '--' )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:870:9: primary ( selector )* ( '++' | '--' )?
                     {
                     pushFollow(FOLLOW_primary_in_unaryExpressionNotPlusMinus3723);
                     primary();
-                    _fsp--;
-                    if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:870:17: ( selector )*
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:870:17: ( selector )*
                     loop147:
                     do {
                         int alt147=2;
-                        int LA147_0 = input.LA(1);
-
-                        if ( (LA147_0==28||LA147_0==41) ) {
-                            alt147=1;
-                        }
-
-
+                        alt147 = dfa147.predict(input);
                         switch (alt147) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: selector
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: selector
                     	    {
                     	    pushFollow(FOLLOW_selector_in_unaryExpressionNotPlusMinus3725);
                     	    selector();
-                    	    _fsp--;
-                    	    if (failed) return ;
 
+                    	    state._fsp--;
+                    	    if (state.failed) return ;
+
                     	    }
                     	    break;
 
@@ -11144,26 +8358,21 @@
                         }
                     } while (true);
 
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:870:27: ( '++' | '--' )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:870:27: ( '++' | '--' )?
                     int alt148=2;
-                    int LA148_0 = input.LA(1);
-
-                    if ( ((LA148_0>=109 && LA148_0<=110)) ) {
-                        alt148=1;
-                    }
+                    alt148 = dfa148.predict(input);
                     switch (alt148) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:
                             {
                             if ( (input.LA(1)>=109 && input.LA(1)<=110) ) {
                                 input.consume();
-                                errorRecovery=false;failed=false;
+                                state.errorRecovery=false;state.failed=false;
                             }
                             else {
-                                if (backtracking>0) {failed=true; return ;}
-                                MismatchedSetException mse =
-                                    new MismatchedSetException(null,input);
-                                recoverFromMismatchedSet(input,mse,FOLLOW_set_in_unaryExpressionNotPlusMinus3728);    throw mse;
+                                if (state.backtracking>0) {state.failed=true; return ;}
+                                MismatchedSetException mse = new MismatchedSetException(null,input);
+                                throw mse;
                             }
 
 
@@ -11183,216 +8392,81 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 117, unaryExpressionNotPlusMinus_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 117, unaryExpressionNotPlusMinus_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end unaryExpressionNotPlusMinus
+    // $ANTLR end "unaryExpressionNotPlusMinus"
 
 
-    // $ANTLR start castExpression
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:873:1: castExpression : ( '(' primitiveType ')' unaryExpression | '(' ( type | expression ) ')' unaryExpressionNotPlusMinus );
+    // $ANTLR start "castExpression"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:873:1: castExpression : ( '(' primitiveType ')' unaryExpression | '(' ( type | expression ) ')' unaryExpressionNotPlusMinus );
     public final void castExpression() throws RecognitionException {
         int castExpression_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 118) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:874:5: ( '(' primitiveType ')' unaryExpression | '(' ( type | expression ) ')' unaryExpressionNotPlusMinus )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 118) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:874:5: ( '(' primitiveType ')' unaryExpression | '(' ( type | expression ) ')' unaryExpressionNotPlusMinus )
             int alt151=2;
-            int LA151_0 = input.LA(1);
-
-            if ( (LA151_0==65) ) {
-                int LA151_1 = input.LA(2);
-
-                if ( ((LA151_1>=55 && LA151_1<=62)) ) {
-                    int LA151_2 = input.LA(3);
-
-                    if ( (synpred230()) ) {
-                        alt151=1;
-                    }
-                    else if ( (true) ) {
-                        alt151=2;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("873:1: castExpression : ( '(' primitiveType ')' unaryExpression | '(' ( type | expression ) ')' unaryExpressionNotPlusMinus );", 151, 2, input);
-
-                        throw nvae;
-                    }
-                }
-                else if ( (LA151_1==Identifier||(LA151_1>=FloatingPointLiteral && LA151_1<=DecimalLiteral)||LA151_1==33||LA151_1==40||(LA151_1>=64 && LA151_1<=65)||(LA151_1>=68 && LA151_1<=70)||(LA151_1>=105 && LA151_1<=106)||(LA151_1>=109 && LA151_1<=114)) ) {
-                    alt151=2;
-                }
-                else {
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("873:1: castExpression : ( '(' primitiveType ')' unaryExpression | '(' ( type | expression ) ')' unaryExpressionNotPlusMinus );", 151, 1, input);
-
-                    throw nvae;
-                }
-            }
-            else {
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("873:1: castExpression : ( '(' primitiveType ')' unaryExpression | '(' ( type | expression ) ')' unaryExpressionNotPlusMinus );", 151, 0, input);
-
-                throw nvae;
-            }
+            alt151 = dfa151.predict(input);
             switch (alt151) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:874:8: '(' primitiveType ')' unaryExpression
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:874:8: '(' primitiveType ')' unaryExpression
                     {
-                    match(input,65,FOLLOW_65_in_castExpression3751); if (failed) return ;
+                    match(input,65,FOLLOW_65_in_castExpression3751); if (state.failed) return ;
                     pushFollow(FOLLOW_primitiveType_in_castExpression3753);
                     primitiveType();
-                    _fsp--;
-                    if (failed) return ;
-                    match(input,66,FOLLOW_66_in_castExpression3755); if (failed) return ;
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,66,FOLLOW_66_in_castExpression3755); if (state.failed) return ;
                     pushFollow(FOLLOW_unaryExpression_in_castExpression3757);
                     unaryExpression();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:875:8: '(' ( type | expression ) ')' unaryExpressionNotPlusMinus
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:875:8: '(' ( type | expression ) ')' unaryExpressionNotPlusMinus
                     {
-                    match(input,65,FOLLOW_65_in_castExpression3766); if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:875:12: ( type | expression )
+                    match(input,65,FOLLOW_65_in_castExpression3766); if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:875:12: ( type | expression )
                     int alt150=2;
-                    switch ( input.LA(1) ) {
-                    case Identifier:
-                        {
-                        int LA150_1 = input.LA(2);
-
-                        if ( (synpred231()) ) {
-                            alt150=1;
-                        }
-                        else if ( (true) ) {
-                            alt150=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return ;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("875:12: ( type | expression )", 150, 1, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    case 55:
-                    case 56:
-                    case 57:
-                    case 58:
-                    case 59:
-                    case 60:
-                    case 61:
-                    case 62:
-                        {
-                        switch ( input.LA(2) ) {
-                        case 41:
-                            {
-                            int LA150_48 = input.LA(3);
-
-                            if ( (synpred231()) ) {
-                                alt150=1;
-                            }
-                            else if ( (true) ) {
-                                alt150=2;
-                            }
-                            else {
-                                if (backtracking>0) {failed=true; return ;}
-                                NoViableAltException nvae =
-                                    new NoViableAltException("875:12: ( type | expression )", 150, 48, input);
-
-                                throw nvae;
-                            }
-                            }
-                            break;
-                        case 66:
-                            {
-                            alt150=1;
-                            }
-                            break;
-                        case 28:
-                            {
-                            alt150=2;
-                            }
-                            break;
-                        default:
-                            if (backtracking>0) {failed=true; return ;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("875:12: ( type | expression )", 150, 2, input);
-
-                            throw nvae;
-                        }
-
-                        }
-                        break;
-                    case FloatingPointLiteral:
-                    case CharacterLiteral:
-                    case StringLiteral:
-                    case HexLiteral:
-                    case OctalLiteral:
-                    case DecimalLiteral:
-                    case 33:
-                    case 40:
-                    case 64:
-                    case 65:
-                    case 68:
-                    case 69:
-                    case 70:
-                    case 105:
-                    case 106:
-                    case 109:
-                    case 110:
-                    case 111:
-                    case 112:
-                    case 113:
-                    case 114:
-                        {
-                        alt150=2;
-                        }
-                        break;
-                    default:
-                        if (backtracking>0) {failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("875:12: ( type | expression )", 150, 0, input);
-
-                        throw nvae;
-                    }
-
+                    alt150 = dfa150.predict(input);
                     switch (alt150) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:875:13: type
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:875:13: type
                             {
                             pushFollow(FOLLOW_type_in_castExpression3769);
                             type();
-                            _fsp--;
-                            if (failed) return ;
 
+                            state._fsp--;
+                            if (state.failed) return ;
+
                             }
                             break;
                         case 2 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:875:20: expression
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:875:20: expression
                             {
                             pushFollow(FOLLOW_expression_in_castExpression3773);
                             expression();
-                            _fsp--;
-                            if (failed) return ;
 
+                            state._fsp--;
+                            if (state.failed) return ;
+
                             }
                             break;
 
                     }
 
-                    match(input,66,FOLLOW_66_in_castExpression3776); if (failed) return ;
+                    match(input,66,FOLLOW_66_in_castExpression3776); if (state.failed) return ;
                     pushFollow(FOLLOW_unaryExpressionNotPlusMinus_in_castExpression3778);
                     unaryExpressionNotPlusMinus();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -11403,111 +8477,45 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 118, castExpression_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 118, castExpression_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end castExpression
+    // $ANTLR end "castExpression"
 
 
-    // $ANTLR start primary
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:878:1: primary : ( parExpression | nonWildcardTypeArguments ( explicitGenericInvocationSuffix | 'this' arguments ) | 'this' ( '.' Identifier )* ( identifierSuffix )? | 'super' superSuffix | literal | 'new' creator | i= Identifier ( '.' Identifier )* ( identifierSuffix )? | primitiveType ( '[' ']' )* '.' 'class' | 'void' '.' 'class' );
+    // $ANTLR start "primary"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:878:1: primary : ( parExpression | nonWildcardTypeArguments ( explicitGenericInvocationSuffix | 'this' arguments ) | 'this' ( '.' Identifier )* ( identifierSuffix )? | 'super' superSuffix | literal | 'new' creator | i= Identifier ( '.' Identifier )* ( identifierSuffix )? | primitiveType ( '[' ']' )* '.' 'class' | 'void' '.' 'class' );
     public final void primary() throws RecognitionException {
         int primary_StartIndex = input.index();
         Token i=null;
 
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 119) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:879:5: ( parExpression | nonWildcardTypeArguments ( explicitGenericInvocationSuffix | 'this' arguments ) | 'this' ( '.' Identifier )* ( identifierSuffix )? | 'super' superSuffix | literal | 'new' creator | i= Identifier ( '.' Identifier )* ( identifierSuffix )? | primitiveType ( '[' ']' )* '.' 'class' | 'void' '.' 'class' )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 119) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:879:5: ( parExpression | nonWildcardTypeArguments ( explicitGenericInvocationSuffix | 'this' arguments ) | 'this' ( '.' Identifier )* ( identifierSuffix )? | 'super' superSuffix | literal | 'new' creator | i= Identifier ( '.' Identifier )* ( identifierSuffix )? | primitiveType ( '[' ']' )* '.' 'class' | 'void' '.' 'class' )
             int alt158=9;
-            switch ( input.LA(1) ) {
-            case 65:
-                {
-                alt158=1;
-                }
-                break;
-            case 33:
-                {
-                alt158=2;
-                }
-                break;
-            case 113:
-                {
-                alt158=3;
-                }
-                break;
-            case 64:
-                {
-                alt158=4;
-                }
-                break;
-            case FloatingPointLiteral:
-            case CharacterLiteral:
-            case StringLiteral:
-            case HexLiteral:
-            case OctalLiteral:
-            case DecimalLiteral:
-            case 68:
-            case 69:
-            case 70:
-                {
-                alt158=5;
-                }
-                break;
-            case 114:
-                {
-                alt158=6;
-                }
-                break;
-            case Identifier:
-                {
-                alt158=7;
-                }
-                break;
-            case 55:
-            case 56:
-            case 57:
-            case 58:
-            case 59:
-            case 60:
-            case 61:
-            case 62:
-                {
-                alt158=8;
-                }
-                break;
-            case 40:
-                {
-                alt158=9;
-                }
-                break;
-            default:
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("878:1: primary : ( parExpression | nonWildcardTypeArguments ( explicitGenericInvocationSuffix | 'this' arguments ) | 'this' ( '.' Identifier )* ( identifierSuffix )? | 'super' superSuffix | literal | 'new' creator | i= Identifier ( '.' Identifier )* ( identifierSuffix )? | primitiveType ( '[' ']' )* '.' 'class' | 'void' '.' 'class' );", 158, 0, input);
-
-                throw nvae;
-            }
-
+            alt158 = dfa158.predict(input);
             switch (alt158) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:879:7: parExpression
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:879:7: parExpression
                     {
                     pushFollow(FOLLOW_parExpression_in_primary3795);
                     parExpression();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:880:9: nonWildcardTypeArguments ( explicitGenericInvocationSuffix | 'this' arguments )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:880:9: nonWildcardTypeArguments ( explicitGenericInvocationSuffix | 'this' arguments )
                     {
                     pushFollow(FOLLOW_nonWildcardTypeArguments_in_primary3805);
                     nonWildcardTypeArguments();
-                    _fsp--;
-                    if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:881:9: ( explicitGenericInvocationSuffix | 'this' arguments )
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:881:9: ( explicitGenericInvocationSuffix | 'this' arguments )
                     int alt152=2;
                     int LA152_0 = input.LA(1);
 
@@ -11518,32 +8526,34 @@
                         alt152=2;
                     }
                     else {
-                        if (backtracking>0) {failed=true; return ;}
+                        if (state.backtracking>0) {state.failed=true; return ;}
                         NoViableAltException nvae =
-                            new NoViableAltException("881:9: ( explicitGenericInvocationSuffix | 'this' arguments )", 152, 0, input);
+                            new NoViableAltException("", 152, 0, input);
 
                         throw nvae;
                     }
                     switch (alt152) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:881:10: explicitGenericInvocationSuffix
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:881:10: explicitGenericInvocationSuffix
                             {
                             pushFollow(FOLLOW_explicitGenericInvocationSuffix_in_primary3816);
                             explicitGenericInvocationSuffix();
-                            _fsp--;
-                            if (failed) return ;
 
+                            state._fsp--;
+                            if (state.failed) return ;
+
                             }
                             break;
                         case 2 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:881:44: 'this' arguments
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:881:44: 'this' arguments
                             {
-                            match(input,113,FOLLOW_113_in_primary3820); if (failed) return ;
+                            match(input,113,FOLLOW_113_in_primary3820); if (state.failed) return ;
                             pushFollow(FOLLOW_arguments_in_primary3822);
                             arguments();
-                            _fsp--;
-                            if (failed) return ;
 
+                            state._fsp--;
+                            if (state.failed) return ;
+
                             }
                             break;
 
@@ -11553,38 +8563,20 @@
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:882:9: 'this' ( '.' Identifier )* ( identifierSuffix )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:882:9: 'this' ( '.' Identifier )* ( identifierSuffix )?
                     {
-                    match(input,113,FOLLOW_113_in_primary3833); if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:882:16: ( '.' Identifier )*
+                    match(input,113,FOLLOW_113_in_primary3833); if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:882:16: ( '.' Identifier )*
                     loop153:
                     do {
                         int alt153=2;
-                        int LA153_0 = input.LA(1);
-
-                        if ( (LA153_0==28) ) {
-                            int LA153_3 = input.LA(2);
-
-                            if ( (LA153_3==Identifier) ) {
-                                int LA153_36 = input.LA(3);
-
-                                if ( (synpred235()) ) {
-                                    alt153=1;
-                                }
-
-
-                            }
-
-
-                        }
-
-
+                        alt153 = dfa153.predict(input);
                         switch (alt153) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:882:17: '.' Identifier
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:882:17: '.' Identifier
                     	    {
-                    	    match(input,28,FOLLOW_28_in_primary3836); if (failed) return ;
-                    	    match(input,Identifier,FOLLOW_Identifier_in_primary3838); if (failed) return ;
+                    	    match(input,28,FOLLOW_28_in_primary3836); if (state.failed) return ;
+                    	    match(input,Identifier,FOLLOW_Identifier_in_primary3838); if (state.failed) return ;
 
                     	    }
                     	    break;
@@ -11594,267 +8586,19 @@
                         }
                     } while (true);
 
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:882:34: ( identifierSuffix )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:882:34: ( identifierSuffix )?
                     int alt154=2;
-                    switch ( input.LA(1) ) {
-                        case 41:
-                            {
-                            switch ( input.LA(2) ) {
-                                case 42:
-                                    {
-                                    alt154=1;
-                                    }
-                                    break;
-                                case 105:
-                                    {
-                                    int LA154_34 = input.LA(3);
-
-                                    if ( (synpred236()) ) {
-                                        alt154=1;
-                                    }
-                                    }
-                                    break;
-                                case 106:
-                                    {
-                                    int LA154_35 = input.LA(3);
-
-                                    if ( (synpred236()) ) {
-                                        alt154=1;
-                                    }
-                                    }
-                                    break;
-                                case 109:
-                                    {
-                                    int LA154_36 = input.LA(3);
-
-                                    if ( (synpred236()) ) {
-                                        alt154=1;
-                                    }
-                                    }
-                                    break;
-                                case 110:
-                                    {
-                                    int LA154_37 = input.LA(3);
-
-                                    if ( (synpred236()) ) {
-                                        alt154=1;
-                                    }
-                                    }
-                                    break;
-                                case 111:
-                                    {
-                                    int LA154_38 = input.LA(3);
-
-                                    if ( (synpred236()) ) {
-                                        alt154=1;
-                                    }
-                                    }
-                                    break;
-                                case 112:
-                                    {
-                                    int LA154_39 = input.LA(3);
-
-                                    if ( (synpred236()) ) {
-                                        alt154=1;
-                                    }
-                                    }
-                                    break;
-                                case 65:
-                                    {
-                                    int LA154_40 = input.LA(3);
-
-                                    if ( (synpred236()) ) {
-                                        alt154=1;
-                                    }
-                                    }
-                                    break;
-                                case 33:
-                                    {
-                                    int LA154_41 = input.LA(3);
-
-                                    if ( (synpred236()) ) {
-                                        alt154=1;
-                                    }
-                                    }
-                                    break;
-                                case 113:
-                                    {
-                                    int LA154_42 = input.LA(3);
-
-                                    if ( (synpred236()) ) {
-                                        alt154=1;
-                                    }
-                                    }
-                                    break;
-                                case 64:
-                                    {
-                                    int LA154_43 = input.LA(3);
-
-                                    if ( (synpred236()) ) {
-                                        alt154=1;
-                                    }
-                                    }
-                                    break;
-                                case HexLiteral:
-                                case OctalLiteral:
-                                case DecimalLiteral:
-                                    {
-                                    int LA154_44 = input.LA(3);
-
-                                    if ( (synpred236()) ) {
-                                        alt154=1;
-                                    }
-                                    }
-                                    break;
-                                case FloatingPointLiteral:
-                                    {
-                                    int LA154_45 = input.LA(3);
-
-                                    if ( (synpred236()) ) {
-                                        alt154=1;
-                                    }
-                                    }
-                                    break;
-                                case CharacterLiteral:
-                                    {
-                                    int LA154_46 = input.LA(3);
-
-                                    if ( (synpred236()) ) {
-                                        alt154=1;
-                                    }
-                                    }
-                                    break;
-                                case StringLiteral:
-                                    {
-                                    int LA154_47 = input.LA(3);
-
-                                    if ( (synpred236()) ) {
-                                        alt154=1;
-                                    }
-                                    }
-                                    break;
-                                case 69:
-                                case 70:
-                                    {
-                                    int LA154_48 = input.LA(3);
-
-                                    if ( (synpred236()) ) {
-                                        alt154=1;
-                                    }
-                                    }
-                                    break;
-                                case 68:
-                                    {
-                                    int LA154_49 = input.LA(3);
-
-                                    if ( (synpred236()) ) {
-                                        alt154=1;
-                                    }
-                                    }
-                                    break;
-                                case 114:
-                                    {
-                                    int LA154_50 = input.LA(3);
-
-                                    if ( (synpred236()) ) {
-                                        alt154=1;
-                                    }
-                                    }
-                                    break;
-                                case Identifier:
-                                    {
-                                    int LA154_51 = input.LA(3);
-
-                                    if ( (synpred236()) ) {
-                                        alt154=1;
-                                    }
-                                    }
-                                    break;
-                                case 55:
-                                case 56:
-                                case 57:
-                                case 58:
-                                case 59:
-                                case 60:
-                                case 61:
-                                case 62:
-                                    {
-                                    int LA154_52 = input.LA(3);
-
-                                    if ( (synpred236()) ) {
-                                        alt154=1;
-                                    }
-                                    }
-                                    break;
-                                case 40:
-                                    {
-                                    int LA154_53 = input.LA(3);
-
-                                    if ( (synpred236()) ) {
-                                        alt154=1;
-                                    }
-                                    }
-                                    break;
-                            }
-
-                            }
-                            break;
-                        case 65:
-                            {
-                            alt154=1;
-                            }
-                            break;
-                        case 28:
-                            {
-                            switch ( input.LA(2) ) {
-                                case 113:
-                                    {
-                                    int LA154_54 = input.LA(3);
-
-                                    if ( (synpred236()) ) {
-                                        alt154=1;
-                                    }
-                                    }
-                                    break;
-                                case 30:
-                                case 33:
-                                    {
-                                    alt154=1;
-                                    }
-                                    break;
-                                case 64:
-                                    {
-                                    int LA154_56 = input.LA(3);
-
-                                    if ( (synpred236()) ) {
-                                        alt154=1;
-                                    }
-                                    }
-                                    break;
-                                case 114:
-                                    {
-                                    int LA154_57 = input.LA(3);
-
-                                    if ( (synpred236()) ) {
-                                        alt154=1;
-                                    }
-                                    }
-                                    break;
-                            }
-
-                            }
-                            break;
-                    }
-
+                    alt154 = dfa154.predict(input);
                     switch (alt154) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:882:35: identifierSuffix
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:882:35: identifierSuffix
                             {
                             pushFollow(FOLLOW_identifierSuffix_in_primary3843);
                             identifierSuffix();
-                            _fsp--;
-                            if (failed) return ;
 
+                            state._fsp--;
+                            if (state.failed) return ;
+
                             }
                             break;
 
@@ -11864,74 +8608,58 @@
                     }
                     break;
                 case 4 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:883:9: 'super' superSuffix
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:883:9: 'super' superSuffix
                     {
-                    match(input,64,FOLLOW_64_in_primary3855); if (failed) return ;
+                    match(input,64,FOLLOW_64_in_primary3855); if (state.failed) return ;
                     pushFollow(FOLLOW_superSuffix_in_primary3857);
                     superSuffix();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 5 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:884:9: literal
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:884:9: literal
                     {
                     pushFollow(FOLLOW_literal_in_primary3867);
                     literal();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 6 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:885:9: 'new' creator
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:885:9: 'new' creator
                     {
-                    match(input,114,FOLLOW_114_in_primary3877); if (failed) return ;
+                    match(input,114,FOLLOW_114_in_primary3877); if (state.failed) return ;
                     pushFollow(FOLLOW_creator_in_primary3879);
                     creator();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 7 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:886:9: i= Identifier ( '.' Identifier )* ( identifierSuffix )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:886:9: i= Identifier ( '.' Identifier )* ( identifierSuffix )?
                     {
-                    i=(Token)input.LT(1);
-                    match(input,Identifier,FOLLOW_Identifier_in_primary3891); if (failed) return ;
-                    if ( backtracking==0 ) {
-                       if( ! "(".equals( input.LT(1) == null ? "" : input.LT(1).getText() ) ) identifiers.add( i.getText() );  
+                    i=(Token)match(input,Identifier,FOLLOW_Identifier_in_primary3891); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       if( ! "(".equals( input.LT(1) == null ? "" : input.LT(1).getText() ) ) identifiers.add( (i!=null?i.getText():null) );  
                     }
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:886:126: ( '.' Identifier )*
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:886:126: ( '.' Identifier )*
                     loop155:
                     do {
                         int alt155=2;
-                        int LA155_0 = input.LA(1);
-
-                        if ( (LA155_0==28) ) {
-                            int LA155_3 = input.LA(2);
-
-                            if ( (LA155_3==Identifier) ) {
-                                int LA155_37 = input.LA(3);
-
-                                if ( (synpred241()) ) {
-                                    alt155=1;
-                                }
-
-
-                            }
-
-
-                        }
-
-
+                        alt155 = dfa155.predict(input);
                         switch (alt155) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:886:127: '.' Identifier
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:886:127: '.' Identifier
                     	    {
-                    	    match(input,28,FOLLOW_28_in_primary3896); if (failed) return ;
-                    	    match(input,Identifier,FOLLOW_Identifier_in_primary3898); if (failed) return ;
+                    	    match(input,28,FOLLOW_28_in_primary3896); if (state.failed) return ;
+                    	    match(input,Identifier,FOLLOW_Identifier_in_primary3898); if (state.failed) return ;
 
                     	    }
                     	    break;
@@ -11941,267 +8669,19 @@
                         }
                     } while (true);
 
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:886:144: ( identifierSuffix )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:886:144: ( identifierSuffix )?
                     int alt156=2;
-                    switch ( input.LA(1) ) {
-                        case 41:
-                            {
-                            switch ( input.LA(2) ) {
-                                case 42:
-                                    {
-                                    alt156=1;
-                                    }
-                                    break;
-                                case 105:
-                                    {
-                                    int LA156_34 = input.LA(3);
-
-                                    if ( (synpred242()) ) {
-                                        alt156=1;
-                                    }
-                                    }
-                                    break;
-                                case 106:
-                                    {
-                                    int LA156_35 = input.LA(3);
-
-                                    if ( (synpred242()) ) {
-                                        alt156=1;
-                                    }
-                                    }
-                                    break;
-                                case 109:
-                                    {
-                                    int LA156_36 = input.LA(3);
-
-                                    if ( (synpred242()) ) {
-                                        alt156=1;
-                                    }
-                                    }
-                                    break;
-                                case 110:
-                                    {
-                                    int LA156_37 = input.LA(3);
-
-                                    if ( (synpred242()) ) {
-                                        alt156=1;
-                                    }
-                                    }
-                                    break;
-                                case 111:
-                                    {
-                                    int LA156_38 = input.LA(3);
-
-                                    if ( (synpred242()) ) {
-                                        alt156=1;
-                                    }
-                                    }
-                                    break;
-                                case 112:
-                                    {
-                                    int LA156_39 = input.LA(3);
-
-                                    if ( (synpred242()) ) {
-                                        alt156=1;
-                                    }
-                                    }
-                                    break;
-                                case 65:
-                                    {
-                                    int LA156_40 = input.LA(3);
-
-                                    if ( (synpred242()) ) {
-                                        alt156=1;
-                                    }
-                                    }
-                                    break;
-                                case 33:
-                                    {
-                                    int LA156_41 = input.LA(3);
-
-                                    if ( (synpred242()) ) {
-                                        alt156=1;
-                                    }
-                                    }
-                                    break;
-                                case 113:
-                                    {
-                                    int LA156_42 = input.LA(3);
-
-                                    if ( (synpred242()) ) {
-                                        alt156=1;
-                                    }
-                                    }
-                                    break;
-                                case 64:
-                                    {
-                                    int LA156_43 = input.LA(3);
-
-                                    if ( (synpred242()) ) {
-                                        alt156=1;
-                                    }
-                                    }
-                                    break;
-                                case HexLiteral:
-                                case OctalLiteral:
-                                case DecimalLiteral:
-                                    {
-                                    int LA156_44 = input.LA(3);
-
-                                    if ( (synpred242()) ) {
-                                        alt156=1;
-                                    }
-                                    }
-                                    break;
-                                case FloatingPointLiteral:
-                                    {
-                                    int LA156_45 = input.LA(3);
-
-                                    if ( (synpred242()) ) {
-                                        alt156=1;
-                                    }
-                                    }
-                                    break;
-                                case CharacterLiteral:
-                                    {
-                                    int LA156_46 = input.LA(3);
-
-                                    if ( (synpred242()) ) {
-                                        alt156=1;
-                                    }
-                                    }
-                                    break;
-                                case StringLiteral:
-                                    {
-                                    int LA156_47 = input.LA(3);
-
-                                    if ( (synpred242()) ) {
-                                        alt156=1;
-                                    }
-                                    }
-                                    break;
-                                case 69:
-                                case 70:
-                                    {
-                                    int LA156_48 = input.LA(3);
-
-                                    if ( (synpred242()) ) {
-                                        alt156=1;
-                                    }
-                                    }
-                                    break;
-                                case 68:
-                                    {
-                                    int LA156_49 = input.LA(3);
-
-                                    if ( (synpred242()) ) {
-                                        alt156=1;
-                                    }
-                                    }
-                                    break;
-                                case 114:
-                                    {
-                                    int LA156_50 = input.LA(3);
-
-                                    if ( (synpred242()) ) {
-                                        alt156=1;
-                                    }
-                                    }
-                                    break;
-                                case Identifier:
-                                    {
-                                    int LA156_51 = input.LA(3);
-
-                                    if ( (synpred242()) ) {
-                                        alt156=1;
-                                    }
-                                    }
-                                    break;
-                                case 55:
-                                case 56:
-                                case 57:
-                                case 58:
-                                case 59:
-                                case 60:
-                                case 61:
-                                case 62:
-                                    {
-                                    int LA156_52 = input.LA(3);
-
-                                    if ( (synpred242()) ) {
-                                        alt156=1;
-                                    }
-                                    }
-                                    break;
-                                case 40:
-                                    {
-                                    int LA156_53 = input.LA(3);
-
-                                    if ( (synpred242()) ) {
-                                        alt156=1;
-                                    }
-                                    }
-                                    break;
-                            }
-
-                            }
-                            break;
-                        case 65:
-                            {
-                            alt156=1;
-                            }
-                            break;
-                        case 28:
-                            {
-                            switch ( input.LA(2) ) {
-                                case 113:
-                                    {
-                                    int LA156_54 = input.LA(3);
-
-                                    if ( (synpred242()) ) {
-                                        alt156=1;
-                                    }
-                                    }
-                                    break;
-                                case 64:
-                                    {
-                                    int LA156_55 = input.LA(3);
-
-                                    if ( (synpred242()) ) {
-                                        alt156=1;
-                                    }
-                                    }
-                                    break;
-                                case 114:
-                                    {
-                                    int LA156_56 = input.LA(3);
-
-                                    if ( (synpred242()) ) {
-                                        alt156=1;
-                                    }
-                                    }
-                                    break;
-                                case 30:
-                                case 33:
-                                    {
-                                    alt156=1;
-                                    }
-                                    break;
-                            }
-
-                            }
-                            break;
-                    }
-
+                    alt156 = dfa156.predict(input);
                     switch (alt156) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:886:145: identifierSuffix
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:886:145: identifierSuffix
                             {
                             pushFollow(FOLLOW_identifierSuffix_in_primary3903);
                             identifierSuffix();
-                            _fsp--;
-                            if (failed) return ;
 
+                            state._fsp--;
+                            if (state.failed) return ;
+
                             }
                             break;
 
@@ -12211,13 +8691,14 @@
                     }
                     break;
                 case 8 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:887:9: primitiveType ( '[' ']' )* '.' 'class'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:887:9: primitiveType ( '[' ']' )* '.' 'class'
                     {
                     pushFollow(FOLLOW_primitiveType_in_primary3915);
                     primitiveType();
-                    _fsp--;
-                    if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:887:23: ( '[' ']' )*
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:887:23: ( '[' ']' )*
                     loop157:
                     do {
                         int alt157=2;
@@ -12230,10 +8711,10 @@
 
                         switch (alt157) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:887:24: '[' ']'
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:887:24: '[' ']'
                     	    {
-                    	    match(input,41,FOLLOW_41_in_primary3918); if (failed) return ;
-                    	    match(input,42,FOLLOW_42_in_primary3920); if (failed) return ;
+                    	    match(input,41,FOLLOW_41_in_primary3918); if (state.failed) return ;
+                    	    match(input,42,FOLLOW_42_in_primary3920); if (state.failed) return ;
 
                     	    }
                     	    break;
@@ -12243,17 +8724,17 @@
                         }
                     } while (true);
 
-                    match(input,28,FOLLOW_28_in_primary3924); if (failed) return ;
-                    match(input,30,FOLLOW_30_in_primary3926); if (failed) return ;
+                    match(input,28,FOLLOW_28_in_primary3924); if (state.failed) return ;
+                    match(input,30,FOLLOW_30_in_primary3926); if (state.failed) return ;
 
                     }
                     break;
                 case 9 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:888:9: 'void' '.' 'class'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:888:9: 'void' '.' 'class'
                     {
-                    match(input,40,FOLLOW_40_in_primary3936); if (failed) return ;
-                    match(input,28,FOLLOW_28_in_primary3938); if (failed) return ;
-                    match(input,30,FOLLOW_30_in_primary3940); if (failed) return ;
+                    match(input,40,FOLLOW_40_in_primary3936); if (state.failed) return ;
+                    match(input,28,FOLLOW_28_in_primary3938); if (state.failed) return ;
+                    match(input,30,FOLLOW_30_in_primary3940); if (state.failed) return ;
 
                     }
                     break;
@@ -12265,97 +8746,27 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 119, primary_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 119, primary_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end primary
+    // $ANTLR end "primary"
 
 
-    // $ANTLR start identifierSuffix
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:891:1: identifierSuffix : ( ( '[' ']' )+ '.' 'class' | ( '[' expression ']' )+ | arguments | '.' 'class' | '.' explicitGenericInvocation | '.' 'this' | '.' 'super' arguments | '.' 'new' ( nonWildcardTypeArguments )? innerCreator );
+    // $ANTLR start "identifierSuffix"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:891:1: identifierSuffix : ( ( '[' ']' )+ '.' 'class' | ( '[' expression ']' )+ | arguments | '.' 'class' | '.' explicitGenericInvocation | '.' 'this' | '.' 'super' arguments | '.' 'new' ( nonWildcardTypeArguments )? innerCreator );
     public final void identifierSuffix() throws RecognitionException {
         int identifierSuffix_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 120) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:892:2: ( ( '[' ']' )+ '.' 'class' | ( '[' expression ']' )+ | arguments | '.' 'class' | '.' explicitGenericInvocation | '.' 'this' | '.' 'super' arguments | '.' 'new' ( nonWildcardTypeArguments )? innerCreator )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 120) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:892:2: ( ( '[' ']' )+ '.' 'class' | ( '[' expression ']' )+ | arguments | '.' 'class' | '.' explicitGenericInvocation | '.' 'this' | '.' 'super' arguments | '.' 'new' ( nonWildcardTypeArguments )? innerCreator )
             int alt162=8;
-            switch ( input.LA(1) ) {
-            case 41:
-                {
-                int LA162_1 = input.LA(2);
-
-                if ( (LA162_1==42) ) {
-                    alt162=1;
-                }
-                else if ( (LA162_1==Identifier||(LA162_1>=FloatingPointLiteral && LA162_1<=DecimalLiteral)||LA162_1==33||LA162_1==40||(LA162_1>=55 && LA162_1<=62)||(LA162_1>=64 && LA162_1<=65)||(LA162_1>=68 && LA162_1<=70)||(LA162_1>=105 && LA162_1<=106)||(LA162_1>=109 && LA162_1<=114)) ) {
-                    alt162=2;
-                }
-                else {
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("891:1: identifierSuffix : ( ( '[' ']' )+ '.' 'class' | ( '[' expression ']' )+ | arguments | '.' 'class' | '.' explicitGenericInvocation | '.' 'this' | '.' 'super' arguments | '.' 'new' ( nonWildcardTypeArguments )? innerCreator );", 162, 1, input);
-
-                    throw nvae;
-                }
-                }
-                break;
-            case 65:
-                {
-                alt162=3;
-                }
-                break;
-            case 28:
-                {
-                switch ( input.LA(2) ) {
-                case 114:
-                    {
-                    alt162=8;
-                    }
-                    break;
-                case 113:
-                    {
-                    alt162=6;
-                    }
-                    break;
-                case 64:
-                    {
-                    alt162=7;
-                    }
-                    break;
-                case 30:
-                    {
-                    alt162=4;
-                    }
-                    break;
-                case 33:
-                    {
-                    alt162=5;
-                    }
-                    break;
-                default:
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("891:1: identifierSuffix : ( ( '[' ']' )+ '.' 'class' | ( '[' expression ']' )+ | arguments | '.' 'class' | '.' explicitGenericInvocation | '.' 'this' | '.' 'super' arguments | '.' 'new' ( nonWildcardTypeArguments )? innerCreator );", 162, 3, input);
-
-                    throw nvae;
-                }
-
-                }
-                break;
-            default:
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("891:1: identifierSuffix : ( ( '[' ']' )+ '.' 'class' | ( '[' expression ']' )+ | arguments | '.' 'class' | '.' explicitGenericInvocation | '.' 'this' | '.' 'super' arguments | '.' 'new' ( nonWildcardTypeArguments )? innerCreator );", 162, 0, input);
-
-                throw nvae;
-            }
-
+            alt162 = dfa162.predict(input);
             switch (alt162) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:892:4: ( '[' ']' )+ '.' 'class'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:892:4: ( '[' ']' )+ '.' 'class'
                     {
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:892:4: ( '[' ']' )+
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:892:4: ( '[' ']' )+
                     int cnt159=0;
                     loop159:
                     do {
@@ -12369,17 +8780,17 @@
 
                         switch (alt159) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:892:5: '[' ']'
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:892:5: '[' ']'
                     	    {
-                    	    match(input,41,FOLLOW_41_in_identifierSuffix3952); if (failed) return ;
-                    	    match(input,42,FOLLOW_42_in_identifierSuffix3954); if (failed) return ;
+                    	    match(input,41,FOLLOW_41_in_identifierSuffix3952); if (state.failed) return ;
+                    	    match(input,42,FOLLOW_42_in_identifierSuffix3954); if (state.failed) return ;
 
                     	    }
                     	    break;
 
                     	default :
                     	    if ( cnt159 >= 1 ) break loop159;
-                    	    if (backtracking>0) {failed=true; return ;}
+                    	    if (state.backtracking>0) {state.failed=true; return ;}
                                 EarlyExitException eee =
                                     new EarlyExitException(159, input);
                                 throw eee;
@@ -12387,276 +8798,38 @@
                         cnt159++;
                     } while (true);
 
-                    match(input,28,FOLLOW_28_in_identifierSuffix3958); if (failed) return ;
-                    match(input,30,FOLLOW_30_in_identifierSuffix3960); if (failed) return ;
+                    match(input,28,FOLLOW_28_in_identifierSuffix3958); if (state.failed) return ;
+                    match(input,30,FOLLOW_30_in_identifierSuffix3960); if (state.failed) return ;
 
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:893:4: ( '[' expression ']' )+
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:893:4: ( '[' expression ']' )+
                     {
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:893:4: ( '[' expression ']' )+
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:893:4: ( '[' expression ']' )+
                     int cnt160=0;
                     loop160:
                     do {
                         int alt160=2;
-                        int LA160_0 = input.LA(1);
-
-                        if ( (LA160_0==41) ) {
-                            switch ( input.LA(2) ) {
-                            case 105:
-                                {
-                                int LA160_32 = input.LA(3);
-
-                                if ( (synpred248()) ) {
-                                    alt160=1;
-                                }
-
-
-                                }
-                                break;
-                            case 106:
-                                {
-                                int LA160_33 = input.LA(3);
-
-                                if ( (synpred248()) ) {
-                                    alt160=1;
-                                }
-
-
-                                }
-                                break;
-                            case 109:
-                                {
-                                int LA160_34 = input.LA(3);
-
-                                if ( (synpred248()) ) {
-                                    alt160=1;
-                                }
-
-
-                                }
-                                break;
-                            case 110:
-                                {
-                                int LA160_35 = input.LA(3);
-
-                                if ( (synpred248()) ) {
-                                    alt160=1;
-                                }
-
-
-                                }
-                                break;
-                            case 111:
-                                {
-                                int LA160_36 = input.LA(3);
-
-                                if ( (synpred248()) ) {
-                                    alt160=1;
-                                }
-
-
-                                }
-                                break;
-                            case 112:
-                                {
-                                int LA160_37 = input.LA(3);
-
-                                if ( (synpred248()) ) {
-                                    alt160=1;
-                                }
-
-
-                                }
-                                break;
-                            case 65:
-                                {
-                                int LA160_38 = input.LA(3);
-
-                                if ( (synpred248()) ) {
-                                    alt160=1;
-                                }
-
-
-                                }
-                                break;
-                            case 33:
-                                {
-                                int LA160_39 = input.LA(3);
-
-                                if ( (synpred248()) ) {
-                                    alt160=1;
-                                }
-
-
-                                }
-                                break;
-                            case 113:
-                                {
-                                int LA160_40 = input.LA(3);
-
-                                if ( (synpred248()) ) {
-                                    alt160=1;
-                                }
-
-
-                                }
-                                break;
-                            case 64:
-                                {
-                                int LA160_41 = input.LA(3);
-
-                                if ( (synpred248()) ) {
-                                    alt160=1;
-                                }
-
-
-                                }
-                                break;
-                            case HexLiteral:
-                            case OctalLiteral:
-                            case DecimalLiteral:
-                                {
-                                int LA160_42 = input.LA(3);
-
-                                if ( (synpred248()) ) {
-                                    alt160=1;
-                                }
-
-
-                                }
-                                break;
-                            case FloatingPointLiteral:
-                                {
-                                int LA160_43 = input.LA(3);
-
-                                if ( (synpred248()) ) {
-                                    alt160=1;
-                                }
-
-
-                                }
-                                break;
-                            case CharacterLiteral:
-                                {
-                                int LA160_44 = input.LA(3);
-
-                                if ( (synpred248()) ) {
-                                    alt160=1;
-                                }
-
-
-                                }
-                                break;
-                            case StringLiteral:
-                                {
-                                int LA160_45 = input.LA(3);
-
-                                if ( (synpred248()) ) {
-                                    alt160=1;
-                                }
-
-
-                                }
-                                break;
-                            case 69:
-                            case 70:
-                                {
-                                int LA160_46 = input.LA(3);
-
-                                if ( (synpred248()) ) {
-                                    alt160=1;
-                                }
-
-
-                                }
-                                break;
-                            case 68:
-                                {
-                                int LA160_47 = input.LA(3);
-
-                                if ( (synpred248()) ) {
-                                    alt160=1;
-                                }
-
-
-                                }
-                                break;
-                            case 114:
-                                {
-                                int LA160_48 = input.LA(3);
-
-                                if ( (synpred248()) ) {
-                                    alt160=1;
-                                }
-
-
-                                }
-                                break;
-                            case Identifier:
-                                {
-                                int LA160_49 = input.LA(3);
-
-                                if ( (synpred248()) ) {
-                                    alt160=1;
-                                }
-
-
-                                }
-                                break;
-                            case 55:
-                            case 56:
-                            case 57:
-                            case 58:
-                            case 59:
-                            case 60:
-                            case 61:
-                            case 62:
-                                {
-                                int LA160_50 = input.LA(3);
-
-                                if ( (synpred248()) ) {
-                                    alt160=1;
-                                }
-
-
-                                }
-                                break;
-                            case 40:
-                                {
-                                int LA160_51 = input.LA(3);
-
-                                if ( (synpred248()) ) {
-                                    alt160=1;
-                                }
-
-
-                                }
-                                break;
-
-                            }
-
-                        }
-
-
+                        alt160 = dfa160.predict(input);
                         switch (alt160) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:893:5: '[' expression ']'
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:893:5: '[' expression ']'
                     	    {
-                    	    match(input,41,FOLLOW_41_in_identifierSuffix3966); if (failed) return ;
+                    	    match(input,41,FOLLOW_41_in_identifierSuffix3966); if (state.failed) return ;
                     	    pushFollow(FOLLOW_expression_in_identifierSuffix3968);
                     	    expression();
-                    	    _fsp--;
-                    	    if (failed) return ;
-                    	    match(input,42,FOLLOW_42_in_identifierSuffix3970); if (failed) return ;
 
+                    	    state._fsp--;
+                    	    if (state.failed) return ;
+                    	    match(input,42,FOLLOW_42_in_identifierSuffix3970); if (state.failed) return ;
+
                     	    }
                     	    break;
 
                     	default :
                     	    if ( cnt160 >= 1 ) break loop160;
-                    	    if (backtracking>0) {failed=true; return ;}
+                    	    if (state.backtracking>0) {state.failed=true; return ;}
                                 EarlyExitException eee =
                                     new EarlyExitException(160, input);
                                 throw eee;
@@ -12668,60 +8841,63 @@
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:894:9: arguments
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:894:9: arguments
                     {
                     pushFollow(FOLLOW_arguments_in_identifierSuffix3983);
                     arguments();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 4 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:895:9: '.' 'class'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:895:9: '.' 'class'
                     {
-                    match(input,28,FOLLOW_28_in_identifierSuffix3993); if (failed) return ;
-                    match(input,30,FOLLOW_30_in_identifierSuffix3995); if (failed) return ;
+                    match(input,28,FOLLOW_28_in_identifierSuffix3993); if (state.failed) return ;
+                    match(input,30,FOLLOW_30_in_identifierSuffix3995); if (state.failed) return ;
 
                     }
                     break;
                 case 5 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:896:9: '.' explicitGenericInvocation
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:896:9: '.' explicitGenericInvocation
                     {
-                    match(input,28,FOLLOW_28_in_identifierSuffix4005); if (failed) return ;
+                    match(input,28,FOLLOW_28_in_identifierSuffix4005); if (state.failed) return ;
                     pushFollow(FOLLOW_explicitGenericInvocation_in_identifierSuffix4007);
                     explicitGenericInvocation();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 6 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:897:9: '.' 'this'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:897:9: '.' 'this'
                     {
-                    match(input,28,FOLLOW_28_in_identifierSuffix4017); if (failed) return ;
-                    match(input,113,FOLLOW_113_in_identifierSuffix4019); if (failed) return ;
+                    match(input,28,FOLLOW_28_in_identifierSuffix4017); if (state.failed) return ;
+                    match(input,113,FOLLOW_113_in_identifierSuffix4019); if (state.failed) return ;
 
                     }
                     break;
                 case 7 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:898:9: '.' 'super' arguments
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:898:9: '.' 'super' arguments
                     {
-                    match(input,28,FOLLOW_28_in_identifierSuffix4029); if (failed) return ;
-                    match(input,64,FOLLOW_64_in_identifierSuffix4031); if (failed) return ;
+                    match(input,28,FOLLOW_28_in_identifierSuffix4029); if (state.failed) return ;
+                    match(input,64,FOLLOW_64_in_identifierSuffix4031); if (state.failed) return ;
                     pushFollow(FOLLOW_arguments_in_identifierSuffix4033);
                     arguments();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 8 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:899:9: '.' 'new' ( nonWildcardTypeArguments )? innerCreator
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:899:9: '.' 'new' ( nonWildcardTypeArguments )? innerCreator
                     {
-                    match(input,28,FOLLOW_28_in_identifierSuffix4043); if (failed) return ;
-                    match(input,114,FOLLOW_114_in_identifierSuffix4045); if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:899:19: ( nonWildcardTypeArguments )?
+                    match(input,28,FOLLOW_28_in_identifierSuffix4043); if (state.failed) return ;
+                    match(input,114,FOLLOW_114_in_identifierSuffix4045); if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:899:19: ( nonWildcardTypeArguments )?
                     int alt161=2;
                     int LA161_0 = input.LA(1);
 
@@ -12730,13 +8906,14 @@
                     }
                     switch (alt161) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:899:20: nonWildcardTypeArguments
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:899:20: nonWildcardTypeArguments
                             {
                             pushFollow(FOLLOW_nonWildcardTypeArguments_in_identifierSuffix4048);
                             nonWildcardTypeArguments();
-                            _fsp--;
-                            if (failed) return ;
 
+                            state._fsp--;
+                            if (state.failed) return ;
+
                             }
                             break;
 
@@ -12744,9 +8921,10 @@
 
                     pushFollow(FOLLOW_innerCreator_in_identifierSuffix4052);
                     innerCreator();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -12757,23 +8935,23 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 120, identifierSuffix_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 120, identifierSuffix_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end identifierSuffix
+    // $ANTLR end "identifierSuffix"
 
 
-    // $ANTLR start creator
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:902:1: creator : ( nonWildcardTypeArguments )? createdName ( arrayCreatorRest | classCreatorRest ) ;
+    // $ANTLR start "creator"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:902:1: creator : ( nonWildcardTypeArguments )? createdName ( arrayCreatorRest | classCreatorRest ) ;
     public final void creator() throws RecognitionException {
         int creator_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 121) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:903:2: ( ( nonWildcardTypeArguments )? createdName ( arrayCreatorRest | classCreatorRest ) )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:903:4: ( nonWildcardTypeArguments )? createdName ( arrayCreatorRest | classCreatorRest )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 121) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:903:2: ( ( nonWildcardTypeArguments )? createdName ( arrayCreatorRest | classCreatorRest ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:903:4: ( nonWildcardTypeArguments )? createdName ( arrayCreatorRest | classCreatorRest )
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:903:4: ( nonWildcardTypeArguments )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:903:4: ( nonWildcardTypeArguments )?
             int alt163=2;
             int LA163_0 = input.LA(1);
 
@@ -12782,13 +8960,14 @@
             }
             switch (alt163) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: nonWildcardTypeArguments
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: nonWildcardTypeArguments
                     {
                     pushFollow(FOLLOW_nonWildcardTypeArguments_in_creator4064);
                     nonWildcardTypeArguments();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -12796,9 +8975,10 @@
 
             pushFollow(FOLLOW_createdName_in_creator4067);
             createdName();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:904:9: ( arrayCreatorRest | classCreatorRest )
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:904:9: ( arrayCreatorRest | classCreatorRest )
             int alt164=2;
             int LA164_0 = input.LA(1);
 
@@ -12809,31 +8989,33 @@
                 alt164=2;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("904:9: ( arrayCreatorRest | classCreatorRest )", 164, 0, input);
+                    new NoViableAltException("", 164, 0, input);
 
                 throw nvae;
             }
             switch (alt164) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:904:10: arrayCreatorRest
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:904:10: arrayCreatorRest
                     {
                     pushFollow(FOLLOW_arrayCreatorRest_in_creator4078);
                     arrayCreatorRest();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:904:29: classCreatorRest
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:904:29: classCreatorRest
                     {
                     pushFollow(FOLLOW_classCreatorRest_in_creator4082);
                     classCreatorRest();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -12848,20 +9030,20 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 121, creator_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 121, creator_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end creator
+    // $ANTLR end "creator"
 
 
-    // $ANTLR start createdName
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:907:1: createdName : ( Identifier ( typeArguments )? ( '.' Identifier ( typeArguments )? )* | primitiveType );
+    // $ANTLR start "createdName"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:907:1: createdName : ( Identifier ( typeArguments )? ( '.' Identifier ( typeArguments )? )* | primitiveType );
     public final void createdName() throws RecognitionException {
         int createdName_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 122) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:908:2: ( Identifier ( typeArguments )? ( '.' Identifier ( typeArguments )? )* | primitiveType )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 122) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:908:2: ( Identifier ( typeArguments )? ( '.' Identifier ( typeArguments )? )* | primitiveType )
             int alt168=2;
             int LA168_0 = input.LA(1);
 
@@ -12872,18 +9054,18 @@
                 alt168=2;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("907:1: createdName : ( Identifier ( typeArguments )? ( '.' Identifier ( typeArguments )? )* | primitiveType );", 168, 0, input);
+                    new NoViableAltException("", 168, 0, input);
 
                 throw nvae;
             }
             switch (alt168) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:908:4: Identifier ( typeArguments )? ( '.' Identifier ( typeArguments )? )*
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:908:4: Identifier ( typeArguments )? ( '.' Identifier ( typeArguments )? )*
                     {
-                    match(input,Identifier,FOLLOW_Identifier_in_createdName4094); if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:908:15: ( typeArguments )?
+                    match(input,Identifier,FOLLOW_Identifier_in_createdName4094); if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:908:15: ( typeArguments )?
                     int alt165=2;
                     int LA165_0 = input.LA(1);
 
@@ -12892,19 +9074,20 @@
                     }
                     switch (alt165) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: typeArguments
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: typeArguments
                             {
                             pushFollow(FOLLOW_typeArguments_in_createdName4096);
                             typeArguments();
-                            _fsp--;
-                            if (failed) return ;
 
+                            state._fsp--;
+                            if (state.failed) return ;
+
                             }
                             break;
 
                     }
 
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:909:9: ( '.' Identifier ( typeArguments )? )*
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:909:9: ( '.' Identifier ( typeArguments )? )*
                     loop167:
                     do {
                         int alt167=2;
@@ -12917,11 +9100,11 @@
 
                         switch (alt167) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:909:10: '.' Identifier ( typeArguments )?
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:909:10: '.' Identifier ( typeArguments )?
                     	    {
-                    	    match(input,28,FOLLOW_28_in_createdName4108); if (failed) return ;
-                    	    match(input,Identifier,FOLLOW_Identifier_in_createdName4110); if (failed) return ;
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:909:25: ( typeArguments )?
+                    	    match(input,28,FOLLOW_28_in_createdName4108); if (state.failed) return ;
+                    	    match(input,Identifier,FOLLOW_Identifier_in_createdName4110); if (state.failed) return ;
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:909:25: ( typeArguments )?
                     	    int alt166=2;
                     	    int LA166_0 = input.LA(1);
 
@@ -12930,13 +9113,14 @@
                     	    }
                     	    switch (alt166) {
                     	        case 1 :
-                    	            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: typeArguments
+                    	            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: typeArguments
                     	            {
                     	            pushFollow(FOLLOW_typeArguments_in_createdName4112);
                     	            typeArguments();
-                    	            _fsp--;
-                    	            if (failed) return ;
 
+                    	            state._fsp--;
+                    	            if (state.failed) return ;
+
                     	            }
                     	            break;
 
@@ -12955,13 +9139,14 @@
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:910:7: primitiveType
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:910:7: primitiveType
                     {
                     pushFollow(FOLLOW_primitiveType_in_createdName4123);
                     primitiveType();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -12972,28 +9157,29 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 122, createdName_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 122, createdName_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end createdName
+    // $ANTLR end "createdName"
 
 
-    // $ANTLR start innerCreator
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:913:1: innerCreator : Identifier classCreatorRest ;
+    // $ANTLR start "innerCreator"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:913:1: innerCreator : Identifier classCreatorRest ;
     public final void innerCreator() throws RecognitionException {
         int innerCreator_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 123) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:914:2: ( Identifier classCreatorRest )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:914:4: Identifier classCreatorRest
+            if ( state.backtracking>0 && alreadyParsedRule(input, 123) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:914:2: ( Identifier classCreatorRest )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:914:4: Identifier classCreatorRest
             {
-            match(input,Identifier,FOLLOW_Identifier_in_innerCreator4135); if (failed) return ;
+            match(input,Identifier,FOLLOW_Identifier_in_innerCreator4135); if (state.failed) return ;
             pushFollow(FOLLOW_classCreatorRest_in_innerCreator4137);
             classCreatorRest();
-            _fsp--;
-            if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+
             }
 
         }
@@ -13002,46 +9188,32 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 123, innerCreator_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 123, innerCreator_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end innerCreator
+    // $ANTLR end "innerCreator"
 
 
-    // $ANTLR start arrayCreatorRest
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:917:1: arrayCreatorRest : '[' ( ']' ( '[' ']' )* arrayInitializer | expression ']' ( '[' expression ']' )* ( '[' ']' )* ) ;
+    // $ANTLR start "arrayCreatorRest"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:917:1: arrayCreatorRest : '[' ( ']' ( '[' ']' )* arrayInitializer | expression ']' ( '[' expression ']' )* ( '[' ']' )* ) ;
     public final void arrayCreatorRest() throws RecognitionException {
         int arrayCreatorRest_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 124) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:918:2: ( '[' ( ']' ( '[' ']' )* arrayInitializer | expression ']' ( '[' expression ']' )* ( '[' ']' )* ) )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:918:4: '[' ( ']' ( '[' ']' )* arrayInitializer | expression ']' ( '[' expression ']' )* ( '[' ']' )* )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 124) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:918:2: ( '[' ( ']' ( '[' ']' )* arrayInitializer | expression ']' ( '[' expression ']' )* ( '[' ']' )* ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:918:4: '[' ( ']' ( '[' ']' )* arrayInitializer | expression ']' ( '[' expression ']' )* ( '[' ']' )* )
             {
-            match(input,41,FOLLOW_41_in_arrayCreatorRest4148); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:919:9: ( ']' ( '[' ']' )* arrayInitializer | expression ']' ( '[' expression ']' )* ( '[' ']' )* )
+            match(input,41,FOLLOW_41_in_arrayCreatorRest4148); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:919:9: ( ']' ( '[' ']' )* arrayInitializer | expression ']' ( '[' expression ']' )* ( '[' ']' )* )
             int alt172=2;
-            int LA172_0 = input.LA(1);
-
-            if ( (LA172_0==42) ) {
-                alt172=1;
-            }
-            else if ( (LA172_0==Identifier||(LA172_0>=FloatingPointLiteral && LA172_0<=DecimalLiteral)||LA172_0==33||LA172_0==40||(LA172_0>=55 && LA172_0<=62)||(LA172_0>=64 && LA172_0<=65)||(LA172_0>=68 && LA172_0<=70)||(LA172_0>=105 && LA172_0<=106)||(LA172_0>=109 && LA172_0<=114)) ) {
-                alt172=2;
-            }
-            else {
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("919:9: ( ']' ( '[' ']' )* arrayInitializer | expression ']' ( '[' expression ']' )* ( '[' ']' )* )", 172, 0, input);
-
-                throw nvae;
-            }
+            alt172 = dfa172.predict(input);
             switch (alt172) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:919:13: ']' ( '[' ']' )* arrayInitializer
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:919:13: ']' ( '[' ']' )* arrayInitializer
                     {
-                    match(input,42,FOLLOW_42_in_arrayCreatorRest4162); if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:919:17: ( '[' ']' )*
+                    match(input,42,FOLLOW_42_in_arrayCreatorRest4162); if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:919:17: ( '[' ']' )*
                     loop169:
                     do {
                         int alt169=2;
@@ -13054,10 +9226,10 @@
 
                         switch (alt169) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:919:18: '[' ']'
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:919:18: '[' ']'
                     	    {
-                    	    match(input,41,FOLLOW_41_in_arrayCreatorRest4165); if (failed) return ;
-                    	    match(input,42,FOLLOW_42_in_arrayCreatorRest4167); if (failed) return ;
+                    	    match(input,41,FOLLOW_41_in_arrayCreatorRest4165); if (state.failed) return ;
+                    	    match(input,42,FOLLOW_42_in_arrayCreatorRest4167); if (state.failed) return ;
 
                     	    }
                     	    break;
@@ -13069,274 +9241,38 @@
 
                     pushFollow(FOLLOW_arrayInitializer_in_arrayCreatorRest4171);
                     arrayInitializer();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:920:13: expression ']' ( '[' expression ']' )* ( '[' ']' )*
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:920:13: expression ']' ( '[' expression ']' )* ( '[' ']' )*
                     {
                     pushFollow(FOLLOW_expression_in_arrayCreatorRest4185);
                     expression();
-                    _fsp--;
-                    if (failed) return ;
-                    match(input,42,FOLLOW_42_in_arrayCreatorRest4187); if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:920:28: ( '[' expression ']' )*
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,42,FOLLOW_42_in_arrayCreatorRest4187); if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:920:28: ( '[' expression ']' )*
                     loop170:
                     do {
                         int alt170=2;
-                        int LA170_0 = input.LA(1);
-
-                        if ( (LA170_0==41) ) {
-                            switch ( input.LA(2) ) {
-                            case 105:
-                                {
-                                int LA170_33 = input.LA(3);
-
-                                if ( (synpred264()) ) {
-                                    alt170=1;
-                                }
-
-
-                                }
-                                break;
-                            case 106:
-                                {
-                                int LA170_34 = input.LA(3);
-
-                                if ( (synpred264()) ) {
-                                    alt170=1;
-                                }
-
-
-                                }
-                                break;
-                            case 109:
-                                {
-                                int LA170_35 = input.LA(3);
-
-                                if ( (synpred264()) ) {
-                                    alt170=1;
-                                }
-
-
-                                }
-                                break;
-                            case 110:
-                                {
-                                int LA170_36 = input.LA(3);
-
-                                if ( (synpred264()) ) {
-                                    alt170=1;
-                                }
-
-
-                                }
-                                break;
-                            case 111:
-                                {
-                                int LA170_37 = input.LA(3);
-
-                                if ( (synpred264()) ) {
-                                    alt170=1;
-                                }
-
-
-                                }
-                                break;
-                            case 112:
-                                {
-                                int LA170_38 = input.LA(3);
-
-                                if ( (synpred264()) ) {
-                                    alt170=1;
-                                }
-
-
-                                }
-                                break;
-                            case 65:
-                                {
-                                int LA170_39 = input.LA(3);
-
-                                if ( (synpred264()) ) {
-                                    alt170=1;
-                                }
-
-
-                                }
-                                break;
-                            case 33:
-                                {
-                                int LA170_40 = input.LA(3);
-
-                                if ( (synpred264()) ) {
-                                    alt170=1;
-                                }
-
-
-                                }
-                                break;
-                            case 113:
-                                {
-                                int LA170_41 = input.LA(3);
-
-                                if ( (synpred264()) ) {
-                                    alt170=1;
-                                }
-
-
-                                }
-                                break;
-                            case 64:
-                                {
-                                int LA170_42 = input.LA(3);
-
-                                if ( (synpred264()) ) {
-                                    alt170=1;
-                                }
-
-
-                                }
-                                break;
-                            case HexLiteral:
-                            case OctalLiteral:
-                            case DecimalLiteral:
-                                {
-                                int LA170_43 = input.LA(3);
-
-                                if ( (synpred264()) ) {
-                                    alt170=1;
-                                }
-
-
-                                }
-                                break;
-                            case FloatingPointLiteral:
-                                {
-                                int LA170_44 = input.LA(3);
-
-                                if ( (synpred264()) ) {
-                                    alt170=1;
-                                }
-
-
-                                }
-                                break;
-                            case CharacterLiteral:
-                                {
-                                int LA170_45 = input.LA(3);
-
-                                if ( (synpred264()) ) {
-                                    alt170=1;
-                                }
-
-
-                                }
-                                break;
-                            case StringLiteral:
-                                {
-                                int LA170_46 = input.LA(3);
-
-                                if ( (synpred264()) ) {
-                                    alt170=1;
-                                }
-
-
-                                }
-                                break;
-                            case 69:
-                            case 70:
-                                {
-                                int LA170_47 = input.LA(3);
-
-                                if ( (synpred264()) ) {
-                                    alt170=1;
-                                }
-
-
-                                }
-                                break;
-                            case 68:
-                                {
-                                int LA170_48 = input.LA(3);
-
-                                if ( (synpred264()) ) {
-                                    alt170=1;
-                                }
-
-
-                                }
-                                break;
-                            case 114:
-                                {
-                                int LA170_49 = input.LA(3);
-
-                                if ( (synpred264()) ) {
-                                    alt170=1;
-                                }
-
-
-                                }
-                                break;
-                            case Identifier:
-                                {
-                                int LA170_50 = input.LA(3);
-
-                                if ( (synpred264()) ) {
-                                    alt170=1;
-                                }
-
-
-                                }
-                                break;
-                            case 55:
-                            case 56:
-                            case 57:
-                            case 58:
-                            case 59:
-                            case 60:
-                            case 61:
-                            case 62:
-                                {
-                                int LA170_51 = input.LA(3);
-
-                                if ( (synpred264()) ) {
-                                    alt170=1;
-                                }
-
-
-                                }
-                                break;
-                            case 40:
-                                {
-                                int LA170_52 = input.LA(3);
-
-                                if ( (synpred264()) ) {
-                                    alt170=1;
-                                }
-
-
-                                }
-                                break;
-
-                            }
-
-                        }
-
-
+                        alt170 = dfa170.predict(input);
                         switch (alt170) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:920:29: '[' expression ']'
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:920:29: '[' expression ']'
                     	    {
-                    	    match(input,41,FOLLOW_41_in_arrayCreatorRest4190); if (failed) return ;
+                    	    match(input,41,FOLLOW_41_in_arrayCreatorRest4190); if (state.failed) return ;
                     	    pushFollow(FOLLOW_expression_in_arrayCreatorRest4192);
                     	    expression();
-                    	    _fsp--;
-                    	    if (failed) return ;
-                    	    match(input,42,FOLLOW_42_in_arrayCreatorRest4194); if (failed) return ;
 
+                    	    state._fsp--;
+                    	    if (state.failed) return ;
+                    	    match(input,42,FOLLOW_42_in_arrayCreatorRest4194); if (state.failed) return ;
+
                     	    }
                     	    break;
 
@@ -13345,29 +9281,17 @@
                         }
                     } while (true);
 
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:920:50: ( '[' ']' )*
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:920:50: ( '[' ']' )*
                     loop171:
                     do {
                         int alt171=2;
-                        int LA171_0 = input.LA(1);
-
-                        if ( (LA171_0==41) ) {
-                            int LA171_30 = input.LA(2);
-
-                            if ( (LA171_30==42) ) {
-                                alt171=1;
-                            }
-
-
-                        }
-
-
+                        alt171 = dfa171.predict(input);
                         switch (alt171) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:920:51: '[' ']'
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:920:51: '[' ']'
                     	    {
-                    	    match(input,41,FOLLOW_41_in_arrayCreatorRest4199); if (failed) return ;
-                    	    match(input,42,FOLLOW_42_in_arrayCreatorRest4201); if (failed) return ;
+                    	    match(input,41,FOLLOW_41_in_arrayCreatorRest4199); if (state.failed) return ;
+                    	    match(input,42,FOLLOW_42_in_arrayCreatorRest4201); if (state.failed) return ;
 
                     	    }
                     	    break;
@@ -13392,42 +9316,40 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 124, arrayCreatorRest_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 124, arrayCreatorRest_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end arrayCreatorRest
+    // $ANTLR end "arrayCreatorRest"
 
 
-    // $ANTLR start classCreatorRest
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:924:1: classCreatorRest : arguments ( classBody )? ;
+    // $ANTLR start "classCreatorRest"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:924:1: classCreatorRest : arguments ( classBody )? ;
     public final void classCreatorRest() throws RecognitionException {
         int classCreatorRest_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 125) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:925:2: ( arguments ( classBody )? )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:925:4: arguments ( classBody )?
+            if ( state.backtracking>0 && alreadyParsedRule(input, 125) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:925:2: ( arguments ( classBody )? )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:925:4: arguments ( classBody )?
             {
             pushFollow(FOLLOW_arguments_in_classCreatorRest4224);
             arguments();
-            _fsp--;
-            if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:925:14: ( classBody )?
+
+            state._fsp--;
+            if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:925:14: ( classBody )?
             int alt173=2;
-            int LA173_0 = input.LA(1);
-
-            if ( (LA173_0==37) ) {
-                alt173=1;
-            }
+            alt173 = dfa173.predict(input);
             switch (alt173) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: classBody
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: classBody
                     {
                     pushFollow(FOLLOW_classBody_in_classCreatorRest4226);
                     classBody();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -13442,31 +9364,33 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 125, classCreatorRest_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 125, classCreatorRest_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end classCreatorRest
+    // $ANTLR end "classCreatorRest"
 
 
-    // $ANTLR start explicitGenericInvocation
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:928:1: explicitGenericInvocation : nonWildcardTypeArguments explicitGenericInvocationSuffix ;
+    // $ANTLR start "explicitGenericInvocation"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:928:1: explicitGenericInvocation : nonWildcardTypeArguments explicitGenericInvocationSuffix ;
     public final void explicitGenericInvocation() throws RecognitionException {
         int explicitGenericInvocation_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 126) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:929:2: ( nonWildcardTypeArguments explicitGenericInvocationSuffix )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:929:4: nonWildcardTypeArguments explicitGenericInvocationSuffix
+            if ( state.backtracking>0 && alreadyParsedRule(input, 126) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:929:2: ( nonWildcardTypeArguments explicitGenericInvocationSuffix )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:929:4: nonWildcardTypeArguments explicitGenericInvocationSuffix
             {
             pushFollow(FOLLOW_nonWildcardTypeArguments_in_explicitGenericInvocation4239);
             nonWildcardTypeArguments();
-            _fsp--;
-            if (failed) return ;
+
+            state._fsp--;
+            if (state.failed) return ;
             pushFollow(FOLLOW_explicitGenericInvocationSuffix_in_explicitGenericInvocation4241);
             explicitGenericInvocationSuffix();
-            _fsp--;
-            if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+
             }
 
         }
@@ -13475,29 +9399,30 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 126, explicitGenericInvocation_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 126, explicitGenericInvocation_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end explicitGenericInvocation
+    // $ANTLR end "explicitGenericInvocation"
 
 
-    // $ANTLR start nonWildcardTypeArguments
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:932:1: nonWildcardTypeArguments : '<' typeList '>' ;
+    // $ANTLR start "nonWildcardTypeArguments"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:932:1: nonWildcardTypeArguments : '<' typeList '>' ;
     public final void nonWildcardTypeArguments() throws RecognitionException {
         int nonWildcardTypeArguments_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 127) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:933:2: ( '<' typeList '>' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:933:4: '<' typeList '>'
+            if ( state.backtracking>0 && alreadyParsedRule(input, 127) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:933:2: ( '<' typeList '>' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:933:4: '<' typeList '>'
             {
-            match(input,33,FOLLOW_33_in_nonWildcardTypeArguments4253); if (failed) return ;
+            match(input,33,FOLLOW_33_in_nonWildcardTypeArguments4253); if (state.failed) return ;
             pushFollow(FOLLOW_typeList_in_nonWildcardTypeArguments4255);
             typeList();
-            _fsp--;
-            if (failed) return ;
-            match(input,35,FOLLOW_35_in_nonWildcardTypeArguments4257); if (failed) return ;
 
+            state._fsp--;
+            if (state.failed) return ;
+            match(input,35,FOLLOW_35_in_nonWildcardTypeArguments4257); if (state.failed) return ;
+
             }
 
         }
@@ -13506,20 +9431,20 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 127, nonWildcardTypeArguments_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 127, nonWildcardTypeArguments_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end nonWildcardTypeArguments
+    // $ANTLR end "nonWildcardTypeArguments"
 
 
-    // $ANTLR start explicitGenericInvocationSuffix
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:936:1: explicitGenericInvocationSuffix : ( 'super' superSuffix | Identifier arguments );
+    // $ANTLR start "explicitGenericInvocationSuffix"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:936:1: explicitGenericInvocationSuffix : ( 'super' superSuffix | Identifier arguments );
     public final void explicitGenericInvocationSuffix() throws RecognitionException {
         int explicitGenericInvocationSuffix_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 128) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:937:2: ( 'super' superSuffix | Identifier arguments )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 128) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:937:2: ( 'super' superSuffix | Identifier arguments )
             int alt174=2;
             int LA174_0 = input.LA(1);
 
@@ -13530,33 +9455,35 @@
                 alt174=2;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("936:1: explicitGenericInvocationSuffix : ( 'super' superSuffix | Identifier arguments );", 174, 0, input);
+                    new NoViableAltException("", 174, 0, input);
 
                 throw nvae;
             }
             switch (alt174) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:937:4: 'super' superSuffix
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:937:4: 'super' superSuffix
                     {
-                    match(input,64,FOLLOW_64_in_explicitGenericInvocationSuffix4269); if (failed) return ;
+                    match(input,64,FOLLOW_64_in_explicitGenericInvocationSuffix4269); if (state.failed) return ;
                     pushFollow(FOLLOW_superSuffix_in_explicitGenericInvocationSuffix4271);
                     superSuffix();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:938:6: Identifier arguments
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:938:6: Identifier arguments
                     {
-                    match(input,Identifier,FOLLOW_Identifier_in_explicitGenericInvocationSuffix4278); if (failed) return ;
+                    match(input,Identifier,FOLLOW_Identifier_in_explicitGenericInvocationSuffix4278); if (state.failed) return ;
                     pushFollow(FOLLOW_arguments_in_explicitGenericInvocationSuffix4280);
                     arguments();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
@@ -13567,20 +9494,20 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 128, explicitGenericInvocationSuffix_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 128, explicitGenericInvocationSuffix_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end explicitGenericInvocationSuffix
+    // $ANTLR end "explicitGenericInvocationSuffix"
 
 
-    // $ANTLR start selector
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:941:1: selector : ( '.' Identifier ( arguments )? | '.' 'this' | '.' 'super' superSuffix | '.' 'new' ( nonWildcardTypeArguments )? innerCreator | '[' expression ']' );
+    // $ANTLR start "selector"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:941:1: selector : ( '.' Identifier ( arguments )? | '.' 'this' | '.' 'super' superSuffix | '.' 'new' ( nonWildcardTypeArguments )? innerCreator | '[' expression ']' );
     public final void selector() throws RecognitionException {
         int selector_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 129) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:942:2: ( '.' Identifier ( arguments )? | '.' 'this' | '.' 'super' superSuffix | '.' 'new' ( nonWildcardTypeArguments )? innerCreator | '[' expression ']' )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 129) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:942:2: ( '.' Identifier ( arguments )? | '.' 'this' | '.' 'super' superSuffix | '.' 'new' ( nonWildcardTypeArguments )? innerCreator | '[' expression ']' )
             int alt177=5;
             int LA177_0 = input.LA(1);
 
@@ -13596,20 +9523,20 @@
                     alt177=2;
                     }
                     break;
-                case 114:
+                case 64:
                     {
-                    alt177=4;
+                    alt177=3;
                     }
                     break;
-                case 64:
+                case 114:
                     {
-                    alt177=3;
+                    alt177=4;
                     }
                     break;
                 default:
-                    if (backtracking>0) {failed=true; return ;}
+                    if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("941:1: selector : ( '.' Identifier ( arguments )? | '.' 'this' | '.' 'super' superSuffix | '.' 'new' ( nonWildcardTypeArguments )? innerCreator | '[' expression ']' );", 177, 1, input);
+                        new NoViableAltException("", 177, 1, input);
 
                     throw nvae;
                 }
@@ -13619,34 +9546,31 @@
                 alt177=5;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("941:1: selector : ( '.' Identifier ( arguments )? | '.' 'this' | '.' 'super' superSuffix | '.' 'new' ( nonWildcardTypeArguments )? innerCreator | '[' expression ']' );", 177, 0, input);
+                    new NoViableAltException("", 177, 0, input);
 
                 throw nvae;
             }
             switch (alt177) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:942:4: '.' Identifier ( arguments )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:942:4: '.' Identifier ( arguments )?
                     {
-                    match(input,28,FOLLOW_28_in_selector4292); if (failed) return ;
-                    match(input,Identifier,FOLLOW_Identifier_in_selector4294); if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:942:19: ( arguments )?
+                    match(input,28,FOLLOW_28_in_selector4292); if (state.failed) return ;
+                    match(input,Identifier,FOLLOW_Identifier_in_selector4294); if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:942:19: ( arguments )?
                     int alt175=2;
-                    int LA175_0 = input.LA(1);
-
-                    if ( (LA175_0==65) ) {
-                        alt175=1;
-                    }
+                    alt175 = dfa175.predict(input);
                     switch (alt175) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:942:20: arguments
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:942:20: arguments
                             {
                             pushFollow(FOLLOW_arguments_in_selector4297);
                             arguments();
-                            _fsp--;
-                            if (failed) return ;
 
+                            state._fsp--;
+                            if (state.failed) return ;
+
                             }
                             break;
 
@@ -13656,31 +9580,32 @@
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:943:6: '.' 'this'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:943:6: '.' 'this'
                     {
-                    match(input,28,FOLLOW_28_in_selector4306); if (failed) return ;
-                    match(input,113,FOLLOW_113_in_selector4308); if (failed) return ;
+                    match(input,28,FOLLOW_28_in_selector4306); if (state.failed) return ;
+                    match(input,113,FOLLOW_113_in_selector4308); if (state.failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:944:6: '.' 'super' superSuffix
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:944:6: '.' 'super' superSuffix
                     {
-                    match(input,28,FOLLOW_28_in_selector4315); if (failed) return ;
-                    match(input,64,FOLLOW_64_in_selector4317); if (failed) return ;
+                    match(input,28,FOLLOW_28_in_selector4315); if (state.failed) return ;
+                    match(input,64,FOLLOW_64_in_selector4317); if (state.failed) return ;
                     pushFollow(FOLLOW_superSuffix_in_selector4319);
                     superSuffix();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 4 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:945:6: '.' 'new' ( nonWildcardTypeArguments )? innerCreator
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:945:6: '.' 'new' ( nonWildcardTypeArguments )? innerCreator
                     {
-                    match(input,28,FOLLOW_28_in_selector4326); if (failed) return ;
-                    match(input,114,FOLLOW_114_in_selector4328); if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:945:16: ( nonWildcardTypeArguments )?
+                    match(input,28,FOLLOW_28_in_selector4326); if (state.failed) return ;
+                    match(input,114,FOLLOW_114_in_selector4328); if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:945:16: ( nonWildcardTypeArguments )?
                     int alt176=2;
                     int LA176_0 = input.LA(1);
 
@@ -13689,13 +9614,14 @@
                     }
                     switch (alt176) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:945:17: nonWildcardTypeArguments
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:945:17: nonWildcardTypeArguments
                             {
                             pushFollow(FOLLOW_nonWildcardTypeArguments_in_selector4331);
                             nonWildcardTypeArguments();
-                            _fsp--;
-                            if (failed) return ;
 
+                            state._fsp--;
+                            if (state.failed) return ;
+
                             }
                             break;
 
@@ -13703,21 +9629,23 @@
 
                     pushFollow(FOLLOW_innerCreator_in_selector4335);
                     innerCreator();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 5 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:946:6: '[' expression ']'
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:946:6: '[' expression ']'
                     {
-                    match(input,41,FOLLOW_41_in_selector4342); if (failed) return ;
+                    match(input,41,FOLLOW_41_in_selector4342); if (state.failed) return ;
                     pushFollow(FOLLOW_expression_in_selector4344);
                     expression();
-                    _fsp--;
-                    if (failed) return ;
-                    match(input,42,FOLLOW_42_in_selector4346); if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,42,FOLLOW_42_in_selector4346); if (state.failed) return ;
+
                     }
                     break;
 
@@ -13728,20 +9656,20 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 129, selector_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 129, selector_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end selector
+    // $ANTLR end "selector"
 
 
-    // $ANTLR start superSuffix
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:949:1: superSuffix : ( arguments | '.' Identifier ( arguments )? );
+    // $ANTLR start "superSuffix"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:949:1: superSuffix : ( arguments | '.' Identifier ( arguments )? );
     public final void superSuffix() throws RecognitionException {
         int superSuffix_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 130) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:950:2: ( arguments | '.' Identifier ( arguments )? )
+            if ( state.backtracking>0 && alreadyParsedRule(input, 130) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:950:2: ( arguments | '.' Identifier ( arguments )? )
             int alt179=2;
             int LA179_0 = input.LA(1);
 
@@ -13752,44 +9680,42 @@
                 alt179=2;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("949:1: superSuffix : ( arguments | '.' Identifier ( arguments )? );", 179, 0, input);
+                    new NoViableAltException("", 179, 0, input);
 
                 throw nvae;
             }
             switch (alt179) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:950:4: arguments
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:950:4: arguments
                     {
                     pushFollow(FOLLOW_arguments_in_superSuffix4358);
                     arguments();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:951:6: '.' Identifier ( arguments )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:951:6: '.' Identifier ( arguments )?
                     {
-                    match(input,28,FOLLOW_28_in_superSuffix4365); if (failed) return ;
-                    match(input,Identifier,FOLLOW_Identifier_in_superSuffix4367); if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:951:21: ( arguments )?
+                    match(input,28,FOLLOW_28_in_superSuffix4365); if (state.failed) return ;
+                    match(input,Identifier,FOLLOW_Identifier_in_superSuffix4367); if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:951:21: ( arguments )?
                     int alt178=2;
-                    int LA178_0 = input.LA(1);
-
-                    if ( (LA178_0==65) ) {
-                        alt178=1;
-                    }
+                    alt178 = dfa178.predict(input);
                     switch (alt178) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:951:22: arguments
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:951:22: arguments
                             {
                             pushFollow(FOLLOW_arguments_in_superSuffix4370);
                             arguments();
-                            _fsp--;
-                            if (failed) return ;
 
+                            state._fsp--;
+                            if (state.failed) return ;
+
                             }
                             break;
 
@@ -13806,45 +9732,42 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 130, superSuffix_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 130, superSuffix_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end superSuffix
+    // $ANTLR end "superSuffix"
 
 
-    // $ANTLR start arguments
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:954:1: arguments : '(' ( expressionList )? ')' ;
+    // $ANTLR start "arguments"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:954:1: arguments : '(' ( expressionList )? ')' ;
     public final void arguments() throws RecognitionException {
         int arguments_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 131) ) { return ; }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:955:2: ( '(' ( expressionList )? ')' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:955:4: '(' ( expressionList )? ')'
+            if ( state.backtracking>0 && alreadyParsedRule(input, 131) ) { return ; }
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:955:2: ( '(' ( expressionList )? ')' )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:955:4: '(' ( expressionList )? ')'
             {
-            match(input,65,FOLLOW_65_in_arguments4386); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:955:8: ( expressionList )?
+            match(input,65,FOLLOW_65_in_arguments4386); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:955:8: ( expressionList )?
             int alt180=2;
-            int LA180_0 = input.LA(1);
-
-            if ( (LA180_0==Identifier||(LA180_0>=FloatingPointLiteral && LA180_0<=DecimalLiteral)||LA180_0==33||LA180_0==40||(LA180_0>=55 && LA180_0<=62)||(LA180_0>=64 && LA180_0<=65)||(LA180_0>=68 && LA180_0<=70)||(LA180_0>=105 && LA180_0<=106)||(LA180_0>=109 && LA180_0<=114)) ) {
-                alt180=1;
-            }
+            alt180 = dfa180.predict(input);
             switch (alt180) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: expressionList
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: expressionList
                     {
                     pushFollow(FOLLOW_expressionList_in_arguments4388);
                     expressionList();
-                    _fsp--;
-                    if (failed) return ;
 
+                    state._fsp--;
+                    if (state.failed) return ;
+
                     }
                     break;
 
             }
 
-            match(input,66,FOLLOW_66_in_arguments4391); if (failed) return ;
+            match(input,66,FOLLOW_66_in_arguments4391); if (state.failed) return ;
 
             }
 
@@ -13854,90 +9777,95 @@
             recover(input,re);
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 131, arguments_StartIndex); }
+            if ( state.backtracking>0 ) { memoize(input, 131, arguments_StartIndex); }
         }
         return ;
     }
-    // $ANTLR end arguments
+    // $ANTLR end "arguments"
 
-    // $ANTLR start synpred1
-    public final void synpred1_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:207:4: ( annotations )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:207:4: annotations
+    // $ANTLR start synpred1_Java
+    public final void synpred1_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:207:4: ( annotations )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:207:4: annotations
         {
-        pushFollow(FOLLOW_annotations_in_synpred170);
+        pushFollow(FOLLOW_annotations_in_synpred1_Java70);
         annotations();
-        _fsp--;
-        if (failed) return ;
 
+        state._fsp--;
+        if (state.failed) return ;
+
         }
     }
-    // $ANTLR end synpred1
+    // $ANTLR end synpred1_Java
 
-    // $ANTLR start synpred38
-    public final void synpred38_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:303:4: ( methodDeclaration )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:303:4: methodDeclaration
+    // $ANTLR start synpred38_Java
+    public final void synpred38_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:303:4: ( methodDeclaration )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:303:4: methodDeclaration
         {
-        pushFollow(FOLLOW_methodDeclaration_in_synpred38577);
+        pushFollow(FOLLOW_methodDeclaration_in_synpred38_Java577);
         methodDeclaration();
-        _fsp--;
-        if (failed) return ;
 
+        state._fsp--;
+        if (state.failed) return ;
+
         }
     }
-    // $ANTLR end synpred38
+    // $ANTLR end synpred38_Java
 
-    // $ANTLR start synpred39
-    public final void synpred39_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:304:4: ( fieldDeclaration )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:304:4: fieldDeclaration
+    // $ANTLR start synpred39_Java
+    public final void synpred39_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:304:4: ( fieldDeclaration )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:304:4: fieldDeclaration
         {
-        pushFollow(FOLLOW_fieldDeclaration_in_synpred39582);
+        pushFollow(FOLLOW_fieldDeclaration_in_synpred39_Java582);
         fieldDeclaration();
-        _fsp--;
-        if (failed) return ;
 
+        state._fsp--;
+        if (state.failed) return ;
+
         }
     }
-    // $ANTLR end synpred39
+    // $ANTLR end synpred39_Java
 
-    // $ANTLR start synpred85
-    public final void synpred85_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:459:16: ( '.' Identifier )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:459:16: '.' Identifier
+    // $ANTLR start synpred85_Java
+    public final void synpred85_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:459:16: ( '.' Identifier )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:459:16: '.' Identifier
         {
-        match(input,28,FOLLOW_28_in_synpred851389); if (failed) return ;
-        match(input,Identifier,FOLLOW_Identifier_in_synpred851391); if (failed) return ;
+        match(input,28,FOLLOW_28_in_synpred85_Java1389); if (state.failed) return ;
+        match(input,Identifier,FOLLOW_Identifier_in_synpred85_Java1391); if (state.failed) return ;
 
         }
     }
-    // $ANTLR end synpred85
+    // $ANTLR end synpred85_Java
 
-    // $ANTLR start synpred120
-    public final void synpred120_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:549:4: ( annotation )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:549:4: annotation
+    // $ANTLR start synpred120_Java
+    public final void synpred120_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:549:4: ( annotation )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:549:4: annotation
         {
-        pushFollow(FOLLOW_annotation_in_synpred1201893);
+        pushFollow(FOLLOW_annotation_in_synpred120_Java1893);
         annotation();
-        _fsp--;
-        if (failed) return ;
 
+        state._fsp--;
+        if (state.failed) return ;
+
         }
     }
-    // $ANTLR end synpred120
+    // $ANTLR end synpred120_Java
 
-    // $ANTLR start synpred135
-    public final void synpred135_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:596:6: ( classDeclaration ( ';' )? )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:596:6: classDeclaration ( ';' )?
+    // $ANTLR start synpred135_Java
+    public final void synpred135_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:596:6: ( classDeclaration ( ';' )? )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:596:6: classDeclaration ( ';' )?
         {
-        pushFollow(FOLLOW_classDeclaration_in_synpred1352123);
+        pushFollow(FOLLOW_classDeclaration_in_synpred135_Java2123);
         classDeclaration();
-        _fsp--;
-        if (failed) return ;
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:596:23: ( ';' )?
+
+        state._fsp--;
+        if (state.failed) return ;
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:596:23: ( ';' )?
         int alt196=2;
         int LA196_0 = input.LA(1);
 
@@ -13946,9 +9874,9 @@
         }
         switch (alt196) {
             case 1 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: ';'
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: ';'
                 {
-                match(input,25,FOLLOW_25_in_synpred1352125); if (failed) return ;
+                match(input,25,FOLLOW_25_in_synpred135_Java2125); if (state.failed) return ;
 
                 }
                 break;
@@ -13958,18 +9886,19 @@
 
         }
     }
-    // $ANTLR end synpred135
+    // $ANTLR end synpred135_Java
 
-    // $ANTLR start synpred137
-    public final void synpred137_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:597:6: ( interfaceDeclaration ( ';' )? )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:597:6: interfaceDeclaration ( ';' )?
+    // $ANTLR start synpred137_Java
+    public final void synpred137_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:597:6: ( interfaceDeclaration ( ';' )? )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:597:6: interfaceDeclaration ( ';' )?
         {
-        pushFollow(FOLLOW_interfaceDeclaration_in_synpred1372133);
+        pushFollow(FOLLOW_interfaceDeclaration_in_synpred137_Java2133);
         interfaceDeclaration();
-        _fsp--;
-        if (failed) return ;
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:597:27: ( ';' )?
+
+        state._fsp--;
+        if (state.failed) return ;
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:597:27: ( ';' )?
         int alt197=2;
         int LA197_0 = input.LA(1);
 
@@ -13978,9 +9907,9 @@
         }
         switch (alt197) {
             case 1 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: ';'
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: ';'
                 {
-                match(input,25,FOLLOW_25_in_synpred1372135); if (failed) return ;
+                match(input,25,FOLLOW_25_in_synpred137_Java2135); if (state.failed) return ;
 
                 }
                 break;
@@ -13990,18 +9919,19 @@
 
         }
     }
-    // $ANTLR end synpred137
+    // $ANTLR end synpred137_Java
 
-    // $ANTLR start synpred139
-    public final void synpred139_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:598:6: ( enumDeclaration ( ';' )? )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:598:6: enumDeclaration ( ';' )?
+    // $ANTLR start synpred139_Java
+    public final void synpred139_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:598:6: ( enumDeclaration ( ';' )? )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:598:6: enumDeclaration ( ';' )?
         {
-        pushFollow(FOLLOW_enumDeclaration_in_synpred1392143);
+        pushFollow(FOLLOW_enumDeclaration_in_synpred139_Java2143);
         enumDeclaration();
-        _fsp--;
-        if (failed) return ;
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:598:22: ( ';' )?
+
+        state._fsp--;
+        if (state.failed) return ;
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:598:22: ( ';' )?
         int alt198=2;
         int LA198_0 = input.LA(1);
 
@@ -14010,9 +9940,9 @@
         }
         switch (alt198) {
             case 1 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: ';'
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: ';'
                 {
-                match(input,25,FOLLOW_25_in_synpred1392145); if (failed) return ;
+                match(input,25,FOLLOW_25_in_synpred139_Java2145); if (state.failed) return ;
 
                 }
                 break;
@@ -14022,136 +9952,145 @@
 
         }
     }
-    // $ANTLR end synpred139
+    // $ANTLR end synpred139_Java
 
-    // $ANTLR start synpred144
-    public final void synpred144_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:632:4: ( localVariableDeclaration )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:632:4: localVariableDeclaration
+    // $ANTLR start synpred144_Java
+    public final void synpred144_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:632:4: ( localVariableDeclaration )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:632:4: localVariableDeclaration
         {
-        pushFollow(FOLLOW_localVariableDeclaration_in_synpred1442286);
+        pushFollow(FOLLOW_localVariableDeclaration_in_synpred144_Java2286);
         localVariableDeclaration();
-        _fsp--;
-        if (failed) return ;
 
+        state._fsp--;
+        if (state.failed) return ;
+
         }
     }
-    // $ANTLR end synpred144
+    // $ANTLR end synpred144_Java
 
-    // $ANTLR start synpred145
-    public final void synpred145_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:633:4: ( classOrInterfaceDeclaration )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:633:4: classOrInterfaceDeclaration
+    // $ANTLR start synpred145_Java
+    public final void synpred145_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:633:4: ( classOrInterfaceDeclaration )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:633:4: classOrInterfaceDeclaration
         {
-        pushFollow(FOLLOW_classOrInterfaceDeclaration_in_synpred1452291);
+        pushFollow(FOLLOW_classOrInterfaceDeclaration_in_synpred145_Java2291);
         classOrInterfaceDeclaration();
-        _fsp--;
-        if (failed) return ;
 
+        state._fsp--;
+        if (state.failed) return ;
+
         }
     }
-    // $ANTLR end synpred145
+    // $ANTLR end synpred145_Java
 
-    // $ANTLR start synpred150
-    public final void synpred150_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:666:52: ( 'else' statement )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:666:52: 'else' statement
+    // $ANTLR start synpred150_Java
+    public final void synpred150_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:666:52: ( 'else' statement )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:666:52: 'else' statement
         {
-        match(input,76,FOLLOW_76_in_synpred1502431); if (failed) return ;
-        pushFollow(FOLLOW_statement_in_synpred1502433);
+        match(input,76,FOLLOW_76_in_synpred150_Java2431); if (state.failed) return ;
+        pushFollow(FOLLOW_statement_in_synpred150_Java2433);
         statement();
-        _fsp--;
-        if (failed) return ;
 
+        state._fsp--;
+        if (state.failed) return ;
+
         }
     }
-    // $ANTLR end synpred150
+    // $ANTLR end synpred150_Java
 
-    // $ANTLR start synpred155
-    public final void synpred155_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:671:9: ( catches 'finally' block )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:671:9: catches 'finally' block
+    // $ANTLR start synpred155_Java
+    public final void synpred155_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:671:9: ( catches 'finally' block )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:671:9: catches 'finally' block
         {
-        pushFollow(FOLLOW_catches_in_synpred1552499);
+        pushFollow(FOLLOW_catches_in_synpred155_Java2499);
         catches();
-        _fsp--;
-        if (failed) return ;
-        match(input,81,FOLLOW_81_in_synpred1552501); if (failed) return ;
-        pushFollow(FOLLOW_block_in_synpred1552503);
+
+        state._fsp--;
+        if (state.failed) return ;
+        match(input,81,FOLLOW_81_in_synpred155_Java2501); if (state.failed) return ;
+        pushFollow(FOLLOW_block_in_synpred155_Java2503);
         block();
-        _fsp--;
-        if (failed) return ;
 
+        state._fsp--;
+        if (state.failed) return ;
+
         }
     }
-    // $ANTLR end synpred155
+    // $ANTLR end synpred155_Java
 
-    // $ANTLR start synpred156
-    public final void synpred156_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:672:9: ( catches )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:672:9: catches
+    // $ANTLR start synpred156_Java
+    public final void synpred156_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:672:9: ( catches )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:672:9: catches
         {
-        pushFollow(FOLLOW_catches_in_synpred1562513);
+        pushFollow(FOLLOW_catches_in_synpred156_Java2513);
         catches();
-        _fsp--;
-        if (failed) return ;
 
+        state._fsp--;
+        if (state.failed) return ;
+
         }
     }
-    // $ANTLR end synpred156
+    // $ANTLR end synpred156_Java
 
-    // $ANTLR start synpred176
-    public final void synpred176_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:729:4: ( 'case' constantExpression ':' )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:729:4: 'case' constantExpression ':'
+    // $ANTLR start synpred176_Java
+    public final void synpred176_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:729:4: ( 'case' constantExpression ':' )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:729:4: 'case' constantExpression ':'
         {
-        match(input,89,FOLLOW_89_in_synpred1762836); if (failed) return ;
-        pushFollow(FOLLOW_constantExpression_in_synpred1762838);
+        match(input,89,FOLLOW_89_in_synpred176_Java2836); if (state.failed) return ;
+        pushFollow(FOLLOW_constantExpression_in_synpred176_Java2838);
         constantExpression();
-        _fsp--;
-        if (failed) return ;
-        match(input,74,FOLLOW_74_in_synpred1762840); if (failed) return ;
 
+        state._fsp--;
+        if (state.failed) return ;
+        match(input,74,FOLLOW_74_in_synpred176_Java2840); if (state.failed) return ;
+
         }
     }
-    // $ANTLR end synpred176
+    // $ANTLR end synpred176_Java
 
-    // $ANTLR start synpred177
-    public final void synpred177_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:730:6: ( 'case' enumConstantName ':' )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:730:6: 'case' enumConstantName ':'
+    // $ANTLR start synpred177_Java
+    public final void synpred177_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:730:6: ( 'case' enumConstantName ':' )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:730:6: 'case' enumConstantName ':'
         {
-        match(input,89,FOLLOW_89_in_synpred1772847); if (failed) return ;
-        pushFollow(FOLLOW_enumConstantName_in_synpred1772849);
+        match(input,89,FOLLOW_89_in_synpred177_Java2847); if (state.failed) return ;
+        pushFollow(FOLLOW_enumConstantName_in_synpred177_Java2849);
         enumConstantName();
-        _fsp--;
-        if (failed) return ;
-        match(input,74,FOLLOW_74_in_synpred1772851); if (failed) return ;
 
+        state._fsp--;
+        if (state.failed) return ;
+        match(input,74,FOLLOW_74_in_synpred177_Java2851); if (state.failed) return ;
+
         }
     }
-    // $ANTLR end synpred177
+    // $ANTLR end synpred177_Java
 
-    // $ANTLR start synpred179
-    public final void synpred179_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:740:4: ( forVarControl )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:740:4: forVarControl
+    // $ANTLR start synpred179_Java
+    public final void synpred179_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:740:4: ( forVarControl )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:740:4: forVarControl
         {
-        pushFollow(FOLLOW_forVarControl_in_synpred1792896);
+        pushFollow(FOLLOW_forVarControl_in_synpred179_Java2896);
         forVarControl();
-        _fsp--;
-        if (failed) return ;
 
+        state._fsp--;
+        if (state.failed) return ;
+
         }
     }
-    // $ANTLR end synpred179
+    // $ANTLR end synpred179_Java
 
-    // $ANTLR start synpred184
-    public final void synpred184_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:751:4: ( ( variableModifier )* type variableDeclarators )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:751:4: ( variableModifier )* type variableDeclarators
+    // $ANTLR start synpred184_Java
+    public final void synpred184_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:751:4: ( ( variableModifier )* type variableDeclarators )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:751:4: ( variableModifier )* type variableDeclarators
         {
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:751:4: ( variableModifier )*
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:751:4: ( variableModifier )*
         loop206:
         do {
             int alt206=2;
@@ -14164,13 +10103,14 @@
 
             switch (alt206) {
         	case 1 :
-        	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: variableModifier
+        	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: variableModifier
         	    {
-        	    pushFollow(FOLLOW_variableModifier_in_synpred1842949);
+        	    pushFollow(FOLLOW_variableModifier_in_synpred184_Java2949);
         	    variableModifier();
-        	    _fsp--;
-        	    if (failed) return ;
 
+        	    state._fsp--;
+        	    if (state.failed) return ;
+
         	    }
         	    break;
 
@@ -14179,667 +10119,10821 @@
             }
         } while (true);
 
-        pushFollow(FOLLOW_type_in_synpred1842952);
+        pushFollow(FOLLOW_type_in_synpred184_Java2952);
         type();
-        _fsp--;
-        if (failed) return ;
-        pushFollow(FOLLOW_variableDeclarators_in_synpred1842954);
+
+        state._fsp--;
+        if (state.failed) return ;
+        pushFollow(FOLLOW_variableDeclarators_in_synpred184_Java2954);
         variableDeclarators();
-        _fsp--;
-        if (failed) return ;
 
+        state._fsp--;
+        if (state.failed) return ;
+
         }
     }
-    // $ANTLR end synpred184
+    // $ANTLR end synpred184_Java
 
-    // $ANTLR start synpred187
-    public final void synpred187_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:782:27: ( assignmentOperator expression )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:782:27: assignmentOperator expression
+    // $ANTLR start synpred187_Java
+    public final void synpred187_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:782:27: ( assignmentOperator expression )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:782:27: assignmentOperator expression
         {
-        pushFollow(FOLLOW_assignmentOperator_in_synpred1873073);
+        pushFollow(FOLLOW_assignmentOperator_in_synpred187_Java3073);
         assignmentOperator();
-        _fsp--;
-        if (failed) return ;
-        pushFollow(FOLLOW_expression_in_synpred1873075);
+
+        state._fsp--;
+        if (state.failed) return ;
+        pushFollow(FOLLOW_expression_in_synpred187_Java3075);
         expression();
-        _fsp--;
-        if (failed) return ;
 
+        state._fsp--;
+        if (state.failed) return ;
+
         }
     }
-    // $ANTLR end synpred187
+    // $ANTLR end synpred187_Java
 
-    // $ANTLR start synpred198
-    public final void synpred198_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:796:9: ( '>' '>' '=' )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:796:9: '>' '>' '='
+    // $ANTLR start synpred198_Java
+    public final void synpred198_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:796:9: ( '>' '>' '=' )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:796:9: '>' '>' '='
         {
-        match(input,35,FOLLOW_35_in_synpred1983193); if (failed) return ;
-        match(input,35,FOLLOW_35_in_synpred1983195); if (failed) return ;
-        match(input,44,FOLLOW_44_in_synpred1983197); if (failed) return ;
+        match(input,35,FOLLOW_35_in_synpred198_Java3193); if (state.failed) return ;
+        match(input,35,FOLLOW_35_in_synpred198_Java3195); if (state.failed) return ;
+        match(input,44,FOLLOW_44_in_synpred198_Java3197); if (state.failed) return ;
 
         }
     }
-    // $ANTLR end synpred198
+    // $ANTLR end synpred198_Java
 
-    // $ANTLR start synpred208
-    public final void synpred208_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:833:27: ( relationalOp shiftExpression )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:833:27: relationalOp shiftExpression
+    // $ANTLR start synpred208_Java
+    public final void synpred208_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:833:27: ( relationalOp shiftExpression )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:833:27: relationalOp shiftExpression
         {
-        pushFollow(FOLLOW_relationalOp_in_synpred2083441);
+        pushFollow(FOLLOW_relationalOp_in_synpred208_Java3441);
         relationalOp();
-        _fsp--;
-        if (failed) return ;
-        pushFollow(FOLLOW_shiftExpression_in_synpred2083443);
+
+        state._fsp--;
+        if (state.failed) return ;
+        pushFollow(FOLLOW_shiftExpression_in_synpred208_Java3443);
         shiftExpression();
-        _fsp--;
-        if (failed) return ;
 
+        state._fsp--;
+        if (state.failed) return ;
+
         }
     }
-    // $ANTLR end synpred208
+    // $ANTLR end synpred208_Java
 
-    // $ANTLR start synpred212
-    public final void synpred212_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:841:30: ( shiftOp additiveExpression )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:841:30: shiftOp additiveExpression
+    // $ANTLR start synpred212_Java
+    public final void synpred212_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:841:30: ( shiftOp additiveExpression )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:841:30: shiftOp additiveExpression
         {
-        pushFollow(FOLLOW_shiftOp_in_synpred2123496);
+        pushFollow(FOLLOW_shiftOp_in_synpred212_Java3496);
         shiftOp();
-        _fsp--;
-        if (failed) return ;
-        pushFollow(FOLLOW_additiveExpression_in_synpred2123498);
+
+        state._fsp--;
+        if (state.failed) return ;
+        pushFollow(FOLLOW_additiveExpression_in_synpred212_Java3498);
         additiveExpression();
-        _fsp--;
-        if (failed) return ;
 
+        state._fsp--;
+        if (state.failed) return ;
+
         }
     }
-    // $ANTLR end synpred212
+    // $ANTLR end synpred212_Java
 
-    // $ANTLR start synpred214
-    public final void synpred214_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:846:15: ( '>' '>' '>' )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:846:15: '>' '>' '>'
+    // $ANTLR start synpred214_Java
+    public final void synpred214_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:846:15: ( '>' '>' '>' )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:846:15: '>' '>' '>'
         {
-        match(input,35,FOLLOW_35_in_synpred2143528); if (failed) return ;
-        match(input,35,FOLLOW_35_in_synpred2143530); if (failed) return ;
-        match(input,35,FOLLOW_35_in_synpred2143532); if (failed) return ;
+        match(input,35,FOLLOW_35_in_synpred214_Java3528); if (state.failed) return ;
+        match(input,35,FOLLOW_35_in_synpred214_Java3530); if (state.failed) return ;
+        match(input,35,FOLLOW_35_in_synpred214_Java3532); if (state.failed) return ;
 
         }
     }
-    // $ANTLR end synpred214
+    // $ANTLR end synpred214_Java
 
-    // $ANTLR start synpred226
-    public final void synpred226_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:869:9: ( castExpression )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:869:9: castExpression
+    // $ANTLR start synpred226_Java
+    public final void synpred226_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:869:9: ( castExpression )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:869:9: castExpression
         {
-        pushFollow(FOLLOW_castExpression_in_synpred2263713);
+        pushFollow(FOLLOW_castExpression_in_synpred226_Java3713);
         castExpression();
-        _fsp--;
-        if (failed) return ;
 
+        state._fsp--;
+        if (state.failed) return ;
+
         }
     }
-    // $ANTLR end synpred226
+    // $ANTLR end synpred226_Java
 
-    // $ANTLR start synpred230
-    public final void synpred230_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:874:8: ( '(' primitiveType ')' unaryExpression )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:874:8: '(' primitiveType ')' unaryExpression
+    // $ANTLR start synpred230_Java
+    public final void synpred230_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:874:8: ( '(' primitiveType ')' unaryExpression )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:874:8: '(' primitiveType ')' unaryExpression
         {
-        match(input,65,FOLLOW_65_in_synpred2303751); if (failed) return ;
-        pushFollow(FOLLOW_primitiveType_in_synpred2303753);
+        match(input,65,FOLLOW_65_in_synpred230_Java3751); if (state.failed) return ;
+        pushFollow(FOLLOW_primitiveType_in_synpred230_Java3753);
         primitiveType();
-        _fsp--;
-        if (failed) return ;
-        match(input,66,FOLLOW_66_in_synpred2303755); if (failed) return ;
-        pushFollow(FOLLOW_unaryExpression_in_synpred2303757);
+
+        state._fsp--;
+        if (state.failed) return ;
+        match(input,66,FOLLOW_66_in_synpred230_Java3755); if (state.failed) return ;
+        pushFollow(FOLLOW_unaryExpression_in_synpred230_Java3757);
         unaryExpression();
-        _fsp--;
-        if (failed) return ;
 
+        state._fsp--;
+        if (state.failed) return ;
+
         }
     }
-    // $ANTLR end synpred230
+    // $ANTLR end synpred230_Java
 
-    // $ANTLR start synpred231
-    public final void synpred231_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:875:13: ( type )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:875:13: type
+    // $ANTLR start synpred231_Java
+    public final void synpred231_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:875:13: ( type )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:875:13: type
         {
-        pushFollow(FOLLOW_type_in_synpred2313769);
+        pushFollow(FOLLOW_type_in_synpred231_Java3769);
         type();
-        _fsp--;
-        if (failed) return ;
 
+        state._fsp--;
+        if (state.failed) return ;
+
         }
     }
-    // $ANTLR end synpred231
+    // $ANTLR end synpred231_Java
 
-    // $ANTLR start synpred235
-    public final void synpred235_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:882:17: ( '.' Identifier )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:882:17: '.' Identifier
+    // $ANTLR start synpred235_Java
+    public final void synpred235_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:882:17: ( '.' Identifier )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:882:17: '.' Identifier
         {
-        match(input,28,FOLLOW_28_in_synpred2353836); if (failed) return ;
-        match(input,Identifier,FOLLOW_Identifier_in_synpred2353838); if (failed) return ;
+        match(input,28,FOLLOW_28_in_synpred235_Java3836); if (state.failed) return ;
+        match(input,Identifier,FOLLOW_Identifier_in_synpred235_Java3838); if (state.failed) return ;
 
         }
     }
-    // $ANTLR end synpred235
+    // $ANTLR end synpred235_Java
 
-    // $ANTLR start synpred236
-    public final void synpred236_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:882:35: ( identifierSuffix )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:882:35: identifierSuffix
+    // $ANTLR start synpred236_Java
+    public final void synpred236_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:882:35: ( identifierSuffix )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:882:35: identifierSuffix
         {
-        pushFollow(FOLLOW_identifierSuffix_in_synpred2363843);
+        pushFollow(FOLLOW_identifierSuffix_in_synpred236_Java3843);
         identifierSuffix();
-        _fsp--;
-        if (failed) return ;
 
+        state._fsp--;
+        if (state.failed) return ;
+
         }
     }
-    // $ANTLR end synpred236
+    // $ANTLR end synpred236_Java
 
-    // $ANTLR start synpred241
-    public final void synpred241_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:886:127: ( '.' Identifier )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:886:127: '.' Identifier
+    // $ANTLR start synpred241_Java
+    public final void synpred241_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:886:127: ( '.' Identifier )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:886:127: '.' Identifier
         {
-        match(input,28,FOLLOW_28_in_synpred2413896); if (failed) return ;
-        match(input,Identifier,FOLLOW_Identifier_in_synpred2413898); if (failed) return ;
+        match(input,28,FOLLOW_28_in_synpred241_Java3896); if (state.failed) return ;
+        match(input,Identifier,FOLLOW_Identifier_in_synpred241_Java3898); if (state.failed) return ;
 
         }
     }
-    // $ANTLR end synpred241
+    // $ANTLR end synpred241_Java
 
-    // $ANTLR start synpred242
-    public final void synpred242_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:886:145: ( identifierSuffix )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:886:145: identifierSuffix
+    // $ANTLR start synpred242_Java
+    public final void synpred242_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:886:145: ( identifierSuffix )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:886:145: identifierSuffix
         {
-        pushFollow(FOLLOW_identifierSuffix_in_synpred2423903);
+        pushFollow(FOLLOW_identifierSuffix_in_synpred242_Java3903);
         identifierSuffix();
-        _fsp--;
-        if (failed) return ;
 
+        state._fsp--;
+        if (state.failed) return ;
+
         }
     }
-    // $ANTLR end synpred242
+    // $ANTLR end synpred242_Java
 
-    // $ANTLR start synpred248
-    public final void synpred248_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:893:5: ( '[' expression ']' )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:893:5: '[' expression ']'
+    // $ANTLR start synpred248_Java
+    public final void synpred248_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:893:5: ( '[' expression ']' )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:893:5: '[' expression ']'
         {
-        match(input,41,FOLLOW_41_in_synpred2483966); if (failed) return ;
-        pushFollow(FOLLOW_expression_in_synpred2483968);
+        match(input,41,FOLLOW_41_in_synpred248_Java3966); if (state.failed) return ;
+        pushFollow(FOLLOW_expression_in_synpred248_Java3968);
         expression();
-        _fsp--;
-        if (failed) return ;
-        match(input,42,FOLLOW_42_in_synpred2483970); if (failed) return ;
 
+        state._fsp--;
+        if (state.failed) return ;
+        match(input,42,FOLLOW_42_in_synpred248_Java3970); if (state.failed) return ;
+
         }
     }
-    // $ANTLR end synpred248
+    // $ANTLR end synpred248_Java
 
-    // $ANTLR start synpred264
-    public final void synpred264_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:920:29: ( '[' expression ']' )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:920:29: '[' expression ']'
+    // $ANTLR start synpred264_Java
+    public final void synpred264_Java_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:920:29: ( '[' expression ']' )
+        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:920:29: '[' expression ']'
         {
-        match(input,41,FOLLOW_41_in_synpred2644190); if (failed) return ;
-        pushFollow(FOLLOW_expression_in_synpred2644192);
+        match(input,41,FOLLOW_41_in_synpred264_Java4190); if (state.failed) return ;
+        pushFollow(FOLLOW_expression_in_synpred264_Java4192);
         expression();
-        _fsp--;
-        if (failed) return ;
-        match(input,42,FOLLOW_42_in_synpred2644194); if (failed) return ;
 
+        state._fsp--;
+        if (state.failed) return ;
+        match(input,42,FOLLOW_42_in_synpred264_Java4194); if (state.failed) return ;
+
         }
     }
-    // $ANTLR end synpred264
+    // $ANTLR end synpred264_Java
 
-    public final boolean synpred139() {
-        backtracking++;
+    // Delegated rules
+
+    public final boolean synpred156_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred139_fragment(); // can never throw exception
+            synpred156_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred242() {
-        backtracking++;
+    public final boolean synpred248_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred242_fragment(); // can never throw exception
+            synpred248_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred156() {
-        backtracking++;
+    public final boolean synpred38_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred156_fragment(); // can never throw exception
+            synpred38_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred120() {
-        backtracking++;
+    public final boolean synpred145_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred120_fragment(); // can never throw exception
+            synpred145_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred264() {
-        backtracking++;
+    public final boolean synpred135_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred264_fragment(); // can never throw exception
+            synpred135_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred38() {
-        backtracking++;
+    public final boolean synpred230_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred38_fragment(); // can never throw exception
+            synpred230_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred184() {
-        backtracking++;
+    public final boolean synpred144_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred184_fragment(); // can never throw exception
+            synpred144_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred155() {
-        backtracking++;
+    public final boolean synpred39_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred155_fragment(); // can never throw exception
+            synpred39_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred235() {
-        backtracking++;
+    public final boolean synpred155_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred235_fragment(); // can never throw exception
+            synpred155_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred85() {
-        backtracking++;
+    public final boolean synpred236_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred85_fragment(); // can never throw exception
+            synpred236_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred39() {
-        backtracking++;
+    public final boolean synpred85_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred39_fragment(); // can never throw exception
+            synpred85_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred1() {
-        backtracking++;
+    public final boolean synpred198_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred1_fragment(); // can never throw exception
+            synpred198_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred177() {
-        backtracking++;
+    public final boolean synpred137_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred177_fragment(); // can never throw exception
+            synpred137_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred212() {
-        backtracking++;
+    public final boolean synpred139_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred212_fragment(); // can never throw exception
+            synpred139_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred198() {
-        backtracking++;
+    public final boolean synpred208_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred198_fragment(); // can never throw exception
+            synpred208_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred145() {
-        backtracking++;
+    public final boolean synpred179_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred145_fragment(); // can never throw exception
+            synpred179_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred176() {
-        backtracking++;
+    public final boolean synpred120_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred176_fragment(); // can never throw exception
+            synpred120_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred208() {
-        backtracking++;
+    public final boolean synpred214_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred208_fragment(); // can never throw exception
+            synpred214_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred241() {
-        backtracking++;
+    public final boolean synpred150_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred241_fragment(); // can never throw exception
+            synpred150_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred187() {
-        backtracking++;
+    public final boolean synpred187_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred187_fragment(); // can never throw exception
+            synpred187_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred135() {
-        backtracking++;
+    public final boolean synpred235_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred135_fragment(); // can never throw exception
+            synpred235_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred231() {
-        backtracking++;
+    public final boolean synpred231_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred231_fragment(); // can never throw exception
+            synpred231_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred236() {
-        backtracking++;
+    public final boolean synpred184_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred236_fragment(); // can never throw exception
+            synpred184_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred214() {
-        backtracking++;
+    public final boolean synpred212_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred214_fragment(); // can never throw exception
+            synpred212_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred179() {
-        backtracking++;
+    public final boolean synpred264_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred179_fragment(); // can never throw exception
+            synpred264_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred150() {
-        backtracking++;
+    public final boolean synpred176_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred150_fragment(); // can never throw exception
+            synpred176_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred137() {
-        backtracking++;
+    public final boolean synpred177_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred137_fragment(); // can never throw exception
+            synpred177_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred248() {
-        backtracking++;
+    public final boolean synpred1_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred248_fragment(); // can never throw exception
+            synpred1_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred144() {
-        backtracking++;
+    public final boolean synpred242_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred144_fragment(); // can never throw exception
+            synpred242_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred226() {
-        backtracking++;
+    public final boolean synpred226_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred226_fragment(); // can never throw exception
+            synpred226_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
-    public final boolean synpred230() {
-        backtracking++;
+    public final boolean synpred241_Java() {
+        state.backtracking++;
         int start = input.mark();
         try {
-            synpred230_fragment(); // can never throw exception
+            synpred241_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
-        boolean success = !failed;
+        boolean success = !state.failed;
         input.rewind(start);
-        backtracking--;
-        failed=false;
+        state.backtracking--;
+        state.failed=false;
         return success;
     }
 
 
+    protected DFA1 dfa1 = new DFA1(this);
+    protected DFA2 dfa2 = new DFA2(this);
+    protected DFA3 dfa3 = new DFA3(this);
+    protected DFA4 dfa4 = new DFA4(this);
+    protected DFA8 dfa8 = new DFA8(this);
+    protected DFA9 dfa9 = new DFA9(this);
+    protected DFA26 dfa26 = new DFA26(this);
+    protected DFA31 dfa31 = new DFA31(this);
+    protected DFA32 dfa32 = new DFA32(this);
+    protected DFA35 dfa35 = new DFA35(this);
+    protected DFA34 dfa34 = new DFA34(this);
+    protected DFA36 dfa36 = new DFA36(this);
+    protected DFA40 dfa40 = new DFA40(this);
+    protected DFA39 dfa39 = new DFA39(this);
+    protected DFA60 dfa60 = new DFA60(this);
+    protected DFA63 dfa63 = new DFA63(this);
+    protected DFA61 dfa61 = new DFA61(this);
+    protected DFA64 dfa64 = new DFA64(this);
+    protected DFA67 dfa67 = new DFA67(this);
+    protected DFA69 dfa69 = new DFA69(this);
+    protected DFA68 dfa68 = new DFA68(this);
+    protected DFA70 dfa70 = new DFA70(this);
+    protected DFA71 dfa71 = new DFA71(this);
+    protected DFA85 dfa85 = new DFA85(this);
+    protected DFA87 dfa87 = new DFA87(this);
+    protected DFA86 dfa86 = new DFA86(this);
+    protected DFA88 dfa88 = new DFA88(this);
+    protected DFA90 dfa90 = new DFA90(this);
+    protected DFA91 dfa91 = new DFA91(this);
+    protected DFA93 dfa93 = new DFA93(this);
+    protected DFA94 dfa94 = new DFA94(this);
+    protected DFA95 dfa95 = new DFA95(this);
+    protected DFA96 dfa96 = new DFA96(this);
+    protected DFA101 dfa101 = new DFA101(this);
+    protected DFA97 dfa97 = new DFA97(this);
+    protected DFA98 dfa98 = new DFA98(this);
+    protected DFA99 dfa99 = new DFA99(this);
+    protected DFA100 dfa100 = new DFA100(this);
+    protected DFA104 dfa104 = new DFA104(this);
+    protected DFA105 dfa105 = new DFA105(this);
+    protected DFA113 dfa113 = new DFA113(this);
+    protected DFA110 dfa110 = new DFA110(this);
+    protected DFA115 dfa115 = new DFA115(this);
+    protected DFA116 dfa116 = new DFA116(this);
+    protected DFA119 dfa119 = new DFA119(this);
+    protected DFA120 dfa120 = new DFA120(this);
+    protected DFA125 dfa125 = new DFA125(this);
+    protected DFA122 dfa122 = new DFA122(this);
+    protected DFA123 dfa123 = new DFA123(this);
+    protected DFA124 dfa124 = new DFA124(this);
+    protected DFA127 dfa127 = new DFA127(this);
+    protected DFA130 dfa130 = new DFA130(this);
+    protected DFA131 dfa131 = new DFA131(this);
+    protected DFA132 dfa132 = new DFA132(this);
+    protected DFA133 dfa133 = new DFA133(this);
+    protected DFA134 dfa134 = new DFA134(this);
+    protected DFA135 dfa135 = new DFA135(this);
+    protected DFA136 dfa136 = new DFA136(this);
+    protected DFA137 dfa137 = new DFA137(this);
+    protected DFA138 dfa138 = new DFA138(this);
+    protected DFA139 dfa139 = new DFA139(this);
+    protected DFA140 dfa140 = new DFA140(this);
+    protected DFA141 dfa141 = new DFA141(this);
+    protected DFA142 dfa142 = new DFA142(this);
+    protected DFA144 dfa144 = new DFA144(this);
+    protected DFA145 dfa145 = new DFA145(this);
+    protected DFA146 dfa146 = new DFA146(this);
+    protected DFA149 dfa149 = new DFA149(this);
+    protected DFA147 dfa147 = new DFA147(this);
+    protected DFA148 dfa148 = new DFA148(this);
+    protected DFA151 dfa151 = new DFA151(this);
+    protected DFA150 dfa150 = new DFA150(this);
+    protected DFA158 dfa158 = new DFA158(this);
+    protected DFA153 dfa153 = new DFA153(this);
+    protected DFA154 dfa154 = new DFA154(this);
+    protected DFA155 dfa155 = new DFA155(this);
+    protected DFA156 dfa156 = new DFA156(this);
+    protected DFA162 dfa162 = new DFA162(this);
+    protected DFA160 dfa160 = new DFA160(this);
+    protected DFA172 dfa172 = new DFA172(this);
+    protected DFA170 dfa170 = new DFA170(this);
+    protected DFA171 dfa171 = new DFA171(this);
+    protected DFA173 dfa173 = new DFA173(this);
+    protected DFA175 dfa175 = new DFA175(this);
+    protected DFA178 dfa178 = new DFA178(this);
+    protected DFA180 dfa180 = new DFA180(this);
+    static final String DFA1_eotS =
+        "\27\uffff";
+    static final String DFA1_eofS =
+        "\1\2\26\uffff";
+    static final String DFA1_minS =
+        "\1\5\1\4\23\uffff\1\0\1\uffff";
+    static final String DFA1_maxS =
+        "\1\107\1\47\23\uffff\1\0\1\uffff";
+    static final String DFA1_acceptS =
+        "\2\uffff\1\2\23\uffff\1\1";
+    static final String DFA1_specialS =
+        "\25\uffff\1\0\1\uffff}>";
+    static final String[] DFA1_transitionS = {
+            "\1\2\22\uffff\4\2\2\uffff\1\2\10\uffff\1\2\5\uffff\12\2\20\uffff"+
+            "\1\1",
+            "\1\25\42\uffff\1\2",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            ""
+    };
+
+    static final short[] DFA1_eot = DFA.unpackEncodedString(DFA1_eotS);
+    static final short[] DFA1_eof = DFA.unpackEncodedString(DFA1_eofS);
+    static final char[] DFA1_min = DFA.unpackEncodedStringToUnsignedChars(DFA1_minS);
+    static final char[] DFA1_max = DFA.unpackEncodedStringToUnsignedChars(DFA1_maxS);
+    static final short[] DFA1_accept = DFA.unpackEncodedString(DFA1_acceptS);
+    static final short[] DFA1_special = DFA.unpackEncodedString(DFA1_specialS);
+    static final short[][] DFA1_transition;
+
+    static {
+        int numStates = DFA1_transitionS.length;
+        DFA1_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA1_transition[i] = DFA.unpackEncodedString(DFA1_transitionS[i]);
+        }
+    }
+
+    class DFA1 extends DFA {
+
+        public DFA1(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 1;
+            this.eot = DFA1_eot;
+            this.eof = DFA1_eof;
+            this.min = DFA1_min;
+            this.max = DFA1_max;
+            this.accept = DFA1_accept;
+            this.special = DFA1_special;
+            this.transition = DFA1_transition;
+        }
+        public String getDescription() {
+            return "207:4: ( annotations )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA1_21 = input.LA(1);
+
+                         
+                        int index1_21 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred1_Java()) ) {s = 22;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index1_21);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 1, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA2_eotS =
+        "\24\uffff";
+    static final String DFA2_eofS =
+        "\1\2\23\uffff";
+    static final String DFA2_minS =
+        "\1\5\23\uffff";
+    static final String DFA2_maxS =
+        "\1\107\23\uffff";
+    static final String DFA2_acceptS =
+        "\1\uffff\1\1\1\2\21\uffff";
+    static final String DFA2_specialS =
+        "\24\uffff}>";
+    static final String[] DFA2_transitionS = {
+            "\1\2\22\uffff\1\1\3\2\2\uffff\1\2\10\uffff\1\2\5\uffff\12\2"+
+            "\20\uffff\1\2",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA2_eot = DFA.unpackEncodedString(DFA2_eotS);
+    static final short[] DFA2_eof = DFA.unpackEncodedString(DFA2_eofS);
+    static final char[] DFA2_min = DFA.unpackEncodedStringToUnsignedChars(DFA2_minS);
+    static final char[] DFA2_max = DFA.unpackEncodedStringToUnsignedChars(DFA2_maxS);
+    static final short[] DFA2_accept = DFA.unpackEncodedString(DFA2_acceptS);
+    static final short[] DFA2_special = DFA.unpackEncodedString(DFA2_specialS);
+    static final short[][] DFA2_transition;
+
+    static {
+        int numStates = DFA2_transitionS.length;
+        DFA2_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA2_transition[i] = DFA.unpackEncodedString(DFA2_transitionS[i]);
+        }
+    }
+
+    class DFA2 extends DFA {
+
+        public DFA2(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 2;
+            this.eot = DFA2_eot;
+            this.eof = DFA2_eof;
+            this.min = DFA2_min;
+            this.max = DFA2_max;
+            this.accept = DFA2_accept;
+            this.special = DFA2_special;
+            this.transition = DFA2_transition;
+        }
+        public String getDescription() {
+            return "208:3: ( packageDeclaration )?";
+        }
+    }
+    static final String DFA3_eotS =
+        "\23\uffff";
+    static final String DFA3_eofS =
+        "\1\1\22\uffff";
+    static final String DFA3_minS =
+        "\1\5\22\uffff";
+    static final String DFA3_maxS =
+        "\1\107\22\uffff";
+    static final String DFA3_acceptS =
+        "\1\uffff\1\2\20\uffff\1\1";
+    static final String DFA3_specialS =
+        "\23\uffff}>";
+    static final String[] DFA3_transitionS = {
+            "\1\1\23\uffff\1\1\1\22\1\1\2\uffff\1\1\10\uffff\1\1\5\uffff"+
+            "\12\1\20\uffff\1\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA3_eot = DFA.unpackEncodedString(DFA3_eotS);
+    static final short[] DFA3_eof = DFA.unpackEncodedString(DFA3_eofS);
+    static final char[] DFA3_min = DFA.unpackEncodedStringToUnsignedChars(DFA3_minS);
+    static final char[] DFA3_max = DFA.unpackEncodedStringToUnsignedChars(DFA3_maxS);
+    static final short[] DFA3_accept = DFA.unpackEncodedString(DFA3_acceptS);
+    static final short[] DFA3_special = DFA.unpackEncodedString(DFA3_specialS);
+    static final short[][] DFA3_transition;
+
+    static {
+        int numStates = DFA3_transitionS.length;
+        DFA3_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA3_transition[i] = DFA.unpackEncodedString(DFA3_transitionS[i]);
+        }
+    }
+
+    class DFA3 extends DFA {
+
+        public DFA3(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 3;
+            this.eot = DFA3_eot;
+            this.eof = DFA3_eof;
+            this.min = DFA3_min;
+            this.max = DFA3_max;
+            this.accept = DFA3_accept;
+            this.special = DFA3_special;
+            this.transition = DFA3_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 209:9: ( importDeclaration )*";
+        }
+    }
+    static final String DFA4_eotS =
+        "\22\uffff";
+    static final String DFA4_eofS =
+        "\1\1\21\uffff";
+    static final String DFA4_minS =
+        "\1\5\21\uffff";
+    static final String DFA4_maxS =
+        "\1\107\21\uffff";
+    static final String DFA4_acceptS =
+        "\1\uffff\1\2\1\1\17\uffff";
+    static final String DFA4_specialS =
+        "\22\uffff}>";
+    static final String[] DFA4_transitionS = {
+            "\1\2\23\uffff\1\2\1\uffff\1\2\2\uffff\1\2\10\uffff\1\2\5\uffff"+
+            "\12\2\20\uffff\1\2",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA4_eot = DFA.unpackEncodedString(DFA4_eotS);
+    static final short[] DFA4_eof = DFA.unpackEncodedString(DFA4_eofS);
+    static final char[] DFA4_min = DFA.unpackEncodedStringToUnsignedChars(DFA4_minS);
+    static final char[] DFA4_max = DFA.unpackEncodedStringToUnsignedChars(DFA4_maxS);
+    static final short[] DFA4_accept = DFA.unpackEncodedString(DFA4_acceptS);
+    static final short[] DFA4_special = DFA.unpackEncodedString(DFA4_specialS);
+    static final short[][] DFA4_transition;
+
+    static {
+        int numStates = DFA4_transitionS.length;
+        DFA4_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA4_transition[i] = DFA.unpackEncodedString(DFA4_transitionS[i]);
+        }
+    }
+
+    class DFA4 extends DFA {
+
+        public DFA4(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 4;
+            this.eot = DFA4_eot;
+            this.eof = DFA4_eof;
+            this.min = DFA4_min;
+            this.max = DFA4_max;
+            this.accept = DFA4_accept;
+            this.special = DFA4_special;
+            this.transition = DFA4_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 210:9: ( typeDeclaration )*";
+        }
+    }
+    static final String DFA8_eotS =
+        "\21\uffff";
+    static final String DFA8_eofS =
+        "\21\uffff";
+    static final String DFA8_minS =
+        "\1\5\20\uffff";
+    static final String DFA8_maxS =
+        "\1\107\20\uffff";
+    static final String DFA8_acceptS =
+        "\1\uffff\1\1\16\uffff\1\2";
+    static final String DFA8_specialS =
+        "\21\uffff}>";
+    static final String[] DFA8_transitionS = {
+            "\1\1\23\uffff\1\20\1\uffff\1\1\2\uffff\1\1\10\uffff\1\1\5\uffff"+
+            "\12\1\20\uffff\1\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA8_eot = DFA.unpackEncodedString(DFA8_eotS);
+    static final short[] DFA8_eof = DFA.unpackEncodedString(DFA8_eofS);
+    static final char[] DFA8_min = DFA.unpackEncodedStringToUnsignedChars(DFA8_minS);
+    static final char[] DFA8_max = DFA.unpackEncodedStringToUnsignedChars(DFA8_maxS);
+    static final short[] DFA8_accept = DFA.unpackEncodedString(DFA8_acceptS);
+    static final short[] DFA8_special = DFA.unpackEncodedString(DFA8_specialS);
+    static final short[][] DFA8_transition;
+
+    static {
+        int numStates = DFA8_transitionS.length;
+        DFA8_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA8_transition[i] = DFA.unpackEncodedString(DFA8_transitionS[i]);
+        }
+    }
+
+    class DFA8 extends DFA {
+
+        public DFA8(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 8;
+            this.eot = DFA8_eot;
+            this.eof = DFA8_eof;
+            this.min = DFA8_min;
+            this.max = DFA8_max;
+            this.accept = DFA8_accept;
+            this.special = DFA8_special;
+            this.transition = DFA8_transition;
+        }
+        public String getDescription() {
+            return "221:1: typeDeclaration : ( classOrInterfaceDeclaration | ';' );";
+        }
+    }
+    static final String DFA9_eotS =
+        "\22\uffff";
+    static final String DFA9_eofS =
+        "\22\uffff";
+    static final String DFA9_minS =
+        "\1\5\3\uffff\1\4\15\uffff";
+    static final String DFA9_maxS =
+        "\1\107\3\uffff\1\47\15\uffff";
+    static final String DFA9_acceptS =
+        "\1\uffff\1\2\3\uffff\1\1\14\uffff";
+    static final String DFA9_specialS =
+        "\22\uffff}>";
+    static final String[] DFA9_transitionS = {
+            "\1\1\25\uffff\1\5\2\uffff\1\1\10\uffff\1\1\5\uffff\12\5\20\uffff"+
+            "\1\4",
+            "",
+            "",
+            "",
+            "\1\5\42\uffff\1\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA9_eot = DFA.unpackEncodedString(DFA9_eotS);
+    static final short[] DFA9_eof = DFA.unpackEncodedString(DFA9_eofS);
+    static final char[] DFA9_min = DFA.unpackEncodedStringToUnsignedChars(DFA9_minS);
+    static final char[] DFA9_max = DFA.unpackEncodedStringToUnsignedChars(DFA9_maxS);
+    static final short[] DFA9_accept = DFA.unpackEncodedString(DFA9_acceptS);
+    static final short[] DFA9_special = DFA.unpackEncodedString(DFA9_specialS);
+    static final short[][] DFA9_transition;
+
+    static {
+        int numStates = DFA9_transitionS.length;
+        DFA9_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA9_transition[i] = DFA.unpackEncodedString(DFA9_transitionS[i]);
+        }
+    }
+
+    class DFA9 extends DFA {
+
+        public DFA9(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 9;
+            this.eot = DFA9_eot;
+            this.eof = DFA9_eof;
+            this.min = DFA9_min;
+            this.max = DFA9_max;
+            this.accept = DFA9_accept;
+            this.special = DFA9_special;
+            this.transition = DFA9_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 227:4: ( modifier )*";
+        }
+    }
+    static final String DFA26_eotS =
+        "\30\uffff";
+    static final String DFA26_eofS =
+        "\1\1\27\uffff";
+    static final String DFA26_minS =
+        "\1\4\27\uffff";
+    static final String DFA26_maxS =
+        "\1\107\27\uffff";
+    static final String DFA26_acceptS =
+        "\1\uffff\1\2\1\uffff\1\1\24\uffff";
+    static final String DFA26_specialS =
+        "\30\uffff}>";
+    static final String[] DFA26_transitionS = {
+            "\2\3\23\uffff\1\3\1\uffff\1\3\2\uffff\1\3\2\uffff\1\3\3\uffff"+
+            "\1\3\1\1\2\3\4\uffff\22\3\10\uffff\1\3",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA26_eot = DFA.unpackEncodedString(DFA26_eotS);
+    static final short[] DFA26_eof = DFA.unpackEncodedString(DFA26_eofS);
+    static final char[] DFA26_min = DFA.unpackEncodedStringToUnsignedChars(DFA26_minS);
+    static final char[] DFA26_max = DFA.unpackEncodedStringToUnsignedChars(DFA26_maxS);
+    static final short[] DFA26_accept = DFA.unpackEncodedString(DFA26_acceptS);
+    static final short[] DFA26_special = DFA.unpackEncodedString(DFA26_specialS);
+    static final short[][] DFA26_transition;
+
+    static {
+        int numStates = DFA26_transitionS.length;
+        DFA26_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA26_transition[i] = DFA.unpackEncodedString(DFA26_transitionS[i]);
+        }
+    }
+
+    class DFA26 extends DFA {
+
+        public DFA26(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 26;
+            this.eot = DFA26_eot;
+            this.eof = DFA26_eof;
+            this.min = DFA26_min;
+            this.max = DFA26_max;
+            this.accept = DFA26_accept;
+            this.special = DFA26_special;
+            this.transition = DFA26_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 271:8: ( classBodyDeclaration )*";
+        }
+    }
+    static final String DFA31_eotS =
+        "\27\uffff";
+    static final String DFA31_eofS =
+        "\27\uffff";
+    static final String DFA31_minS =
+        "\1\4\26\uffff";
+    static final String DFA31_maxS =
+        "\1\107\26\uffff";
+    static final String DFA31_acceptS =
+        "\1\uffff\1\2\1\1\24\uffff";
+    static final String DFA31_specialS =
+        "\27\uffff}>";
+    static final String[] DFA31_transitionS = {
+            "\2\2\23\uffff\1\2\1\uffff\1\2\2\uffff\1\2\2\uffff\1\2\3\uffff"+
+            "\1\2\1\1\2\2\4\uffff\22\2\10\uffff\1\2",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA31_eot = DFA.unpackEncodedString(DFA31_eotS);
+    static final short[] DFA31_eof = DFA.unpackEncodedString(DFA31_eofS);
+    static final char[] DFA31_min = DFA.unpackEncodedStringToUnsignedChars(DFA31_minS);
+    static final char[] DFA31_max = DFA.unpackEncodedStringToUnsignedChars(DFA31_maxS);
+    static final short[] DFA31_accept = DFA.unpackEncodedString(DFA31_acceptS);
+    static final short[] DFA31_special = DFA.unpackEncodedString(DFA31_specialS);
+    static final short[][] DFA31_transition;
+
+    static {
+        int numStates = DFA31_transitionS.length;
+        DFA31_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA31_transition[i] = DFA.unpackEncodedString(DFA31_transitionS[i]);
+        }
+    }
+
+    class DFA31 extends DFA {
+
+        public DFA31(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 31;
+            this.eot = DFA31_eot;
+            this.eof = DFA31_eof;
+            this.min = DFA31_min;
+            this.max = DFA31_max;
+            this.accept = DFA31_accept;
+            this.special = DFA31_special;
+            this.transition = DFA31_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 288:8: ( classBodyDeclaration )*";
+        }
+    }
+    static final String DFA32_eotS =
+        "\26\uffff";
+    static final String DFA32_eofS =
+        "\26\uffff";
+    static final String DFA32_minS =
+        "\1\4\25\uffff";
+    static final String DFA32_maxS =
+        "\1\107\25\uffff";
+    static final String DFA32_acceptS =
+        "\1\uffff\1\2\1\1\23\uffff";
+    static final String DFA32_specialS =
+        "\26\uffff}>";
+    static final String[] DFA32_transitionS = {
+            "\2\2\23\uffff\1\2\1\uffff\1\2\2\uffff\1\2\2\uffff\1\2\4\uffff"+
+            "\1\1\2\2\4\uffff\22\2\10\uffff\1\2",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA32_eot = DFA.unpackEncodedString(DFA32_eotS);
+    static final short[] DFA32_eof = DFA.unpackEncodedString(DFA32_eofS);
+    static final char[] DFA32_min = DFA.unpackEncodedStringToUnsignedChars(DFA32_minS);
+    static final char[] DFA32_max = DFA.unpackEncodedStringToUnsignedChars(DFA32_maxS);
+    static final short[] DFA32_accept = DFA.unpackEncodedString(DFA32_acceptS);
+    static final short[] DFA32_special = DFA.unpackEncodedString(DFA32_specialS);
+    static final short[][] DFA32_transition;
+
+    static {
+        int numStates = DFA32_transitionS.length;
+        DFA32_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA32_transition[i] = DFA.unpackEncodedString(DFA32_transitionS[i]);
+        }
+    }
+
+    class DFA32 extends DFA {
+
+        public DFA32(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 32;
+            this.eot = DFA32_eot;
+            this.eof = DFA32_eof;
+            this.min = DFA32_min;
+            this.max = DFA32_max;
+            this.accept = DFA32_accept;
+            this.special = DFA32_special;
+            this.transition = DFA32_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 292:8: ( interfaceBodyDeclaration )*";
+        }
+    }
+    static final String DFA35_eotS =
+        "\52\uffff";
+    static final String DFA35_eofS =
+        "\52\uffff";
+    static final String DFA35_minS =
+        "\1\4\1\uffff\1\4\47\uffff";
+    static final String DFA35_maxS =
+        "\1\107\1\uffff\1\107\47\uffff";
+    static final String DFA35_acceptS =
+        "\1\uffff\1\1\1\uffff\1\2\1\3\45\uffff";
+    static final String DFA35_specialS =
+        "\52\uffff}>";
+    static final String[] DFA35_transitionS = {
+            "\2\4\23\uffff\1\1\1\uffff\1\2\2\uffff\1\4\2\uffff\1\4\3\uffff"+
+            "\1\3\1\uffff\2\4\4\uffff\22\4\10\uffff\1\4",
+            "",
+            "\2\4\25\uffff\1\4\2\uffff\1\4\2\uffff\1\4\3\uffff\1\3\1\uffff"+
+            "\2\4\4\uffff\22\4\10\uffff\1\4",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA35_eot = DFA.unpackEncodedString(DFA35_eotS);
+    static final short[] DFA35_eof = DFA.unpackEncodedString(DFA35_eofS);
+    static final char[] DFA35_min = DFA.unpackEncodedStringToUnsignedChars(DFA35_minS);
+    static final char[] DFA35_max = DFA.unpackEncodedStringToUnsignedChars(DFA35_maxS);
+    static final short[] DFA35_accept = DFA.unpackEncodedString(DFA35_acceptS);
+    static final short[] DFA35_special = DFA.unpackEncodedString(DFA35_specialS);
+    static final short[][] DFA35_transition;
+
+    static {
+        int numStates = DFA35_transitionS.length;
+        DFA35_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA35_transition[i] = DFA.unpackEncodedString(DFA35_transitionS[i]);
+        }
+    }
+
+    class DFA35 extends DFA {
+
+        public DFA35(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 35;
+            this.eot = DFA35_eot;
+            this.eof = DFA35_eof;
+            this.min = DFA35_min;
+            this.max = DFA35_max;
+            this.accept = DFA35_accept;
+            this.special = DFA35_special;
+            this.transition = DFA35_transition;
+        }
+        public String getDescription() {
+            return "295:1: classBodyDeclaration : ( ';' | ( 'static' )? block | ( modifier )* memberDecl );";
+        }
+    }
+    static final String DFA34_eotS =
+        "\26\uffff";
+    static final String DFA34_eofS =
+        "\26\uffff";
+    static final String DFA34_minS =
+        "\1\4\5\uffff\1\4\17\uffff";
+    static final String DFA34_maxS =
+        "\1\107\5\uffff\1\47\17\uffff";
+    static final String DFA34_acceptS =
+        "\1\uffff\1\2\7\uffff\1\1\14\uffff";
+    static final String DFA34_specialS =
+        "\26\uffff}>";
+    static final String[] DFA34_transitionS = {
+            "\2\1\25\uffff\1\11\2\uffff\1\1\2\uffff\1\1\5\uffff\2\1\4\uffff"+
+            "\12\11\10\1\10\uffff\1\6",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\11\42\uffff\1\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA34_eot = DFA.unpackEncodedString(DFA34_eotS);
+    static final short[] DFA34_eof = DFA.unpackEncodedString(DFA34_eofS);
+    static final char[] DFA34_min = DFA.unpackEncodedStringToUnsignedChars(DFA34_minS);
+    static final char[] DFA34_max = DFA.unpackEncodedStringToUnsignedChars(DFA34_maxS);
+    static final short[] DFA34_accept = DFA.unpackEncodedString(DFA34_acceptS);
+    static final short[] DFA34_special = DFA.unpackEncodedString(DFA34_specialS);
+    static final short[][] DFA34_transition;
+
+    static {
+        int numStates = DFA34_transitionS.length;
+        DFA34_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA34_transition[i] = DFA.unpackEncodedString(DFA34_transitionS[i]);
+        }
+    }
+
+    class DFA34 extends DFA {
+
+        public DFA34(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 34;
+            this.eot = DFA34_eot;
+            this.eof = DFA34_eof;
+            this.min = DFA34_min;
+            this.max = DFA34_max;
+            this.accept = DFA34_accept;
+            this.special = DFA34_special;
+            this.transition = DFA34_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 298:4: ( modifier )*";
+        }
+    }
+    static final String DFA36_eotS =
+        "\22\uffff";
+    static final String DFA36_eofS =
+        "\22\uffff";
+    static final String DFA36_minS =
+        "\1\4\1\uffff\2\4\5\uffff\4\0\1\uffff\2\0\2\uffff";
+    static final String DFA36_maxS =
+        "\1\107\1\uffff\1\101\1\51\5\uffff\4\0\1\uffff\2\0\2\uffff";
+    static final String DFA36_acceptS =
+        "\1\uffff\1\1\2\uffff\1\4\1\6\1\uffff\1\7\5\uffff\1\5\2\uffff\1\2"+
+        "\1\3";
+    static final String DFA36_specialS =
+        "\11\uffff\1\0\1\1\1\2\1\3\1\uffff\1\4\1\5\2\uffff}>";
+    static final String[] DFA36_transitionS = {
+            "\1\2\1\7\30\uffff\1\7\2\uffff\1\1\5\uffff\1\5\1\4\16\uffff\10"+
+            "\3\10\uffff\1\5",
+            "",
+            "\1\14\27\uffff\1\12\4\uffff\1\11\7\uffff\1\13\27\uffff\1\15",
+            "\1\17\44\uffff\1\16",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            ""
+    };
+
+    static final short[] DFA36_eot = DFA.unpackEncodedString(DFA36_eotS);
+    static final short[] DFA36_eof = DFA.unpackEncodedString(DFA36_eofS);
+    static final char[] DFA36_min = DFA.unpackEncodedStringToUnsignedChars(DFA36_minS);
+    static final char[] DFA36_max = DFA.unpackEncodedStringToUnsignedChars(DFA36_maxS);
+    static final short[] DFA36_accept = DFA.unpackEncodedString(DFA36_acceptS);
+    static final short[] DFA36_special = DFA.unpackEncodedString(DFA36_specialS);
+    static final short[][] DFA36_transition;
+
+    static {
+        int numStates = DFA36_transitionS.length;
+        DFA36_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA36_transition[i] = DFA.unpackEncodedString(DFA36_transitionS[i]);
+        }
+    }
+
+    class DFA36 extends DFA {
+
+        public DFA36(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 36;
+            this.eot = DFA36_eot;
+            this.eof = DFA36_eof;
+            this.min = DFA36_min;
+            this.max = DFA36_max;
+            this.accept = DFA36_accept;
+            this.special = DFA36_special;
+            this.transition = DFA36_transition;
+        }
+        public String getDescription() {
+            return "301:1: memberDecl : ( genericMethodOrConstructorDecl | methodDeclaration | fieldDeclaration | 'void' Identifier voidMethodDeclaratorRest | Identifier constructorDeclaratorRest | interfaceDeclaration | classDeclaration );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA36_9 = input.LA(1);
+
+                         
+                        int index36_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred38_Java()) ) {s = 16;}
+
+                        else if ( (synpred39_Java()) ) {s = 17;}
+
+                         
+                        input.seek(index36_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA36_10 = input.LA(1);
+
+                         
+                        int index36_10 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred38_Java()) ) {s = 16;}
+
+                        else if ( (synpred39_Java()) ) {s = 17;}
+
+                         
+                        input.seek(index36_10);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA36_11 = input.LA(1);
+
+                         
+                        int index36_11 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred38_Java()) ) {s = 16;}
+
+                        else if ( (synpred39_Java()) ) {s = 17;}
+
+                         
+                        input.seek(index36_11);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA36_12 = input.LA(1);
+
+                         
+                        int index36_12 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred38_Java()) ) {s = 16;}
+
+                        else if ( (synpred39_Java()) ) {s = 17;}
+
+                         
+                        input.seek(index36_12);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA36_14 = input.LA(1);
+
+                         
+                        int index36_14 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred38_Java()) ) {s = 16;}
+
+                        else if ( (synpred39_Java()) ) {s = 17;}
+
+                         
+                        input.seek(index36_14);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA36_15 = input.LA(1);
+
+                         
+                        int index36_15 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred38_Java()) ) {s = 16;}
+
+                        else if ( (synpred39_Java()) ) {s = 17;}
+
+                         
+                        input.seek(index36_15);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 36, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA40_eotS =
+        "\25\uffff";
+    static final String DFA40_eofS =
+        "\25\uffff";
+    static final String DFA40_minS =
+        "\1\4\24\uffff";
+    static final String DFA40_maxS =
+        "\1\107\24\uffff";
+    static final String DFA40_acceptS =
+        "\1\uffff\1\1\22\uffff\1\2";
+    static final String DFA40_specialS =
+        "\25\uffff}>";
+    static final String[] DFA40_transitionS = {
+            "\2\1\23\uffff\1\24\1\uffff\1\1\2\uffff\1\1\2\uffff\1\1\5\uffff"+
+            "\2\1\4\uffff\22\1\10\uffff\1\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA40_eot = DFA.unpackEncodedString(DFA40_eotS);
+    static final short[] DFA40_eof = DFA.unpackEncodedString(DFA40_eofS);
+    static final char[] DFA40_min = DFA.unpackEncodedStringToUnsignedChars(DFA40_minS);
+    static final char[] DFA40_max = DFA.unpackEncodedStringToUnsignedChars(DFA40_maxS);
+    static final short[] DFA40_accept = DFA.unpackEncodedString(DFA40_acceptS);
+    static final short[] DFA40_special = DFA.unpackEncodedString(DFA40_specialS);
+    static final short[][] DFA40_transition;
+
+    static {
+        int numStates = DFA40_transitionS.length;
+        DFA40_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA40_transition[i] = DFA.unpackEncodedString(DFA40_transitionS[i]);
+        }
+    }
+
+    class DFA40 extends DFA {
+
+        public DFA40(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 40;
+            this.eot = DFA40_eot;
+            this.eof = DFA40_eof;
+            this.min = DFA40_min;
+            this.max = DFA40_max;
+            this.accept = DFA40_accept;
+            this.special = DFA40_special;
+            this.transition = DFA40_transition;
+        }
+        public String getDescription() {
+            return "328:1: interfaceBodyDeclaration : ( ( modifier )* interfaceMemberDecl | ';' );";
+        }
+    }
+    static final String DFA39_eotS =
+        "\26\uffff";
+    static final String DFA39_eofS =
+        "\26\uffff";
+    static final String DFA39_minS =
+        "\1\4\5\uffff\1\4\17\uffff";
+    static final String DFA39_maxS =
+        "\1\107\5\uffff\1\47\17\uffff";
+    static final String DFA39_acceptS =
+        "\1\uffff\1\2\7\uffff\1\1\14\uffff";
+    static final String DFA39_specialS =
+        "\26\uffff}>";
+    static final String[] DFA39_transitionS = {
+            "\2\1\25\uffff\1\11\2\uffff\1\1\2\uffff\1\1\5\uffff\2\1\4\uffff"+
+            "\12\11\10\1\10\uffff\1\6",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\11\42\uffff\1\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA39_eot = DFA.unpackEncodedString(DFA39_eotS);
+    static final short[] DFA39_eof = DFA.unpackEncodedString(DFA39_eofS);
+    static final char[] DFA39_min = DFA.unpackEncodedStringToUnsignedChars(DFA39_minS);
+    static final char[] DFA39_max = DFA.unpackEncodedStringToUnsignedChars(DFA39_maxS);
+    static final short[] DFA39_accept = DFA.unpackEncodedString(DFA39_acceptS);
+    static final short[] DFA39_special = DFA.unpackEncodedString(DFA39_specialS);
+    static final short[][] DFA39_transition;
+
+    static {
+        int numStates = DFA39_transitionS.length;
+        DFA39_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA39_transition[i] = DFA.unpackEncodedString(DFA39_transitionS[i]);
+        }
+    }
+
+    class DFA39 extends DFA {
+
+        public DFA39(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 39;
+            this.eot = DFA39_eot;
+            this.eof = DFA39_eof;
+            this.min = DFA39_min;
+            this.max = DFA39_max;
+            this.accept = DFA39_accept;
+            this.special = DFA39_special;
+            this.transition = DFA39_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 329:4: ( modifier )*";
+        }
+    }
+    static final String DFA60_eotS =
+        "\26\uffff";
+    static final String DFA60_eofS =
+        "\26\uffff";
+    static final String DFA60_minS =
+        "\1\4\25\uffff";
+    static final String DFA60_maxS =
+        "\1\162\25\uffff";
+    static final String DFA60_acceptS =
+        "\1\uffff\1\1\1\2\23\uffff";
+    static final String DFA60_specialS =
+        "\26\uffff}>";
+    static final String[] DFA60_transitionS = {
+            "\1\2\1\uffff\6\2\25\uffff\1\2\3\uffff\1\1\2\uffff\1\2\16\uffff"+
+            "\10\2\1\uffff\2\2\2\uffff\3\2\42\uffff\2\2\2\uffff\6\2",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA60_eot = DFA.unpackEncodedString(DFA60_eotS);
+    static final short[] DFA60_eof = DFA.unpackEncodedString(DFA60_eofS);
+    static final char[] DFA60_min = DFA.unpackEncodedStringToUnsignedChars(DFA60_minS);
+    static final char[] DFA60_max = DFA.unpackEncodedStringToUnsignedChars(DFA60_maxS);
+    static final short[] DFA60_accept = DFA.unpackEncodedString(DFA60_acceptS);
+    static final short[] DFA60_special = DFA.unpackEncodedString(DFA60_specialS);
+    static final short[][] DFA60_transition;
+
+    static {
+        int numStates = DFA60_transitionS.length;
+        DFA60_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA60_transition[i] = DFA.unpackEncodedString(DFA60_transitionS[i]);
+        }
+    }
+
+    class DFA60 extends DFA {
+
+        public DFA60(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 60;
+            this.eot = DFA60_eot;
+            this.eof = DFA60_eof;
+            this.min = DFA60_min;
+            this.max = DFA60_max;
+            this.accept = DFA60_accept;
+            this.special = DFA60_special;
+            this.transition = DFA60_transition;
+        }
+        public String getDescription() {
+            return "434:1: variableInitializer : ( arrayInitializer | expression );";
+        }
+    }
+    static final String DFA63_eotS =
+        "\27\uffff";
+    static final String DFA63_eofS =
+        "\27\uffff";
+    static final String DFA63_minS =
+        "\1\4\26\uffff";
+    static final String DFA63_maxS =
+        "\1\162\26\uffff";
+    static final String DFA63_acceptS =
+        "\1\uffff\1\1\24\uffff\1\2";
+    static final String DFA63_specialS =
+        "\27\uffff}>";
+    static final String[] DFA63_transitionS = {
+            "\1\1\1\uffff\6\1\25\uffff\1\1\3\uffff\1\1\1\26\1\uffff\1\1\16"+
+            "\uffff\10\1\1\uffff\2\1\2\uffff\3\1\42\uffff\2\1\2\uffff\6\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA63_eot = DFA.unpackEncodedString(DFA63_eotS);
+    static final short[] DFA63_eof = DFA.unpackEncodedString(DFA63_eofS);
+    static final char[] DFA63_min = DFA.unpackEncodedStringToUnsignedChars(DFA63_minS);
+    static final char[] DFA63_max = DFA.unpackEncodedStringToUnsignedChars(DFA63_maxS);
+    static final short[] DFA63_accept = DFA.unpackEncodedString(DFA63_acceptS);
+    static final short[] DFA63_special = DFA.unpackEncodedString(DFA63_specialS);
+    static final short[][] DFA63_transition;
+
+    static {
+        int numStates = DFA63_transitionS.length;
+        DFA63_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA63_transition[i] = DFA.unpackEncodedString(DFA63_transitionS[i]);
+        }
+    }
+
+    class DFA63 extends DFA {
+
+        public DFA63(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 63;
+            this.eot = DFA63_eot;
+            this.eof = DFA63_eof;
+            this.min = DFA63_min;
+            this.max = DFA63_max;
+            this.accept = DFA63_accept;
+            this.special = DFA63_special;
+            this.transition = DFA63_transition;
+        }
+        public String getDescription() {
+            return "440:8: ( variableInitializer ( ',' variableInitializer )* ( ',' )? )?";
+        }
+    }
+    static final String DFA61_eotS =
+        "\31\uffff";
+    static final String DFA61_eofS =
+        "\31\uffff";
+    static final String DFA61_minS =
+        "\1\42\1\4\27\uffff";
+    static final String DFA61_maxS =
+        "\1\46\1\162\27\uffff";
+    static final String DFA61_acceptS =
+        "\2\uffff\1\2\1\uffff\1\1\24\uffff";
+    static final String DFA61_specialS =
+        "\31\uffff}>";
+    static final String[] DFA61_transitionS = {
+            "\1\1\3\uffff\1\2",
+            "\1\4\1\uffff\6\4\25\uffff\1\4\3\uffff\1\4\1\2\1\uffff\1\4\16"+
+            "\uffff\10\4\1\uffff\2\4\2\uffff\3\4\42\uffff\2\4\2\uffff\6\4",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA61_eot = DFA.unpackEncodedString(DFA61_eotS);
+    static final short[] DFA61_eof = DFA.unpackEncodedString(DFA61_eofS);
+    static final char[] DFA61_min = DFA.unpackEncodedStringToUnsignedChars(DFA61_minS);
+    static final char[] DFA61_max = DFA.unpackEncodedStringToUnsignedChars(DFA61_maxS);
+    static final short[] DFA61_accept = DFA.unpackEncodedString(DFA61_acceptS);
+    static final short[] DFA61_special = DFA.unpackEncodedString(DFA61_specialS);
+    static final short[][] DFA61_transition;
+
+    static {
+        int numStates = DFA61_transitionS.length;
+        DFA61_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA61_transition[i] = DFA.unpackEncodedString(DFA61_transitionS[i]);
+        }
+    }
+
+    class DFA61 extends DFA {
+
+        public DFA61(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 61;
+            this.eot = DFA61_eot;
+            this.eof = DFA61_eof;
+            this.min = DFA61_min;
+            this.max = DFA61_max;
+            this.accept = DFA61_accept;
+            this.special = DFA61_special;
+            this.transition = DFA61_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 440:29: ( ',' variableInitializer )*";
+        }
+    }
+    static final String DFA64_eotS =
+        "\15\uffff";
+    static final String DFA64_eofS =
+        "\15\uffff";
+    static final String DFA64_minS =
+        "\1\33\14\uffff";
+    static final String DFA64_maxS =
+        "\1\107\14\uffff";
+    static final String DFA64_acceptS =
+        "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14";
+    static final String DFA64_specialS =
+        "\15\uffff}>";
+    static final String[] DFA64_transitionS = {
+            "\1\5\21\uffff\1\2\1\3\1\4\1\6\1\7\1\10\1\11\1\12\1\13\1\14\20"+
+            "\uffff\1\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA64_eot = DFA.unpackEncodedString(DFA64_eotS);
+    static final short[] DFA64_eof = DFA.unpackEncodedString(DFA64_eofS);
+    static final char[] DFA64_min = DFA.unpackEncodedStringToUnsignedChars(DFA64_minS);
+    static final char[] DFA64_max = DFA.unpackEncodedStringToUnsignedChars(DFA64_maxS);
+    static final short[] DFA64_accept = DFA.unpackEncodedString(DFA64_acceptS);
+    static final short[] DFA64_special = DFA.unpackEncodedString(DFA64_specialS);
+    static final short[][] DFA64_transition;
+
+    static {
+        int numStates = DFA64_transitionS.length;
+        DFA64_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA64_transition[i] = DFA.unpackEncodedString(DFA64_transitionS[i]);
+        }
+    }
+
+    class DFA64 extends DFA {
+
+        public DFA64(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 64;
+            this.eot = DFA64_eot;
+            this.eof = DFA64_eof;
+            this.min = DFA64_min;
+            this.max = DFA64_max;
+            this.accept = DFA64_accept;
+            this.special = DFA64_special;
+            this.transition = DFA64_transition;
+        }
+        public String getDescription() {
+            return "443:1: modifier : ( annotation | 'public' | 'protected' | 'private' | 'static' | 'abstract' | 'final' | 'native' | 'synchronized' | 'transient' | 'volatile' | 'strictfp' );";
+        }
+    }
+    static final String DFA67_eotS =
+        "\44\uffff";
+    static final String DFA67_eofS =
+        "\1\2\43\uffff";
+    static final String DFA67_minS =
+        "\2\4\42\uffff";
+    static final String DFA67_maxS =
+        "\1\147\1\77\42\uffff";
+    static final String DFA67_acceptS =
+        "\2\uffff\1\2\36\uffff\1\1\2\uffff";
+    static final String DFA67_specialS =
+        "\44\uffff}>";
+    static final String[] DFA67_transitionS = {
+            "\1\2\24\uffff\1\2\2\uffff\1\2\3\uffff\1\2\1\1\5\2\2\uffff\2"+
+            "\2\1\uffff\1\2\22\uffff\1\2\2\uffff\2\2\6\uffff\1\2\17\uffff"+
+            "\16\2",
+            "\1\41\34\uffff\1\2\25\uffff\11\41",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA67_eot = DFA.unpackEncodedString(DFA67_eotS);
+    static final short[] DFA67_eof = DFA.unpackEncodedString(DFA67_eofS);
+    static final char[] DFA67_min = DFA.unpackEncodedStringToUnsignedChars(DFA67_minS);
+    static final char[] DFA67_max = DFA.unpackEncodedStringToUnsignedChars(DFA67_maxS);
+    static final short[] DFA67_accept = DFA.unpackEncodedString(DFA67_acceptS);
+    static final short[] DFA67_special = DFA.unpackEncodedString(DFA67_specialS);
+    static final short[][] DFA67_transition;
+
+    static {
+        int numStates = DFA67_transitionS.length;
+        DFA67_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA67_transition[i] = DFA.unpackEncodedString(DFA67_transitionS[i]);
+        }
+    }
+
+    class DFA67 extends DFA {
+
+        public DFA67(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 67;
+            this.eot = DFA67_eot;
+            this.eof = DFA67_eof;
+            this.min = DFA67_min;
+            this.max = DFA67_max;
+            this.accept = DFA67_accept;
+            this.special = DFA67_special;
+            this.transition = DFA67_transition;
+        }
+        public String getDescription() {
+            return "472:15: ( typeArguments )?";
+        }
+    }
+    static final String DFA69_eotS =
+        "\40\uffff";
+    static final String DFA69_eofS =
+        "\1\1\37\uffff";
+    static final String DFA69_minS =
+        "\1\4\37\uffff";
+    static final String DFA69_maxS =
+        "\1\147\37\uffff";
+    static final String DFA69_acceptS =
+        "\1\uffff\1\2\35\uffff\1\1";
+    static final String DFA69_specialS =
+        "\40\uffff}>";
+    static final String[] DFA69_transitionS = {
+            "\1\1\24\uffff\1\1\2\uffff\1\37\3\uffff\7\1\2\uffff\2\1\1\uffff"+
+            "\1\1\22\uffff\1\1\2\uffff\2\1\6\uffff\1\1\17\uffff\16\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA69_eot = DFA.unpackEncodedString(DFA69_eotS);
+    static final short[] DFA69_eof = DFA.unpackEncodedString(DFA69_eofS);
+    static final char[] DFA69_min = DFA.unpackEncodedStringToUnsignedChars(DFA69_minS);
+    static final char[] DFA69_max = DFA.unpackEncodedStringToUnsignedChars(DFA69_maxS);
+    static final short[] DFA69_accept = DFA.unpackEncodedString(DFA69_acceptS);
+    static final short[] DFA69_special = DFA.unpackEncodedString(DFA69_specialS);
+    static final short[][] DFA69_transition;
+
+    static {
+        int numStates = DFA69_transitionS.length;
+        DFA69_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA69_transition[i] = DFA.unpackEncodedString(DFA69_transitionS[i]);
+        }
+    }
+
+    class DFA69 extends DFA {
+
+        public DFA69(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 69;
+            this.eot = DFA69_eot;
+            this.eof = DFA69_eof;
+            this.min = DFA69_min;
+            this.max = DFA69_max;
+            this.accept = DFA69_accept;
+            this.special = DFA69_special;
+            this.transition = DFA69_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 472:32: ( '.' Identifier ( typeArguments )? )*";
+        }
+    }
+    static final String DFA68_eotS =
+        "\44\uffff";
+    static final String DFA68_eofS =
+        "\1\2\43\uffff";
+    static final String DFA68_minS =
+        "\2\4\42\uffff";
+    static final String DFA68_maxS =
+        "\1\147\1\77\42\uffff";
+    static final String DFA68_acceptS =
+        "\2\uffff\1\2\36\uffff\1\1\2\uffff";
+    static final String DFA68_specialS =
+        "\44\uffff}>";
+    static final String[] DFA68_transitionS = {
+            "\1\2\24\uffff\1\2\2\uffff\1\2\3\uffff\1\2\1\1\5\2\2\uffff\2"+
+            "\2\1\uffff\1\2\22\uffff\1\2\2\uffff\2\2\6\uffff\1\2\17\uffff"+
+            "\16\2",
+            "\1\41\34\uffff\1\2\25\uffff\11\41",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA68_eot = DFA.unpackEncodedString(DFA68_eotS);
+    static final short[] DFA68_eof = DFA.unpackEncodedString(DFA68_eofS);
+    static final char[] DFA68_min = DFA.unpackEncodedStringToUnsignedChars(DFA68_minS);
+    static final char[] DFA68_max = DFA.unpackEncodedStringToUnsignedChars(DFA68_maxS);
+    static final short[] DFA68_accept = DFA.unpackEncodedString(DFA68_acceptS);
+    static final short[] DFA68_special = DFA.unpackEncodedString(DFA68_specialS);
+    static final short[][] DFA68_transition;
+
+    static {
+        int numStates = DFA68_transitionS.length;
+        DFA68_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA68_transition[i] = DFA.unpackEncodedString(DFA68_transitionS[i]);
+        }
+    }
+
+    class DFA68 extends DFA {
+
+        public DFA68(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 68;
+            this.eot = DFA68_eot;
+            this.eof = DFA68_eof;
+            this.min = DFA68_min;
+            this.max = DFA68_max;
+            this.accept = DFA68_accept;
+            this.special = DFA68_special;
+            this.transition = DFA68_transition;
+        }
+        public String getDescription() {
+            return "472:48: ( typeArguments )?";
+        }
+    }
+    static final String DFA70_eotS =
+        "\37\uffff";
+    static final String DFA70_eofS =
+        "\1\1\36\uffff";
+    static final String DFA70_minS =
+        "\1\4\36\uffff";
+    static final String DFA70_maxS =
+        "\1\147\36\uffff";
+    static final String DFA70_acceptS =
+        "\1\uffff\1\2\34\uffff\1\1";
+    static final String DFA70_specialS =
+        "\37\uffff}>";
+    static final String[] DFA70_transitionS = {
+            "\1\1\24\uffff\1\1\6\uffff\7\1\2\uffff\1\36\1\1\1\uffff\1\1\22"+
+            "\uffff\1\1\2\uffff\2\1\6\uffff\1\1\17\uffff\16\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA70_eot = DFA.unpackEncodedString(DFA70_eotS);
+    static final short[] DFA70_eof = DFA.unpackEncodedString(DFA70_eofS);
+    static final char[] DFA70_min = DFA.unpackEncodedStringToUnsignedChars(DFA70_minS);
+    static final char[] DFA70_max = DFA.unpackEncodedStringToUnsignedChars(DFA70_maxS);
+    static final short[] DFA70_accept = DFA.unpackEncodedString(DFA70_acceptS);
+    static final short[] DFA70_special = DFA.unpackEncodedString(DFA70_specialS);
+    static final short[][] DFA70_transition;
+
+    static {
+        int numStates = DFA70_transitionS.length;
+        DFA70_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA70_transition[i] = DFA.unpackEncodedString(DFA70_transitionS[i]);
+        }
+    }
+
+    class DFA70 extends DFA {
+
+        public DFA70(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 70;
+            this.eot = DFA70_eot;
+            this.eof = DFA70_eof;
+            this.min = DFA70_min;
+            this.max = DFA70_max;
+            this.accept = DFA70_accept;
+            this.special = DFA70_special;
+            this.transition = DFA70_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 472:68: ( '[' ']' )*";
+        }
+    }
+    static final String DFA71_eotS =
+        "\37\uffff";
+    static final String DFA71_eofS =
+        "\1\1\36\uffff";
+    static final String DFA71_minS =
+        "\1\4\36\uffff";
+    static final String DFA71_maxS =
+        "\1\147\36\uffff";
+    static final String DFA71_acceptS =
+        "\1\uffff\1\2\34\uffff\1\1";
+    static final String DFA71_specialS =
+        "\37\uffff}>";
+    static final String[] DFA71_transitionS = {
+            "\1\1\24\uffff\1\1\6\uffff\7\1\2\uffff\1\36\1\1\1\uffff\1\1\22"+
+            "\uffff\1\1\2\uffff\2\1\6\uffff\1\1\17\uffff\16\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA71_eot = DFA.unpackEncodedString(DFA71_eotS);
+    static final short[] DFA71_eof = DFA.unpackEncodedString(DFA71_eofS);
+    static final char[] DFA71_min = DFA.unpackEncodedStringToUnsignedChars(DFA71_minS);
+    static final char[] DFA71_max = DFA.unpackEncodedStringToUnsignedChars(DFA71_maxS);
+    static final short[] DFA71_accept = DFA.unpackEncodedString(DFA71_acceptS);
+    static final short[] DFA71_special = DFA.unpackEncodedString(DFA71_specialS);
+    static final short[][] DFA71_transition;
+
+    static {
+        int numStates = DFA71_transitionS.length;
+        DFA71_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA71_transition[i] = DFA.unpackEncodedString(DFA71_transitionS[i]);
+        }
+    }
+
+    class DFA71 extends DFA {
+
+        public DFA71(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 71;
+            this.eot = DFA71_eot;
+            this.eof = DFA71_eof;
+            this.min = DFA71_min;
+            this.max = DFA71_max;
+            this.accept = DFA71_accept;
+            this.special = DFA71_special;
+            this.transition = DFA71_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 473:18: ( '[' ']' )*";
+        }
+    }
+    static final String DFA85_eotS =
+        "\30\uffff";
+    static final String DFA85_eofS =
+        "\1\1\27\uffff";
+    static final String DFA85_minS =
+        "\1\4\2\uffff\1\4\22\uffff\1\0\1\uffff";
+    static final String DFA85_maxS =
+        "\1\107\2\uffff\1\47\22\uffff\1\0\1\uffff";
+    static final String DFA85_acceptS =
+        "\1\uffff\1\2\25\uffff\1\1";
+    static final String DFA85_specialS =
+        "\26\uffff\1\0\1\uffff}>";
+    static final String[] DFA85_transitionS = {
+            "\2\1\22\uffff\4\1\2\uffff\1\1\10\uffff\1\1\5\uffff\12\1\20\uffff"+
+            "\1\3",
+            "",
+            "",
+            "\1\26\42\uffff\1\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            ""
+    };
+
+    static final short[] DFA85_eot = DFA.unpackEncodedString(DFA85_eotS);
+    static final short[] DFA85_eof = DFA.unpackEncodedString(DFA85_eofS);
+    static final char[] DFA85_min = DFA.unpackEncodedStringToUnsignedChars(DFA85_minS);
+    static final char[] DFA85_max = DFA.unpackEncodedStringToUnsignedChars(DFA85_maxS);
+    static final short[] DFA85_accept = DFA.unpackEncodedString(DFA85_acceptS);
+    static final short[] DFA85_special = DFA.unpackEncodedString(DFA85_specialS);
+    static final short[][] DFA85_transition;
+
+    static {
+        int numStates = DFA85_transitionS.length;
+        DFA85_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA85_transition[i] = DFA.unpackEncodedString(DFA85_transitionS[i]);
+        }
+    }
+
+    class DFA85 extends DFA {
+
+        public DFA85(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 85;
+            this.eot = DFA85_eot;
+            this.eof = DFA85_eof;
+            this.min = DFA85_min;
+            this.max = DFA85_max;
+            this.accept = DFA85_accept;
+            this.special = DFA85_special;
+            this.transition = DFA85_transition;
+        }
+        public String getDescription() {
+            return "()+ loopback of 549:4: ( annotation )+";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA85_22 = input.LA(1);
+
+                         
+                        int index85_22 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred120_Java()) ) {s = 23;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index85_22);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 85, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA87_eotS =
+        "\34\uffff";
+    static final String DFA87_eofS =
+        "\1\2\33\uffff";
+    static final String DFA87_minS =
+        "\1\4\33\uffff";
+    static final String DFA87_maxS =
+        "\1\107\33\uffff";
+    static final String DFA87_acceptS =
+        "\1\uffff\1\1\1\2\31\uffff";
+    static final String DFA87_specialS =
+        "\34\uffff}>";
+    static final String[] DFA87_transitionS = {
+            "\2\2\22\uffff\4\2\2\uffff\1\2\2\uffff\2\2\3\uffff\3\2\4\uffff"+
+            "\22\2\2\uffff\1\1\1\2\4\uffff\1\2",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA87_eot = DFA.unpackEncodedString(DFA87_eotS);
+    static final short[] DFA87_eof = DFA.unpackEncodedString(DFA87_eofS);
+    static final char[] DFA87_min = DFA.unpackEncodedStringToUnsignedChars(DFA87_minS);
+    static final char[] DFA87_max = DFA.unpackEncodedStringToUnsignedChars(DFA87_maxS);
+    static final short[] DFA87_accept = DFA.unpackEncodedString(DFA87_acceptS);
+    static final short[] DFA87_special = DFA.unpackEncodedString(DFA87_specialS);
+    static final short[][] DFA87_transition;
+
+    static {
+        int numStates = DFA87_transitionS.length;
+        DFA87_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA87_transition[i] = DFA.unpackEncodedString(DFA87_transitionS[i]);
+        }
+    }
+
+    class DFA87 extends DFA {
+
+        public DFA87(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 87;
+            this.eot = DFA87_eot;
+            this.eof = DFA87_eof;
+            this.min = DFA87_min;
+            this.max = DFA87_max;
+            this.accept = DFA87_accept;
+            this.special = DFA87_special;
+            this.transition = DFA87_transition;
+        }
+        public String getDescription() {
+            return "553:23: ( '(' ( elementValuePairs )? ')' )?";
+        }
+    }
+    static final String DFA86_eotS =
+        "\30\uffff";
+    static final String DFA86_eofS =
+        "\30\uffff";
+    static final String DFA86_minS =
+        "\1\4\27\uffff";
+    static final String DFA86_maxS =
+        "\1\162\27\uffff";
+    static final String DFA86_acceptS =
+        "\1\uffff\1\1\25\uffff\1\2";
+    static final String DFA86_specialS =
+        "\30\uffff}>";
+    static final String[] DFA86_transitionS = {
+            "\1\1\1\uffff\6\1\25\uffff\1\1\3\uffff\1\1\2\uffff\1\1\16\uffff"+
+            "\10\1\1\uffff\2\1\1\27\1\uffff\4\1\41\uffff\2\1\2\uffff\6\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA86_eot = DFA.unpackEncodedString(DFA86_eotS);
+    static final short[] DFA86_eof = DFA.unpackEncodedString(DFA86_eofS);
+    static final char[] DFA86_min = DFA.unpackEncodedStringToUnsignedChars(DFA86_minS);
+    static final char[] DFA86_max = DFA.unpackEncodedStringToUnsignedChars(DFA86_maxS);
+    static final short[] DFA86_accept = DFA.unpackEncodedString(DFA86_acceptS);
+    static final short[] DFA86_special = DFA.unpackEncodedString(DFA86_specialS);
+    static final short[][] DFA86_transition;
+
+    static {
+        int numStates = DFA86_transitionS.length;
+        DFA86_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA86_transition[i] = DFA.unpackEncodedString(DFA86_transitionS[i]);
+        }
+    }
+
+    class DFA86 extends DFA {
+
+        public DFA86(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 86;
+            this.eot = DFA86_eot;
+            this.eof = DFA86_eof;
+            this.min = DFA86_min;
+            this.max = DFA86_max;
+            this.accept = DFA86_accept;
+            this.special = DFA86_special;
+            this.transition = DFA86_transition;
+        }
+        public String getDescription() {
+            return "553:28: ( elementValuePairs )?";
+        }
+    }
+    static final String DFA88_eotS =
+        "\35\uffff";
+    static final String DFA88_eofS =
+        "\1\1\34\uffff";
+    static final String DFA88_minS =
+        "\1\4\34\uffff";
+    static final String DFA88_maxS =
+        "\1\107\34\uffff";
+    static final String DFA88_acceptS =
+        "\1\uffff\1\2\32\uffff\1\1";
+    static final String DFA88_specialS =
+        "\35\uffff}>";
+    static final String[] DFA88_transitionS = {
+            "\2\1\22\uffff\4\1\1\34\1\uffff\1\1\2\uffff\2\1\3\uffff\3\1\4"+
+            "\uffff\22\1\2\uffff\2\1\4\uffff\1\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA88_eot = DFA.unpackEncodedString(DFA88_eotS);
+    static final short[] DFA88_eof = DFA.unpackEncodedString(DFA88_eofS);
+    static final char[] DFA88_min = DFA.unpackEncodedStringToUnsignedChars(DFA88_minS);
+    static final char[] DFA88_max = DFA.unpackEncodedStringToUnsignedChars(DFA88_maxS);
+    static final short[] DFA88_accept = DFA.unpackEncodedString(DFA88_acceptS);
+    static final short[] DFA88_special = DFA.unpackEncodedString(DFA88_specialS);
+    static final short[][] DFA88_transition;
+
+    static {
+        int numStates = DFA88_transitionS.length;
+        DFA88_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA88_transition[i] = DFA.unpackEncodedString(DFA88_transitionS[i]);
+        }
+    }
+
+    class DFA88 extends DFA {
+
+        public DFA88(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 88;
+            this.eot = DFA88_eot;
+            this.eof = DFA88_eof;
+            this.min = DFA88_min;
+            this.max = DFA88_max;
+            this.accept = DFA88_accept;
+            this.special = DFA88_special;
+            this.transition = DFA88_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 557:15: ( '.' Identifier )*";
+        }
+    }
+    static final String DFA90_eotS =
+        "\53\uffff";
+    static final String DFA90_eofS =
+        "\1\uffff\1\2\51\uffff";
+    static final String DFA90_minS =
+        "\1\4\1\34\51\uffff";
+    static final String DFA90_maxS =
+        "\1\162\1\156\51\uffff";
+    static final String DFA90_acceptS =
+        "\2\uffff\1\2\24\uffff\1\1\23\uffff";
+    static final String DFA90_specialS =
+        "\53\uffff}>";
+    static final String[] DFA90_transitionS = {
+            "\1\1\1\uffff\6\2\25\uffff\1\2\3\uffff\1\2\2\uffff\1\2\16\uffff"+
+            "\10\2\1\uffff\2\2\2\uffff\4\2\41\uffff\2\2\2\uffff\6\2",
+            "\2\2\3\uffff\4\2\4\uffff\1\2\2\uffff\1\27\22\uffff\1\2\1\uffff"+
+            "\2\2\37\uffff\15\2",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA90_eot = DFA.unpackEncodedString(DFA90_eotS);
+    static final short[] DFA90_eof = DFA.unpackEncodedString(DFA90_eofS);
+    static final char[] DFA90_min = DFA.unpackEncodedStringToUnsignedChars(DFA90_minS);
+    static final char[] DFA90_max = DFA.unpackEncodedStringToUnsignedChars(DFA90_maxS);
+    static final short[] DFA90_accept = DFA.unpackEncodedString(DFA90_acceptS);
+    static final short[] DFA90_special = DFA.unpackEncodedString(DFA90_specialS);
+    static final short[][] DFA90_transition;
+
+    static {
+        int numStates = DFA90_transitionS.length;
+        DFA90_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA90_transition[i] = DFA.unpackEncodedString(DFA90_transitionS[i]);
+        }
+    }
+
+    class DFA90 extends DFA {
+
+        public DFA90(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 90;
+            this.eot = DFA90_eot;
+            this.eof = DFA90_eof;
+            this.min = DFA90_min;
+            this.max = DFA90_max;
+            this.accept = DFA90_accept;
+            this.special = DFA90_special;
+            this.transition = DFA90_transition;
+        }
+        public String getDescription() {
+            return "565:4: ( Identifier '=' )?";
+        }
+    }
+    static final String DFA91_eotS =
+        "\27\uffff";
+    static final String DFA91_eofS =
+        "\27\uffff";
+    static final String DFA91_minS =
+        "\1\4\26\uffff";
+    static final String DFA91_maxS =
+        "\1\162\26\uffff";
+    static final String DFA91_acceptS =
+        "\1\uffff\1\1\23\uffff\1\2\1\3";
+    static final String DFA91_specialS =
+        "\27\uffff}>";
+    static final String[] DFA91_transitionS = {
+            "\1\1\1\uffff\6\1\25\uffff\1\1\3\uffff\1\26\2\uffff\1\1\16\uffff"+
+            "\10\1\1\uffff\2\1\2\uffff\3\1\1\25\41\uffff\2\1\2\uffff\6\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA91_eot = DFA.unpackEncodedString(DFA91_eotS);
+    static final short[] DFA91_eof = DFA.unpackEncodedString(DFA91_eofS);
+    static final char[] DFA91_min = DFA.unpackEncodedStringToUnsignedChars(DFA91_minS);
+    static final char[] DFA91_max = DFA.unpackEncodedStringToUnsignedChars(DFA91_maxS);
+    static final short[] DFA91_accept = DFA.unpackEncodedString(DFA91_acceptS);
+    static final short[] DFA91_special = DFA.unpackEncodedString(DFA91_specialS);
+    static final short[][] DFA91_transition;
+
+    static {
+        int numStates = DFA91_transitionS.length;
+        DFA91_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA91_transition[i] = DFA.unpackEncodedString(DFA91_transitionS[i]);
+        }
+    }
+
+    class DFA91 extends DFA {
+
+        public DFA91(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 91;
+            this.eot = DFA91_eot;
+            this.eof = DFA91_eof;
+            this.min = DFA91_min;
+            this.max = DFA91_max;
+            this.accept = DFA91_accept;
+            this.special = DFA91_special;
+            this.transition = DFA91_transition;
+        }
+        public String getDescription() {
+            return "568:1: elementValue : ( conditionalExpression | annotation | elementValueArrayInitializer );";
+        }
+    }
+    static final String DFA93_eotS =
+        "\30\uffff";
+    static final String DFA93_eofS =
+        "\30\uffff";
+    static final String DFA93_minS =
+        "\1\4\27\uffff";
+    static final String DFA93_maxS =
+        "\1\162\27\uffff";
+    static final String DFA93_acceptS =
+        "\1\uffff\1\1\25\uffff\1\2";
+    static final String DFA93_specialS =
+        "\30\uffff}>";
+    static final String[] DFA93_transitionS = {
+            "\1\1\1\uffff\6\1\25\uffff\1\1\3\uffff\1\1\1\27\1\uffff\1\1\16"+
+            "\uffff\10\1\1\uffff\2\1\2\uffff\4\1\41\uffff\2\1\2\uffff\6\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA93_eot = DFA.unpackEncodedString(DFA93_eotS);
+    static final short[] DFA93_eof = DFA.unpackEncodedString(DFA93_eofS);
+    static final char[] DFA93_min = DFA.unpackEncodedStringToUnsignedChars(DFA93_minS);
+    static final char[] DFA93_max = DFA.unpackEncodedStringToUnsignedChars(DFA93_maxS);
+    static final short[] DFA93_accept = DFA.unpackEncodedString(DFA93_acceptS);
+    static final short[] DFA93_special = DFA.unpackEncodedString(DFA93_specialS);
+    static final short[][] DFA93_transition;
+
+    static {
+        int numStates = DFA93_transitionS.length;
+        DFA93_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA93_transition[i] = DFA.unpackEncodedString(DFA93_transitionS[i]);
+        }
+    }
+
+    class DFA93 extends DFA {
+
+        public DFA93(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 93;
+            this.eot = DFA93_eot;
+            this.eof = DFA93_eof;
+            this.min = DFA93_min;
+            this.max = DFA93_max;
+            this.accept = DFA93_accept;
+            this.special = DFA93_special;
+            this.transition = DFA93_transition;
+        }
+        public String getDescription() {
+            return "575:8: ( elementValue ( ',' elementValue )* )?";
+        }
+    }
+    static final String DFA94_eotS =
+        "\23\uffff";
+    static final String DFA94_eofS =
+        "\23\uffff";
+    static final String DFA94_minS =
+        "\1\4\22\uffff";
+    static final String DFA94_maxS =
+        "\1\107\22\uffff";
+    static final String DFA94_acceptS =
+        "\1\uffff\1\1\20\uffff\1\2";
+    static final String DFA94_specialS =
+        "\23\uffff}>";
+    static final String[] DFA94_transitionS = {
+            "\2\1\25\uffff\1\1\2\uffff\1\1\7\uffff\1\22\1\1\5\uffff\22\1"+
+            "\10\uffff\1\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA94_eot = DFA.unpackEncodedString(DFA94_eotS);
+    static final short[] DFA94_eof = DFA.unpackEncodedString(DFA94_eofS);
+    static final char[] DFA94_min = DFA.unpackEncodedStringToUnsignedChars(DFA94_minS);
+    static final char[] DFA94_max = DFA.unpackEncodedStringToUnsignedChars(DFA94_maxS);
+    static final short[] DFA94_accept = DFA.unpackEncodedString(DFA94_acceptS);
+    static final short[] DFA94_special = DFA.unpackEncodedString(DFA94_specialS);
+    static final short[][] DFA94_transition;
+
+    static {
+        int numStates = DFA94_transitionS.length;
+        DFA94_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA94_transition[i] = DFA.unpackEncodedString(DFA94_transitionS[i]);
+        }
+    }
+
+    class DFA94 extends DFA {
+
+        public DFA94(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 94;
+            this.eot = DFA94_eot;
+            this.eof = DFA94_eof;
+            this.min = DFA94_min;
+            this.max = DFA94_max;
+            this.accept = DFA94_accept;
+            this.special = DFA94_special;
+            this.transition = DFA94_transition;
+        }
+        public String getDescription() {
+            return "583:8: ( annotationTypeElementDeclarations )?";
+        }
+    }
+    static final String DFA95_eotS =
+        "\24\uffff";
+    static final String DFA95_eofS =
+        "\1\1\23\uffff";
+    static final String DFA95_minS =
+        "\1\4\23\uffff";
+    static final String DFA95_maxS =
+        "\1\107\23\uffff";
+    static final String DFA95_acceptS =
+        "\1\uffff\1\2\1\uffff\1\1\20\uffff";
+    static final String DFA95_specialS =
+        "\24\uffff}>";
+    static final String[] DFA95_transitionS = {
+            "\2\3\25\uffff\1\3\2\uffff\1\3\7\uffff\1\1\1\3\5\uffff\22\3\10"+
+            "\uffff\1\3",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA95_eot = DFA.unpackEncodedString(DFA95_eotS);
+    static final short[] DFA95_eof = DFA.unpackEncodedString(DFA95_eofS);
+    static final char[] DFA95_min = DFA.unpackEncodedStringToUnsignedChars(DFA95_minS);
+    static final char[] DFA95_max = DFA.unpackEncodedStringToUnsignedChars(DFA95_maxS);
+    static final short[] DFA95_accept = DFA.unpackEncodedString(DFA95_acceptS);
+    static final short[] DFA95_special = DFA.unpackEncodedString(DFA95_specialS);
+    static final short[][] DFA95_transition;
+
+    static {
+        int numStates = DFA95_transitionS.length;
+        DFA95_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA95_transition[i] = DFA.unpackEncodedString(DFA95_transitionS[i]);
+        }
+    }
+
+    class DFA95 extends DFA {
+
+        public DFA95(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 95;
+            this.eot = DFA95_eot;
+            this.eof = DFA95_eof;
+            this.min = DFA95_min;
+            this.max = DFA95_max;
+            this.accept = DFA95_accept;
+            this.special = DFA95_special;
+            this.transition = DFA95_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 587:39: ( annotationTypeElementDeclaration )*";
+        }
+    }
+    static final String DFA96_eotS =
+        "\24\uffff";
+    static final String DFA96_eofS =
+        "\24\uffff";
+    static final String DFA96_minS =
+        "\1\4\5\uffff\1\4\15\uffff";
+    static final String DFA96_maxS =
+        "\1\107\5\uffff\1\47\15\uffff";
+    static final String DFA96_acceptS =
+        "\1\uffff\1\2\5\uffff\1\1\14\uffff";
+    static final String DFA96_specialS =
+        "\24\uffff}>";
+    static final String[] DFA96_transitionS = {
+            "\2\1\25\uffff\1\7\2\uffff\1\1\10\uffff\1\1\5\uffff\12\7\10\1"+
+            "\10\uffff\1\6",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\7\42\uffff\1\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA96_eot = DFA.unpackEncodedString(DFA96_eotS);
+    static final short[] DFA96_eof = DFA.unpackEncodedString(DFA96_eofS);
+    static final char[] DFA96_min = DFA.unpackEncodedStringToUnsignedChars(DFA96_minS);
+    static final char[] DFA96_max = DFA.unpackEncodedStringToUnsignedChars(DFA96_maxS);
+    static final short[] DFA96_accept = DFA.unpackEncodedString(DFA96_acceptS);
+    static final short[] DFA96_special = DFA.unpackEncodedString(DFA96_specialS);
+    static final short[][] DFA96_transition;
+
+    static {
+        int numStates = DFA96_transitionS.length;
+        DFA96_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA96_transition[i] = DFA.unpackEncodedString(DFA96_transitionS[i]);
+        }
+    }
+
+    class DFA96 extends DFA {
+
+        public DFA96(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 96;
+            this.eot = DFA96_eot;
+            this.eof = DFA96_eof;
+            this.min = DFA96_min;
+            this.max = DFA96_max;
+            this.accept = DFA96_accept;
+            this.special = DFA96_special;
+            this.transition = DFA96_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 591:4: ( modifier )*";
+        }
+    }
+    static final String DFA101_eotS =
+        "\13\uffff";
+    static final String DFA101_eofS =
+        "\13\uffff";
+    static final String DFA101_minS =
+        "\1\4\3\uffff\1\4\1\uffff\1\47\2\0\2\uffff";
+    static final String DFA101_maxS =
+        "\1\107\3\uffff\1\4\1\uffff\1\47\2\0\2\uffff";
+    static final String DFA101_acceptS =
+        "\1\uffff\1\1\1\uffff\1\2\1\uffff\1\3\3\uffff\1\4\1\5";
+    static final String DFA101_specialS =
+        "\7\uffff\1\0\1\1\2\uffff}>";
+    static final String[] DFA101_transitionS = {
+            "\1\1\1\4\30\uffff\1\3\10\uffff\1\5\17\uffff\10\1\10\uffff\1"+
+            "\6",
+            "",
+            "",
+            "",
+            "\1\7",
+            "",
+            "\1\10",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            ""
+    };
+
+    static final short[] DFA101_eot = DFA.unpackEncodedString(DFA101_eotS);
+    static final short[] DFA101_eof = DFA.unpackEncodedString(DFA101_eofS);
+    static final char[] DFA101_min = DFA.unpackEncodedStringToUnsignedChars(DFA101_minS);
+    static final char[] DFA101_max = DFA.unpackEncodedStringToUnsignedChars(DFA101_maxS);
+    static final short[] DFA101_accept = DFA.unpackEncodedString(DFA101_acceptS);
+    static final short[] DFA101_special = DFA.unpackEncodedString(DFA101_specialS);
+    static final short[][] DFA101_transition;
+
+    static {
+        int numStates = DFA101_transitionS.length;
+        DFA101_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA101_transition[i] = DFA.unpackEncodedString(DFA101_transitionS[i]);
+        }
+    }
+
+    class DFA101 extends DFA {
+
+        public DFA101(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 101;
+            this.eot = DFA101_eot;
+            this.eof = DFA101_eof;
+            this.min = DFA101_min;
+            this.max = DFA101_max;
+            this.accept = DFA101_accept;
+            this.special = DFA101_special;
+            this.transition = DFA101_transition;
+        }
+        public String getDescription() {
+            return "594:1: annotationTypeElementRest : ( type annotationMethodOrConstantRest ';' | classDeclaration ( ';' )? | interfaceDeclaration ( ';' )? | enumDeclaration ( ';' )? | annotationTypeDeclaration ( ';' )? );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA101_7 = input.LA(1);
+
+                         
+                        int index101_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred135_Java()) ) {s = 3;}
+
+                        else if ( (synpred139_Java()) ) {s = 9;}
+
+                         
+                        input.seek(index101_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA101_8 = input.LA(1);
+
+                         
+                        int index101_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred137_Java()) ) {s = 5;}
+
+                        else if ( (true) ) {s = 10;}
+
+                         
+                        input.seek(index101_8);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 101, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA97_eotS =
+        "\25\uffff";
+    static final String DFA97_eofS =
+        "\1\2\24\uffff";
+    static final String DFA97_minS =
+        "\1\4\24\uffff";
+    static final String DFA97_maxS =
+        "\1\107\24\uffff";
+    static final String DFA97_acceptS =
+        "\1\uffff\1\1\1\2\22\uffff";
+    static final String DFA97_specialS =
+        "\25\uffff}>";
+    static final String[] DFA97_transitionS = {
+            "\2\2\23\uffff\1\1\1\uffff\1\2\2\uffff\1\2\7\uffff\2\2\5\uffff"+
+            "\22\2\10\uffff\1\2",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA97_eot = DFA.unpackEncodedString(DFA97_eotS);
+    static final short[] DFA97_eof = DFA.unpackEncodedString(DFA97_eofS);
+    static final char[] DFA97_min = DFA.unpackEncodedStringToUnsignedChars(DFA97_minS);
+    static final char[] DFA97_max = DFA.unpackEncodedStringToUnsignedChars(DFA97_maxS);
+    static final short[] DFA97_accept = DFA.unpackEncodedString(DFA97_acceptS);
+    static final short[] DFA97_special = DFA.unpackEncodedString(DFA97_specialS);
+    static final short[][] DFA97_transition;
+
+    static {
+        int numStates = DFA97_transitionS.length;
+        DFA97_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA97_transition[i] = DFA.unpackEncodedString(DFA97_transitionS[i]);
+        }
+    }
+
+    class DFA97 extends DFA {
+
+        public DFA97(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 97;
+            this.eot = DFA97_eot;
+            this.eof = DFA97_eof;
+            this.min = DFA97_min;
+            this.max = DFA97_max;
+            this.accept = DFA97_accept;
+            this.special = DFA97_special;
+            this.transition = DFA97_transition;
+        }
+        public String getDescription() {
+            return "596:23: ( ';' )?";
+        }
+    }
+    static final String DFA98_eotS =
+        "\25\uffff";
+    static final String DFA98_eofS =
+        "\1\2\24\uffff";
+    static final String DFA98_minS =
+        "\1\4\24\uffff";
+    static final String DFA98_maxS =
+        "\1\107\24\uffff";
+    static final String DFA98_acceptS =
+        "\1\uffff\1\1\1\2\22\uffff";
+    static final String DFA98_specialS =
+        "\25\uffff}>";
+    static final String[] DFA98_transitionS = {
+            "\2\2\23\uffff\1\1\1\uffff\1\2\2\uffff\1\2\7\uffff\2\2\5\uffff"+
+            "\22\2\10\uffff\1\2",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA98_eot = DFA.unpackEncodedString(DFA98_eotS);
+    static final short[] DFA98_eof = DFA.unpackEncodedString(DFA98_eofS);
+    static final char[] DFA98_min = DFA.unpackEncodedStringToUnsignedChars(DFA98_minS);
+    static final char[] DFA98_max = DFA.unpackEncodedStringToUnsignedChars(DFA98_maxS);
+    static final short[] DFA98_accept = DFA.unpackEncodedString(DFA98_acceptS);
+    static final short[] DFA98_special = DFA.unpackEncodedString(DFA98_specialS);
+    static final short[][] DFA98_transition;
+
+    static {
+        int numStates = DFA98_transitionS.length;
+        DFA98_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA98_transition[i] = DFA.unpackEncodedString(DFA98_transitionS[i]);
+        }
+    }
+
+    class DFA98 extends DFA {
+
+        public DFA98(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 98;
+            this.eot = DFA98_eot;
+            this.eof = DFA98_eof;
+            this.min = DFA98_min;
+            this.max = DFA98_max;
+            this.accept = DFA98_accept;
+            this.special = DFA98_special;
+            this.transition = DFA98_transition;
+        }
+        public String getDescription() {
+            return "597:27: ( ';' )?";
+        }
+    }
+    static final String DFA99_eotS =
+        "\25\uffff";
+    static final String DFA99_eofS =
+        "\1\2\24\uffff";
+    static final String DFA99_minS =
+        "\1\4\24\uffff";
+    static final String DFA99_maxS =
+        "\1\107\24\uffff";
+    static final String DFA99_acceptS =
+        "\1\uffff\1\1\1\2\22\uffff";
+    static final String DFA99_specialS =
+        "\25\uffff}>";
+    static final String[] DFA99_transitionS = {
+            "\2\2\23\uffff\1\1\1\uffff\1\2\2\uffff\1\2\7\uffff\2\2\5\uffff"+
+            "\22\2\10\uffff\1\2",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA99_eot = DFA.unpackEncodedString(DFA99_eotS);
+    static final short[] DFA99_eof = DFA.unpackEncodedString(DFA99_eofS);
+    static final char[] DFA99_min = DFA.unpackEncodedStringToUnsignedChars(DFA99_minS);
+    static final char[] DFA99_max = DFA.unpackEncodedStringToUnsignedChars(DFA99_maxS);
+    static final short[] DFA99_accept = DFA.unpackEncodedString(DFA99_acceptS);
+    static final short[] DFA99_special = DFA.unpackEncodedString(DFA99_specialS);
+    static final short[][] DFA99_transition;
+
+    static {
+        int numStates = DFA99_transitionS.length;
+        DFA99_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA99_transition[i] = DFA.unpackEncodedString(DFA99_transitionS[i]);
+        }
+    }
+
+    class DFA99 extends DFA {
+
+        public DFA99(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 99;
+            this.eot = DFA99_eot;
+            this.eof = DFA99_eof;
+            this.min = DFA99_min;
+            this.max = DFA99_max;
+            this.accept = DFA99_accept;
+            this.special = DFA99_special;
+            this.transition = DFA99_transition;
+        }
+        public String getDescription() {
+            return "598:22: ( ';' )?";
+        }
+    }
+    static final String DFA100_eotS =
+        "\25\uffff";
+    static final String DFA100_eofS =
+        "\1\2\24\uffff";
+    static final String DFA100_minS =
+        "\1\4\24\uffff";
+    static final String DFA100_maxS =
+        "\1\107\24\uffff";
+    static final String DFA100_acceptS =
+        "\1\uffff\1\1\1\2\22\uffff";
+    static final String DFA100_specialS =
+        "\25\uffff}>";
+    static final String[] DFA100_transitionS = {
+            "\2\2\23\uffff\1\1\1\uffff\1\2\2\uffff\1\2\7\uffff\2\2\5\uffff"+
+            "\22\2\10\uffff\1\2",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA100_eot = DFA.unpackEncodedString(DFA100_eotS);
+    static final short[] DFA100_eof = DFA.unpackEncodedString(DFA100_eofS);
+    static final char[] DFA100_min = DFA.unpackEncodedStringToUnsignedChars(DFA100_minS);
+    static final char[] DFA100_max = DFA.unpackEncodedStringToUnsignedChars(DFA100_maxS);
+    static final short[] DFA100_accept = DFA.unpackEncodedString(DFA100_acceptS);
+    static final short[] DFA100_special = DFA.unpackEncodedString(DFA100_specialS);
+    static final short[][] DFA100_transition;
+
+    static {
+        int numStates = DFA100_transitionS.length;
+        DFA100_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA100_transition[i] = DFA.unpackEncodedString(DFA100_transitionS[i]);
+        }
+    }
+
+    class DFA100 extends DFA {
+
+        public DFA100(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 100;
+            this.eot = DFA100_eot;
+            this.eof = DFA100_eof;
+            this.min = DFA100_min;
+            this.max = DFA100_max;
+            this.accept = DFA100_accept;
+            this.special = DFA100_special;
+            this.transition = DFA100_transition;
+        }
+        public String getDescription() {
+            return "599:32: ( ';' )?";
+        }
+    }
+    static final String DFA104_eotS =
+        "\63\uffff";
+    static final String DFA104_eofS =
+        "\63\uffff";
+    static final String DFA104_minS =
+        "\1\4\62\uffff";
+    static final String DFA104_maxS =
+        "\1\162\62\uffff";
+    static final String DFA104_acceptS =
+        "\1\uffff\1\2\1\1\60\uffff";
+    static final String DFA104_specialS =
+        "\63\uffff}>";
+    static final String[] DFA104_transitionS = {
+            "\10\2\15\uffff\1\2\1\uffff\1\2\2\uffff\1\2\2\uffff\1\2\3\uffff"+
+            "\1\2\1\1\2\2\4\uffff\22\2\1\uffff\2\2\2\uffff\4\2\1\uffff\1"+
+            "\2\1\uffff\1\2\1\uffff\4\2\1\uffff\6\2\21\uffff\2\2\2\uffff"+
+            "\6\2",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA104_eot = DFA.unpackEncodedString(DFA104_eotS);
+    static final short[] DFA104_eof = DFA.unpackEncodedString(DFA104_eofS);
+    static final char[] DFA104_min = DFA.unpackEncodedStringToUnsignedChars(DFA104_minS);
+    static final char[] DFA104_max = DFA.unpackEncodedStringToUnsignedChars(DFA104_maxS);
+    static final short[] DFA104_accept = DFA.unpackEncodedString(DFA104_acceptS);
+    static final short[] DFA104_special = DFA.unpackEncodedString(DFA104_specialS);
+    static final short[][] DFA104_transition;
+
+    static {
+        int numStates = DFA104_transitionS.length;
+        DFA104_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA104_transition[i] = DFA.unpackEncodedString(DFA104_transitionS[i]);
+        }
+    }
+
+    class DFA104 extends DFA {
+
+        public DFA104(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 104;
+            this.eot = DFA104_eot;
+            this.eof = DFA104_eof;
+            this.min = DFA104_min;
+            this.max = DFA104_max;
+            this.accept = DFA104_accept;
+            this.special = DFA104_special;
+            this.transition = DFA104_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 628:8: ( blockStatement )*";
+        }
+    }
+    static final String DFA105_eotS =
+        "\164\uffff";
+    static final String DFA105_eofS =
+        "\164\uffff";
+    static final String DFA105_minS =
+        "\5\4\6\uffff\1\5\50\uffff\2\0\16\uffff\1\0\1\uffff\2\0\4\uffff\1"+
+        "\0\24\uffff\1\0\22\uffff";
+    static final String DFA105_maxS =
+        "\1\162\1\107\1\47\1\156\1\51\6\uffff\1\107\50\uffff\2\0\16\uffff"+
+        "\1\0\1\uffff\2\0\4\uffff\1\0\24\uffff\1\0\22\uffff";
+    static final String DFA105_acceptS =
+        "\5\uffff\1\2\14\uffff\1\3\37\uffff\1\1\101\uffff";
+    static final String DFA105_specialS =
+        "\64\uffff\1\0\1\1\16\uffff\1\2\1\uffff\1\3\1\4\4\uffff\1\5\24\uffff"+
+        "\1\6\22\uffff}>";
+    static final String[] DFA105_transitionS = {
+            "\1\3\1\5\6\22\15\uffff\1\22\1\uffff\1\5\2\uffff\1\5\2\uffff"+
+            "\1\22\3\uffff\1\22\1\uffff\1\5\1\22\4\uffff\4\5\1\1\1\5\1\13"+
+            "\3\5\10\4\1\uffff\2\22\2\uffff\3\22\1\2\1\uffff\1\22\1\uffff"+
+            "\1\22\1\uffff\4\22\1\uffff\6\22\21\uffff\2\22\2\uffff\6\22",
+            "\1\62\1\5\25\uffff\1\5\2\uffff\1\5\10\uffff\1\5\5\uffff\4\5"+
+            "\1\64\5\5\10\62\10\uffff\1\65",
+            "\1\104\42\uffff\1\5",
+            "\1\62\24\uffff\1\22\2\uffff\1\106\1\22\3\uffff\1\114\1\uffff"+
+            "\2\22\4\uffff\1\107\2\uffff\1\22\22\uffff\1\22\1\uffff\1\22"+
+            "\10\uffff\1\22\17\uffff\25\22",
+            "\1\62\27\uffff\1\22\14\uffff\1\141",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\5\25\uffff\1\5\2\uffff\1\5\10\uffff\1\5\5\uffff\12\5\12\uffff"+
+            "\1\22\5\uffff\1\5",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA105_eot = DFA.unpackEncodedString(DFA105_eotS);
+    static final short[] DFA105_eof = DFA.unpackEncodedString(DFA105_eofS);
+    static final char[] DFA105_min = DFA.unpackEncodedStringToUnsignedChars(DFA105_minS);
+    static final char[] DFA105_max = DFA.unpackEncodedStringToUnsignedChars(DFA105_maxS);
+    static final short[] DFA105_accept = DFA.unpackEncodedString(DFA105_acceptS);
+    static final short[] DFA105_special = DFA.unpackEncodedString(DFA105_specialS);
+    static final short[][] DFA105_transition;
+
+    static {
+        int numStates = DFA105_transitionS.length;
+        DFA105_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA105_transition[i] = DFA.unpackEncodedString(DFA105_transitionS[i]);
+        }
+    }
+
+    class DFA105 extends DFA {
+
+        public DFA105(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 105;
+            this.eot = DFA105_eot;
+            this.eof = DFA105_eof;
+            this.min = DFA105_min;
+            this.max = DFA105_max;
+            this.accept = DFA105_accept;
+            this.special = DFA105_special;
+            this.transition = DFA105_transition;
+        }
+        public String getDescription() {
+            return "631:1: blockStatement : ( localVariableDeclaration | classOrInterfaceDeclaration | statement );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA105_52 = input.LA(1);
+
+                         
+                        int index105_52 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred144_Java()) ) {s = 50;}
+
+                        else if ( (synpred145_Java()) ) {s = 5;}
+
+                         
+                        input.seek(index105_52);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA105_53 = input.LA(1);
+
+                         
+                        int index105_53 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred144_Java()) ) {s = 50;}
+
+                        else if ( (synpred145_Java()) ) {s = 5;}
+
+                         
+                        input.seek(index105_53);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA105_68 = input.LA(1);
+
+                         
+                        int index105_68 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred144_Java()) ) {s = 50;}
+
+                        else if ( (synpred145_Java()) ) {s = 5;}
+
+                         
+                        input.seek(index105_68);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA105_70 = input.LA(1);
+
+                         
+                        int index105_70 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred144_Java()) ) {s = 50;}
+
+                        else if ( (true) ) {s = 18;}
+
+                         
+                        input.seek(index105_70);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA105_71 = input.LA(1);
+
+                         
+                        int index105_71 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred144_Java()) ) {s = 50;}
+
+                        else if ( (true) ) {s = 18;}
+
+                         
+                        input.seek(index105_71);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA105_76 = input.LA(1);
+
+                         
+                        int index105_76 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred144_Java()) ) {s = 50;}
+
+                        else if ( (true) ) {s = 18;}
+
+                         
+                        input.seek(index105_76);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA105_97 = input.LA(1);
+
+                         
+                        int index105_97 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred144_Java()) ) {s = 50;}
+
+                        else if ( (true) ) {s = 18;}
+
+                         
+                        input.seek(index105_97);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 105, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA113_eotS =
+        "\77\uffff";
+    static final String DFA113_eofS =
+        "\77\uffff";
+    static final String DFA113_minS =
+        "\1\4\40\uffff\1\31\35\uffff";
+    static final String DFA113_maxS =
+        "\1\162\40\uffff\1\156\35\uffff";
+    static final String DFA113_acceptS =
+        "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1"+
+        "\15\1\16\1\17\1\20\23\uffff\1\21\32\uffff";
+    static final String DFA113_specialS =
+        "\77\uffff}>";
+    static final String[] DFA113_transitionS = {
+            "\1\41\1\uffff\6\20\15\uffff\1\17\7\uffff\1\20\3\uffff\1\1\2"+
+            "\uffff\1\20\12\uffff\1\11\3\uffff\10\20\1\uffff\2\20\2\uffff"+
+            "\3\20\2\uffff\1\2\1\uffff\1\3\1\uffff\1\4\1\5\1\6\1\7\1\uffff"+
+            "\1\10\1\12\1\13\1\14\1\15\1\16\21\uffff\2\20\2\uffff\6\20",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\20\2\uffff\2\20\3\uffff\1\20\1\uffff\2\20\4\uffff\1\20\2"+
+            "\uffff\1\20\22\uffff\1\20\1\uffff\1\20\10\uffff\1\44\17\uffff"+
+            "\25\20",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA113_eot = DFA.unpackEncodedString(DFA113_eotS);
+    static final short[] DFA113_eof = DFA.unpackEncodedString(DFA113_eofS);
+    static final char[] DFA113_min = DFA.unpackEncodedStringToUnsignedChars(DFA113_minS);
+    static final char[] DFA113_max = DFA.unpackEncodedStringToUnsignedChars(DFA113_maxS);
+    static final short[] DFA113_accept = DFA.unpackEncodedString(DFA113_acceptS);
+    static final short[] DFA113_special = DFA.unpackEncodedString(DFA113_specialS);
+    static final short[][] DFA113_transition;
+
+    static {
+        int numStates = DFA113_transitionS.length;
+        DFA113_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA113_transition[i] = DFA.unpackEncodedString(DFA113_transitionS[i]);
+        }
+    }
+
+    class DFA113 extends DFA {
+
+        public DFA113(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 113;
+            this.eot = DFA113_eot;
+            this.eof = DFA113_eof;
+            this.min = DFA113_min;
+            this.max = DFA113_max;
+            this.accept = DFA113_accept;
+            this.special = DFA113_special;
+            this.transition = DFA113_transition;
+        }
+        public String getDescription() {
+            return "663:1: statement : ( block | 'assert' expression ( ':' expression )? ';' | 'if' parExpression statement ( options {k=1; } : 'else' statement )? | 'for' '(' forControl ')' statement | 'while' parExpression statement | 'do' statement 'while' parExpression ';' | 'try' block ( catches 'finally' block | catches | 'finally' block ) | 'switch' parExpression '{' switchBlockStatementGroups '}' | 'synchronized' parExpression block | 'return' ( expression )? ';' | 'throw' expression ';' | 'break' ( Identifier )? ';' | 'continue' ( Identifier )? ';' | modifyStatement | ';' | statementExpression ';' | Identifier ':' statement );";
+        }
+    }
+    static final String DFA110_eotS =
+        "\26\uffff";
+    static final String DFA110_eofS =
+        "\26\uffff";
+    static final String DFA110_minS =
+        "\1\4\25\uffff";
+    static final String DFA110_maxS =
+        "\1\162\25\uffff";
+    static final String DFA110_acceptS =
+        "\1\uffff\1\1\23\uffff\1\2";
+    static final String DFA110_specialS =
+        "\26\uffff}>";
+    static final String[] DFA110_transitionS = {
+            "\1\1\1\uffff\6\1\15\uffff\1\25\7\uffff\1\1\6\uffff\1\1\16\uffff"+
+            "\10\1\1\uffff\2\1\2\uffff\3\1\42\uffff\2\1\2\uffff\6\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA110_eot = DFA.unpackEncodedString(DFA110_eotS);
+    static final short[] DFA110_eof = DFA.unpackEncodedString(DFA110_eofS);
+    static final char[] DFA110_min = DFA.unpackEncodedStringToUnsignedChars(DFA110_minS);
+    static final char[] DFA110_max = DFA.unpackEncodedStringToUnsignedChars(DFA110_maxS);
+    static final short[] DFA110_accept = DFA.unpackEncodedString(DFA110_acceptS);
+    static final short[] DFA110_special = DFA.unpackEncodedString(DFA110_specialS);
+    static final short[][] DFA110_transition;
+
+    static {
+        int numStates = DFA110_transitionS.length;
+        DFA110_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA110_transition[i] = DFA.unpackEncodedString(DFA110_transitionS[i]);
+        }
+    }
+
+    class DFA110 extends DFA {
+
+        public DFA110(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 110;
+            this.eot = DFA110_eot;
+            this.eof = DFA110_eof;
+            this.min = DFA110_min;
+            this.max = DFA110_max;
+            this.accept = DFA110_accept;
+            this.special = DFA110_special;
+            this.transition = DFA110_transition;
+        }
+        public String getDescription() {
+            return "677:16: ( expression )?";
+        }
+    }
+    static final String DFA115_eotS =
+        "\26\uffff";
+    static final String DFA115_eofS =
+        "\26\uffff";
+    static final String DFA115_minS =
+        "\1\4\25\uffff";
+    static final String DFA115_maxS =
+        "\1\162\25\uffff";
+    static final String DFA115_acceptS =
+        "\1\uffff\1\1\23\uffff\1\2";
+    static final String DFA115_specialS =
+        "\26\uffff}>";
+    static final String[] DFA115_transitionS = {
+            "\1\1\1\uffff\6\1\25\uffff\1\1\4\uffff\1\25\1\uffff\1\1\16\uffff"+
+            "\10\1\1\uffff\2\1\2\uffff\3\1\42\uffff\2\1\2\uffff\6\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA115_eot = DFA.unpackEncodedString(DFA115_eotS);
+    static final short[] DFA115_eof = DFA.unpackEncodedString(DFA115_eofS);
+    static final char[] DFA115_min = DFA.unpackEncodedStringToUnsignedChars(DFA115_minS);
+    static final char[] DFA115_max = DFA.unpackEncodedStringToUnsignedChars(DFA115_maxS);
+    static final short[] DFA115_accept = DFA.unpackEncodedString(DFA115_acceptS);
+    static final short[] DFA115_special = DFA.unpackEncodedString(DFA115_specialS);
+    static final short[][] DFA115_transition;
+
+    static {
+        int numStates = DFA115_transitionS.length;
+        DFA115_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA115_transition[i] = DFA.unpackEncodedString(DFA115_transitionS[i]);
+        }
+    }
+
+    class DFA115 extends DFA {
+
+        public DFA115(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 115;
+            this.eot = DFA115_eot;
+            this.eof = DFA115_eof;
+            this.min = DFA115_min;
+            this.max = DFA115_max;
+            this.accept = DFA115_accept;
+            this.special = DFA115_special;
+            this.transition = DFA115_transition;
+        }
+        public String getDescription() {
+            return "699:6: (e= expression ( ',' e= expression )* )?";
+        }
+    }
+    static final String DFA116_eotS =
+        "\71\uffff";
+    static final String DFA116_eofS =
+        "\1\1\70\uffff";
+    static final String DFA116_minS =
+        "\1\4\70\uffff";
+    static final String DFA116_maxS =
+        "\1\162\70\uffff";
+    static final String DFA116_acceptS =
+        "\1\uffff\1\2\66\uffff\1\1";
+    static final String DFA116_specialS =
+        "\71\uffff}>";
+    static final String[] DFA116_transitionS = {
+            "\10\1\15\uffff\1\1\1\uffff\1\1\2\uffff\1\1\2\uffff\1\1\3\uffff"+
+            "\4\1\4\uffff\22\1\1\uffff\2\1\2\uffff\6\1\1\uffff\15\1\1\70"+
+            "\1\1\17\uffff\2\1\2\uffff\6\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA116_eot = DFA.unpackEncodedString(DFA116_eotS);
+    static final short[] DFA116_eof = DFA.unpackEncodedString(DFA116_eofS);
+    static final char[] DFA116_min = DFA.unpackEncodedStringToUnsignedChars(DFA116_minS);
+    static final char[] DFA116_max = DFA.unpackEncodedStringToUnsignedChars(DFA116_maxS);
+    static final short[] DFA116_accept = DFA.unpackEncodedString(DFA116_acceptS);
+    static final short[] DFA116_special = DFA.unpackEncodedString(DFA116_specialS);
+    static final short[][] DFA116_transition;
+
+    static {
+        int numStates = DFA116_transitionS.length;
+        DFA116_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA116_transition[i] = DFA.unpackEncodedString(DFA116_transitionS[i]);
+        }
+    }
+
+    class DFA116 extends DFA {
+
+        public DFA116(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 116;
+            this.eot = DFA116_eot;
+            this.eof = DFA116_eof;
+            this.min = DFA116_min;
+            this.max = DFA116_max;
+            this.accept = DFA116_accept;
+            this.special = DFA116_special;
+            this.transition = DFA116_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 709:16: ( catchClause )*";
+        }
+    }
+    static final String DFA119_eotS =
+        "\66\uffff";
+    static final String DFA119_eofS =
+        "\1\1\65\uffff";
+    static final String DFA119_minS =
+        "\1\4\65\uffff";
+    static final String DFA119_maxS =
+        "\1\162\65\uffff";
+    static final String DFA119_acceptS =
+        "\1\uffff\1\2\3\uffff\1\1\60\uffff";
+    static final String DFA119_specialS =
+        "\66\uffff}>";
+    static final String[] DFA119_transitionS = {
+            "\10\5\15\uffff\1\5\1\uffff\1\5\2\uffff\1\5\2\uffff\1\5\3\uffff"+
+            "\1\5\1\1\2\5\4\uffff\22\5\1\uffff\2\5\2\uffff\4\5\1\1\1\5\1"+
+            "\uffff\1\5\1\uffff\4\5\1\uffff\6\5\1\uffff\1\1\17\uffff\2\5"+
+            "\2\uffff\6\5",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA119_eot = DFA.unpackEncodedString(DFA119_eotS);
+    static final short[] DFA119_eof = DFA.unpackEncodedString(DFA119_eofS);
+    static final char[] DFA119_min = DFA.unpackEncodedStringToUnsignedChars(DFA119_minS);
+    static final char[] DFA119_max = DFA.unpackEncodedStringToUnsignedChars(DFA119_maxS);
+    static final short[] DFA119_accept = DFA.unpackEncodedString(DFA119_acceptS);
+    static final short[] DFA119_special = DFA.unpackEncodedString(DFA119_specialS);
+    static final short[][] DFA119_transition;
+
+    static {
+        int numStates = DFA119_transitionS.length;
+        DFA119_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA119_transition[i] = DFA.unpackEncodedString(DFA119_transitionS[i]);
+        }
+    }
+
+    class DFA119 extends DFA {
+
+        public DFA119(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 119;
+            this.eot = DFA119_eot;
+            this.eof = DFA119_eof;
+            this.min = DFA119_min;
+            this.max = DFA119_max;
+            this.accept = DFA119_accept;
+            this.special = DFA119_special;
+            this.transition = DFA119_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 725:16: ( blockStatement )*";
+        }
+    }
+    static final String DFA120_eotS =
+        "\30\uffff";
+    static final String DFA120_eofS =
+        "\30\uffff";
+    static final String DFA120_minS =
+        "\1\110\1\4\22\uffff\1\0\3\uffff";
+    static final String DFA120_maxS =
+        "\1\131\1\162\22\uffff\1\0\3\uffff";
+    static final String DFA120_acceptS =
+        "\2\uffff\1\3\1\1\23\uffff\1\2";
+    static final String DFA120_specialS =
+        "\24\uffff\1\0\3\uffff}>";
+    static final String[] DFA120_transitionS = {
+            "\1\2\20\uffff\1\1",
+            "\1\24\1\uffff\6\3\25\uffff\1\3\6\uffff\1\3\16\uffff\10\3\1\uffff"+
+            "\2\3\2\uffff\3\3\42\uffff\2\3\2\uffff\6\3",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA120_eot = DFA.unpackEncodedString(DFA120_eotS);
+    static final short[] DFA120_eof = DFA.unpackEncodedString(DFA120_eofS);
+    static final char[] DFA120_min = DFA.unpackEncodedStringToUnsignedChars(DFA120_minS);
+    static final char[] DFA120_max = DFA.unpackEncodedStringToUnsignedChars(DFA120_maxS);
+    static final short[] DFA120_accept = DFA.unpackEncodedString(DFA120_acceptS);
+    static final short[] DFA120_special = DFA.unpackEncodedString(DFA120_specialS);
+    static final short[][] DFA120_transition;
+
+    static {
+        int numStates = DFA120_transitionS.length;
+        DFA120_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA120_transition[i] = DFA.unpackEncodedString(DFA120_transitionS[i]);
+        }
+    }
+
+    class DFA120 extends DFA {
+
+        public DFA120(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 120;
+            this.eot = DFA120_eot;
+            this.eof = DFA120_eof;
+            this.min = DFA120_min;
+            this.max = DFA120_max;
+            this.accept = DFA120_accept;
+            this.special = DFA120_special;
+            this.transition = DFA120_transition;
+        }
+        public String getDescription() {
+            return "728:1: switchLabel : ( 'case' constantExpression ':' | 'case' enumConstantName ':' | 'default' ':' );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA120_20 = input.LA(1);
+
+                         
+                        int index120_20 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred176_Java()) ) {s = 3;}
+
+                        else if ( (synpred177_Java()) ) {s = 23;}
+
+                         
+                        input.seek(index120_20);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 120, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA125_eotS =
+        "\u0089\uffff";
+    static final String DFA125_eofS =
+        "\u0089\uffff";
+    static final String DFA125_minS =
+        "\5\4\23\uffff\7\4\4\uffff\1\4\24\uffff\1\31\1\52\1\31\1\uffff\22"+
+        "\0\5\uffff\1\0\46\uffff\2\0\1\uffff\1\0\5\uffff\1\0\5\uffff";
+    static final String DFA125_maxS =
+        "\1\162\1\107\1\4\1\156\1\51\23\uffff\2\51\1\107\1\4\1\107\2\162"+
+        "\4\uffff\1\162\24\uffff\1\112\1\52\1\112\1\uffff\22\0\5\uffff\1"+
+        "\0\46\uffff\2\0\1\uffff\1\0\5\uffff\1\0\5\uffff";
+    static final String DFA125_acceptS =
+        "\5\uffff\1\2\170\uffff\1\1\12\uffff";
+    static final String DFA125_specialS =
+        "\74\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1"+
+        "\14\1\15\1\16\1\17\1\20\1\21\5\uffff\1\22\46\uffff\1\23\1\24\1\uffff"+
+        "\1\25\5\uffff\1\26\5\uffff}>";
+    static final String[] DFA125_transitionS = {
+            "\1\3\1\uffff\6\5\15\uffff\1\5\7\uffff\1\5\6\uffff\1\5\10\uffff"+
+            "\1\1\5\uffff\10\4\1\uffff\2\5\2\uffff\3\5\1\2\41\uffff\2\5\2"+
+            "\uffff\6\5",
+            "\1\30\54\uffff\1\32\5\uffff\10\31\10\uffff\1\33",
+            "\1\34",
+            "\1\70\24\uffff\1\5\2\uffff\1\35\1\5\3\uffff\1\43\3\5\4\uffff"+
+            "\1\36\2\uffff\1\5\22\uffff\1\5\1\uffff\1\5\30\uffff\25\5",
+            "\1\72\27\uffff\1\5\14\uffff\1\71",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\77\27\uffff\1\75\4\uffff\1\74\7\uffff\1\76",
+            "\1\101\44\uffff\1\100",
+            "\1\102\54\uffff\1\104\5\uffff\10\103\10\uffff\1\105",
+            "\1\106",
+            "\1\111\27\uffff\1\107\24\uffff\1\113\5\uffff\10\112\2\uffff"+
+            "\1\110\5\uffff\1\114",
+            "\1\115\31\uffff\1\5\2\uffff\1\5\36\uffff\1\5\60\uffff\2\5",
+            "\1\5\1\uffff\6\5\25\uffff\1\5\6\uffff\1\5\1\uffff\1\123\14\uffff"+
+            "\10\5\1\uffff\2\5\2\uffff\3\5\42\uffff\2\5\2\uffff\6\5",
+            "",
+            "",
+            "",
+            "",
+            "\1\172\1\uffff\6\5\25\uffff\1\5\6\uffff\1\5\3\uffff\1\5\12\uffff"+
+            "\10\173\1\175\2\5\2\uffff\3\5\42\uffff\2\5\2\uffff\6\5",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\5\10\uffff\1\5\6\uffff\1\5\2\uffff\1\5\35\uffff\1\176",
+            "\1\u0083",
+            "\1\5\10\uffff\1\5\6\uffff\1\5\2\uffff\1\5\35\uffff\1\176",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA125_eot = DFA.unpackEncodedString(DFA125_eotS);
+    static final short[] DFA125_eof = DFA.unpackEncodedString(DFA125_eofS);
+    static final char[] DFA125_min = DFA.unpackEncodedStringToUnsignedChars(DFA125_minS);
+    static final char[] DFA125_max = DFA.unpackEncodedStringToUnsignedChars(DFA125_maxS);
+    static final short[] DFA125_accept = DFA.unpackEncodedString(DFA125_acceptS);
+    static final short[] DFA125_special = DFA.unpackEncodedString(DFA125_specialS);
+    static final short[][] DFA125_transition;
+
+    static {
+        int numStates = DFA125_transitionS.length;
+        DFA125_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA125_transition[i] = DFA.unpackEncodedString(DFA125_transitionS[i]);
+        }
+    }
+
+    class DFA125 extends DFA {
+
+        public DFA125(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 125;
+            this.eot = DFA125_eot;
+            this.eof = DFA125_eof;
+            this.min = DFA125_min;
+            this.max = DFA125_max;
+            this.accept = DFA125_accept;
+            this.special = DFA125_special;
+            this.transition = DFA125_transition;
+        }
+        public String getDescription() {
+            return "738:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA125_60 = input.LA(1);
+
+                         
+                        int index125_60 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred179_Java()) ) {s = 126;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index125_60);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA125_61 = input.LA(1);
+
+                         
+                        int index125_61 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred179_Java()) ) {s = 126;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index125_61);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA125_62 = input.LA(1);
+
+                         
+                        int index125_62 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred179_Java()) ) {s = 126;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index125_62);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA125_63 = input.LA(1);
+
+                         
+                        int index125_63 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred179_Java()) ) {s = 126;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index125_63);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA125_64 = input.LA(1);
+
+                         
+                        int index125_64 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred179_Java()) ) {s = 126;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index125_64);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA125_65 = input.LA(1);
+
+                         
+                        int index125_65 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred179_Java()) ) {s = 126;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index125_65);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA125_66 = input.LA(1);
+
+                         
+                        int index125_66 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred179_Java()) ) {s = 126;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index125_66);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA125_67 = input.LA(1);
+
+                         
+                        int index125_67 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred179_Java()) ) {s = 126;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index125_67);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA125_68 = input.LA(1);
+
+                         
+                        int index125_68 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred179_Java()) ) {s = 126;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index125_68);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA125_69 = input.LA(1);
+
+                         
+                        int index125_69 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred179_Java()) ) {s = 126;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index125_69);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA125_70 = input.LA(1);
+
+                         
+                        int index125_70 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred179_Java()) ) {s = 126;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index125_70);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 11 : 
+                        int LA125_71 = input.LA(1);
+
+                         
+                        int index125_71 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred179_Java()) ) {s = 126;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index125_71);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 12 : 
+                        int LA125_72 = input.LA(1);
+
+                         
+                        int index125_72 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred179_Java()) ) {s = 126;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index125_72);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 13 : 
+                        int LA125_73 = input.LA(1);
+
+                         
+                        int index125_73 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred179_Java()) ) {s = 126;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index125_73);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 14 : 
+                        int LA125_74 = input.LA(1);
+
+                         
+                        int index125_74 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred179_Java()) ) {s = 126;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index125_74);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 15 : 
+                        int LA125_75 = input.LA(1);
+
+                         
+                        int index125_75 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred179_Java()) ) {s = 126;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index125_75);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 16 : 
+                        int LA125_76 = input.LA(1);
+
+                         
+                        int index125_76 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred179_Java()) ) {s = 126;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index125_76);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 17 : 
+                        int LA125_77 = input.LA(1);
+
+                         
+                        int index125_77 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred179_Java()) ) {s = 126;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index125_77);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 18 : 
+                        int LA125_83 = input.LA(1);
+
+                         
+                        int index125_83 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred179_Java()) ) {s = 126;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index125_83);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 19 : 
+                        int LA125_122 = input.LA(1);
+
+                         
+                        int index125_122 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred179_Java()) ) {s = 126;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index125_122);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 20 : 
+                        int LA125_123 = input.LA(1);
+
+                         
+                        int index125_123 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred179_Java()) ) {s = 126;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index125_123);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 21 : 
+                        int LA125_125 = input.LA(1);
+
+                         
+                        int index125_125 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred179_Java()) ) {s = 126;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index125_125);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 22 : 
+                        int LA125_131 = input.LA(1);
+
+                         
+                        int index125_131 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred179_Java()) ) {s = 126;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index125_131);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 125, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA122_eotS =
+        "\30\uffff";
+    static final String DFA122_eofS =
+        "\30\uffff";
+    static final String DFA122_minS =
+        "\1\4\27\uffff";
+    static final String DFA122_maxS =
+        "\1\162\27\uffff";
+    static final String DFA122_acceptS =
+        "\1\uffff\1\1\25\uffff\1\2";
+    static final String DFA122_specialS =
+        "\30\uffff}>";
+    static final String[] DFA122_transitionS = {
+            "\1\1\1\uffff\6\1\15\uffff\1\27\7\uffff\1\1\6\uffff\1\1\10\uffff"+
+            "\1\1\5\uffff\10\1\1\uffff\2\1\2\uffff\4\1\41\uffff\2\1\2\uffff"+
+            "\6\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA122_eot = DFA.unpackEncodedString(DFA122_eotS);
+    static final short[] DFA122_eof = DFA.unpackEncodedString(DFA122_eofS);
+    static final char[] DFA122_min = DFA.unpackEncodedStringToUnsignedChars(DFA122_minS);
+    static final char[] DFA122_max = DFA.unpackEncodedStringToUnsignedChars(DFA122_maxS);
+    static final short[] DFA122_accept = DFA.unpackEncodedString(DFA122_acceptS);
+    static final short[] DFA122_special = DFA.unpackEncodedString(DFA122_specialS);
+    static final short[][] DFA122_transition;
+
+    static {
+        int numStates = DFA122_transitionS.length;
+        DFA122_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA122_transition[i] = DFA.unpackEncodedString(DFA122_transitionS[i]);
+        }
+    }
+
+    class DFA122 extends DFA {
+
+        public DFA122(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 122;
+            this.eot = DFA122_eot;
+            this.eof = DFA122_eof;
+            this.min = DFA122_min;
+            this.max = DFA122_max;
+            this.accept = DFA122_accept;
+            this.special = DFA122_special;
+            this.transition = DFA122_transition;
+        }
+        public String getDescription() {
+            return "741:4: ( forInit )?";
+        }
+    }
+    static final String DFA123_eotS =
+        "\26\uffff";
+    static final String DFA123_eofS =
+        "\26\uffff";
+    static final String DFA123_minS =
+        "\1\4\25\uffff";
+    static final String DFA123_maxS =
+        "\1\162\25\uffff";
+    static final String DFA123_acceptS =
+        "\1\uffff\1\1\23\uffff\1\2";
+    static final String DFA123_specialS =
+        "\26\uffff}>";
+    static final String[] DFA123_transitionS = {
+            "\1\1\1\uffff\6\1\15\uffff\1\25\7\uffff\1\1\6\uffff\1\1\16\uffff"+
+            "\10\1\1\uffff\2\1\2\uffff\3\1\42\uffff\2\1\2\uffff\6\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA123_eot = DFA.unpackEncodedString(DFA123_eotS);
+    static final short[] DFA123_eof = DFA.unpackEncodedString(DFA123_eofS);
+    static final char[] DFA123_min = DFA.unpackEncodedStringToUnsignedChars(DFA123_minS);
+    static final char[] DFA123_max = DFA.unpackEncodedStringToUnsignedChars(DFA123_maxS);
+    static final short[] DFA123_accept = DFA.unpackEncodedString(DFA123_acceptS);
+    static final short[] DFA123_special = DFA.unpackEncodedString(DFA123_specialS);
+    static final short[][] DFA123_transition;
+
+    static {
+        int numStates = DFA123_transitionS.length;
+        DFA123_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA123_transition[i] = DFA.unpackEncodedString(DFA123_transitionS[i]);
+        }
+    }
+
+    class DFA123 extends DFA {
+
+        public DFA123(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 123;
+            this.eot = DFA123_eot;
+            this.eof = DFA123_eof;
+            this.min = DFA123_min;
+            this.max = DFA123_max;
+            this.accept = DFA123_accept;
+            this.special = DFA123_special;
+            this.transition = DFA123_transition;
+        }
+        public String getDescription() {
+            return "741:17: ( expression )?";
+        }
+    }
+    static final String DFA124_eotS =
+        "\26\uffff";
+    static final String DFA124_eofS =
+        "\26\uffff";
+    static final String DFA124_minS =
+        "\1\4\25\uffff";
+    static final String DFA124_maxS =
+        "\1\162\25\uffff";
+    static final String DFA124_acceptS =
+        "\1\uffff\1\1\23\uffff\1\2";
+    static final String DFA124_specialS =
+        "\26\uffff}>";
+    static final String[] DFA124_transitionS = {
+            "\1\1\1\uffff\6\1\25\uffff\1\1\6\uffff\1\1\16\uffff\10\1\1\uffff"+
+            "\2\1\1\25\1\uffff\3\1\42\uffff\2\1\2\uffff\6\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA124_eot = DFA.unpackEncodedString(DFA124_eotS);
+    static final short[] DFA124_eof = DFA.unpackEncodedString(DFA124_eofS);
+    static final char[] DFA124_min = DFA.unpackEncodedStringToUnsignedChars(DFA124_minS);
+    static final char[] DFA124_max = DFA.unpackEncodedStringToUnsignedChars(DFA124_maxS);
+    static final short[] DFA124_accept = DFA.unpackEncodedString(DFA124_acceptS);
+    static final short[] DFA124_special = DFA.unpackEncodedString(DFA124_specialS);
+    static final short[][] DFA124_transition;
+
+    static {
+        int numStates = DFA124_transitionS.length;
+        DFA124_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA124_transition[i] = DFA.unpackEncodedString(DFA124_transitionS[i]);
+        }
+    }
+
+    class DFA124 extends DFA {
+
+        public DFA124(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 124;
+            this.eot = DFA124_eot;
+            this.eof = DFA124_eof;
+            this.min = DFA124_min;
+            this.max = DFA124_max;
+            this.accept = DFA124_accept;
+            this.special = DFA124_special;
+            this.transition = DFA124_transition;
+        }
+        public String getDescription() {
+            return "741:33: ( forUpdate )?";
+        }
+    }
+    static final String DFA127_eotS =
+        "\67\uffff";
+    static final String DFA127_eofS =
+        "\3\uffff\1\5\63\uffff";
+    static final String DFA127_minS =
+        "\1\4\2\uffff\2\4\22\uffff\2\0\4\uffff\1\0\26\uffff\1\0\2\uffff";
+    static final String DFA127_maxS =
+        "\1\162\2\uffff\1\156\1\51\22\uffff\2\0\4\uffff\1\0\26\uffff\1\0"+
+        "\2\uffff";
+    static final String DFA127_acceptS =
+        "\1\uffff\1\1\3\uffff\1\2\61\uffff";
+    static final String DFA127_specialS =
+        "\27\uffff\1\0\1\1\4\uffff\1\2\26\uffff\1\3\2\uffff}>";
+    static final String[] DFA127_transitionS = {
+            "\1\3\1\uffff\6\5\25\uffff\1\5\6\uffff\1\5\10\uffff\1\1\5\uffff"+
+            "\10\4\1\uffff\2\5\2\uffff\3\5\1\1\41\uffff\2\5\2\uffff\6\5",
+            "",
+            "",
+            "\1\1\24\uffff\1\5\2\uffff\1\27\1\5\3\uffff\1\35\3\5\4\uffff"+
+            "\1\30\2\uffff\1\5\22\uffff\1\5\1\uffff\1\5\30\uffff\25\5",
+            "\1\1\27\uffff\1\5\14\uffff\1\64",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            ""
+    };
+
+    static final short[] DFA127_eot = DFA.unpackEncodedString(DFA127_eotS);
+    static final short[] DFA127_eof = DFA.unpackEncodedString(DFA127_eofS);
+    static final char[] DFA127_min = DFA.unpackEncodedStringToUnsignedChars(DFA127_minS);
+    static final char[] DFA127_max = DFA.unpackEncodedStringToUnsignedChars(DFA127_maxS);
+    static final short[] DFA127_accept = DFA.unpackEncodedString(DFA127_acceptS);
+    static final short[] DFA127_special = DFA.unpackEncodedString(DFA127_specialS);
+    static final short[][] DFA127_transition;
+
+    static {
+        int numStates = DFA127_transitionS.length;
+        DFA127_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA127_transition[i] = DFA.unpackEncodedString(DFA127_transitionS[i]);
+        }
+    }
+
+    class DFA127 extends DFA {
+
+        public DFA127(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 127;
+            this.eot = DFA127_eot;
+            this.eof = DFA127_eof;
+            this.min = DFA127_min;
+            this.max = DFA127_max;
+            this.accept = DFA127_accept;
+            this.special = DFA127_special;
+            this.transition = DFA127_transition;
+        }
+        public String getDescription() {
+            return "744:1: forInit : ( ( variableModifier )* type variableDeclarators | expressionList );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA127_23 = input.LA(1);
+
+                         
+                        int index127_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred184_Java()) ) {s = 1;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index127_23);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA127_24 = input.LA(1);
+
+                         
+                        int index127_24 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred184_Java()) ) {s = 1;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index127_24);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA127_29 = input.LA(1);
+
+                         
+                        int index127_29 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred184_Java()) ) {s = 1;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index127_29);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA127_52 = input.LA(1);
+
+                         
+                        int index127_52 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred184_Java()) ) {s = 1;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index127_52);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 127, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA130_eotS =
+        "\u00ca\uffff";
+    static final String DFA130_eofS =
+        "\1\14\u00c9\uffff";
+    static final String DFA130_minS =
+        "\1\31\13\0\u00be\uffff";
+    static final String DFA130_maxS =
+        "\1\141\13\0\u00be\uffff";
+    static final String DFA130_acceptS =
+        "\14\uffff\1\2\32\uffff\1\1\u00a2\uffff";
+    static final String DFA130_specialS =
+        "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\u00be\uffff}>";
+    static final String[] DFA130_transitionS = {
+            "\1\14\7\uffff\1\12\1\14\1\13\2\uffff\1\14\3\uffff\1\14\1\uffff"+
+            "\1\1\25\uffff\1\14\7\uffff\1\14\17\uffff\1\2\1\3\1\4\1\5\1\6"+
+            "\1\7\1\10\1\11",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA130_eot = DFA.unpackEncodedString(DFA130_eotS);
+    static final short[] DFA130_eof = DFA.unpackEncodedString(DFA130_eofS);
+    static final char[] DFA130_min = DFA.unpackEncodedStringToUnsignedChars(DFA130_minS);
+    static final char[] DFA130_max = DFA.unpackEncodedStringToUnsignedChars(DFA130_maxS);
+    static final short[] DFA130_accept = DFA.unpackEncodedString(DFA130_acceptS);
+    static final short[] DFA130_special = DFA.unpackEncodedString(DFA130_specialS);
+    static final short[][] DFA130_transition;
+
+    static {
+        int numStates = DFA130_transitionS.length;
+        DFA130_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA130_transition[i] = DFA.unpackEncodedString(DFA130_transitionS[i]);
+        }
+    }
+
+    class DFA130 extends DFA {
+
+        public DFA130(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 130;
+            this.eot = DFA130_eot;
+            this.eof = DFA130_eof;
+            this.min = DFA130_min;
+            this.max = DFA130_max;
+            this.accept = DFA130_accept;
+            this.special = DFA130_special;
+            this.transition = DFA130_transition;
+        }
+        public String getDescription() {
+            return "782:26: ( assignmentOperator expression )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA130_1 = input.LA(1);
+
+                         
+                        int index130_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred187_Java()) ) {s = 39;}
+
+                        else if ( (true) ) {s = 12;}
+
+                         
+                        input.seek(index130_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA130_2 = input.LA(1);
+
+                         
+                        int index130_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred187_Java()) ) {s = 39;}
+
+                        else if ( (true) ) {s = 12;}
+
+                         
+                        input.seek(index130_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA130_3 = input.LA(1);
+
+                         
+                        int index130_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred187_Java()) ) {s = 39;}
+
+                        else if ( (true) ) {s = 12;}
+
+                         
+                        input.seek(index130_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA130_4 = input.LA(1);
+
+                         
+                        int index130_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred187_Java()) ) {s = 39;}
+
+                        else if ( (true) ) {s = 12;}
+
+                         
+                        input.seek(index130_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA130_5 = input.LA(1);
+
+                         
+                        int index130_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred187_Java()) ) {s = 39;}
+
+                        else if ( (true) ) {s = 12;}
+
+                         
+                        input.seek(index130_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA130_6 = input.LA(1);
+
+                         
+                        int index130_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred187_Java()) ) {s = 39;}
+
+                        else if ( (true) ) {s = 12;}
+
+                         
+                        input.seek(index130_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA130_7 = input.LA(1);
+
+                         
+                        int index130_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred187_Java()) ) {s = 39;}
+
+                        else if ( (true) ) {s = 12;}
+
+                         
+                        input.seek(index130_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA130_8 = input.LA(1);
+
+                         
+                        int index130_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred187_Java()) ) {s = 39;}
+
+                        else if ( (true) ) {s = 12;}
+
+                         
+                        input.seek(index130_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA130_9 = input.LA(1);
+
+                         
+                        int index130_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred187_Java()) ) {s = 39;}
+
+                        else if ( (true) ) {s = 12;}
+
+                         
+                        input.seek(index130_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA130_10 = input.LA(1);
+
+                         
+                        int index130_10 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred187_Java()) ) {s = 39;}
+
+                        else if ( (true) ) {s = 12;}
+
+                         
+                        input.seek(index130_10);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA130_11 = input.LA(1);
+
+                         
+                        int index130_11 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred187_Java()) ) {s = 39;}
+
+                        else if ( (true) ) {s = 12;}
+
+                         
+                        input.seek(index130_11);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 130, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA131_eotS =
+        "\17\uffff";
+    static final String DFA131_eofS =
+        "\17\uffff";
+    static final String DFA131_minS =
+        "\1\41\12\uffff\1\43\1\0\2\uffff";
+    static final String DFA131_maxS =
+        "\1\141\12\uffff\1\43\1\0\2\uffff";
+    static final String DFA131_acceptS =
+        "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\2\uffff\1\13"+
+        "\1\14";
+    static final String DFA131_specialS =
+        "\14\uffff\1\0\2\uffff}>";
+    static final String[] DFA131_transitionS = {
+            "\1\12\1\uffff\1\13\10\uffff\1\1\55\uffff\1\2\1\3\1\4\1\5\1\6"+
+            "\1\7\1\10\1\11",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\14",
+            "\1\uffff",
+            "",
+            ""
+    };
+
+    static final short[] DFA131_eot = DFA.unpackEncodedString(DFA131_eotS);
+    static final short[] DFA131_eof = DFA.unpackEncodedString(DFA131_eofS);
+    static final char[] DFA131_min = DFA.unpackEncodedStringToUnsignedChars(DFA131_minS);
+    static final char[] DFA131_max = DFA.unpackEncodedStringToUnsignedChars(DFA131_maxS);
+    static final short[] DFA131_accept = DFA.unpackEncodedString(DFA131_acceptS);
+    static final short[] DFA131_special = DFA.unpackEncodedString(DFA131_specialS);
+    static final short[][] DFA131_transition;
+
+    static {
+        int numStates = DFA131_transitionS.length;
+        DFA131_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA131_transition[i] = DFA.unpackEncodedString(DFA131_transitionS[i]);
+        }
+    }
+
+    class DFA131 extends DFA {
+
+        public DFA131(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 131;
+            this.eot = DFA131_eot;
+            this.eof = DFA131_eof;
+            this.min = DFA131_min;
+            this.max = DFA131_max;
+            this.accept = DFA131_accept;
+            this.special = DFA131_special;
+            this.transition = DFA131_transition;
+        }
+        public String getDescription() {
+            return "785:1: assignmentOperator : ( '=' | '+=' | '-=' | '*=' | '/=' | '&=' | '|=' | '^=' | '%=' | '<' '<' '=' | '>' '>' '=' | '>' '>' '>' '=' );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA131_12 = input.LA(1);
+
+                         
+                        int index131_12 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred198_Java()) ) {s = 13;}
+
+                        else if ( (true) ) {s = 14;}
+
+                         
+                        input.seek(index131_12);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 131, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA132_eotS =
+        "\24\uffff";
+    static final String DFA132_eofS =
+        "\1\2\23\uffff";
+    static final String DFA132_minS =
+        "\1\31\23\uffff";
+    static final String DFA132_maxS =
+        "\1\141\23\uffff";
+    static final String DFA132_acceptS =
+        "\1\uffff\1\1\1\2\21\uffff";
+    static final String DFA132_specialS =
+        "\24\uffff}>";
+    static final String[] DFA132_transitionS = {
+            "\1\2\7\uffff\3\2\2\uffff\1\2\3\uffff\1\2\1\uffff\1\2\22\uffff"+
+            "\1\1\2\uffff\1\2\7\uffff\1\2\17\uffff\10\2",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA132_eot = DFA.unpackEncodedString(DFA132_eotS);
+    static final short[] DFA132_eof = DFA.unpackEncodedString(DFA132_eofS);
+    static final char[] DFA132_min = DFA.unpackEncodedStringToUnsignedChars(DFA132_minS);
+    static final char[] DFA132_max = DFA.unpackEncodedStringToUnsignedChars(DFA132_maxS);
+    static final short[] DFA132_accept = DFA.unpackEncodedString(DFA132_acceptS);
+    static final short[] DFA132_special = DFA.unpackEncodedString(DFA132_specialS);
+    static final short[][] DFA132_transition;
+
+    static {
+        int numStates = DFA132_transitionS.length;
+        DFA132_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA132_transition[i] = DFA.unpackEncodedString(DFA132_transitionS[i]);
+        }
+    }
+
+    class DFA132 extends DFA {
+
+        public DFA132(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 132;
+            this.eot = DFA132_eot;
+            this.eof = DFA132_eof;
+            this.min = DFA132_min;
+            this.max = DFA132_max;
+            this.accept = DFA132_accept;
+            this.special = DFA132_special;
+            this.transition = DFA132_transition;
+        }
+        public String getDescription() {
+            return "801:33: ( '?' expression ':' expression )?";
+        }
+    }
+    static final String DFA133_eotS =
+        "\25\uffff";
+    static final String DFA133_eofS =
+        "\1\1\24\uffff";
+    static final String DFA133_minS =
+        "\1\31\24\uffff";
+    static final String DFA133_maxS =
+        "\1\142\24\uffff";
+    static final String DFA133_acceptS =
+        "\1\uffff\1\2\22\uffff\1\1";
+    static final String DFA133_specialS =
+        "\25\uffff}>";
+    static final String[] DFA133_transitionS = {
+            "\1\1\7\uffff\3\1\2\uffff\1\1\3\uffff\1\1\1\uffff\1\1\22\uffff"+
+            "\1\1\2\uffff\1\1\7\uffff\1\1\17\uffff\10\1\1\24",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA133_eot = DFA.unpackEncodedString(DFA133_eotS);
+    static final short[] DFA133_eof = DFA.unpackEncodedString(DFA133_eofS);
+    static final char[] DFA133_min = DFA.unpackEncodedStringToUnsignedChars(DFA133_minS);
+    static final char[] DFA133_max = DFA.unpackEncodedStringToUnsignedChars(DFA133_maxS);
+    static final short[] DFA133_accept = DFA.unpackEncodedString(DFA133_acceptS);
+    static final short[] DFA133_special = DFA.unpackEncodedString(DFA133_specialS);
+    static final short[][] DFA133_transition;
+
+    static {
+        int numStates = DFA133_transitionS.length;
+        DFA133_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA133_transition[i] = DFA.unpackEncodedString(DFA133_transitionS[i]);
+        }
+    }
+
+    class DFA133 extends DFA {
+
+        public DFA133(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 133;
+            this.eot = DFA133_eot;
+            this.eof = DFA133_eof;
+            this.min = DFA133_min;
+            this.max = DFA133_max;
+            this.accept = DFA133_accept;
+            this.special = DFA133_special;
+            this.transition = DFA133_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 805:34: ( '||' conditionalAndExpression )*";
+        }
+    }
+    static final String DFA134_eotS =
+        "\26\uffff";
+    static final String DFA134_eofS =
+        "\1\1\25\uffff";
+    static final String DFA134_minS =
+        "\1\31\25\uffff";
+    static final String DFA134_maxS =
+        "\1\143\25\uffff";
+    static final String DFA134_acceptS =
+        "\1\uffff\1\2\23\uffff\1\1";
+    static final String DFA134_specialS =
+        "\26\uffff}>";
+    static final String[] DFA134_transitionS = {
+            "\1\1\7\uffff\3\1\2\uffff\1\1\3\uffff\1\1\1\uffff\1\1\22\uffff"+
+            "\1\1\2\uffff\1\1\7\uffff\1\1\17\uffff\11\1\1\25",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA134_eot = DFA.unpackEncodedString(DFA134_eotS);
+    static final short[] DFA134_eof = DFA.unpackEncodedString(DFA134_eofS);
+    static final char[] DFA134_min = DFA.unpackEncodedStringToUnsignedChars(DFA134_minS);
+    static final char[] DFA134_max = DFA.unpackEncodedStringToUnsignedChars(DFA134_maxS);
+    static final short[] DFA134_accept = DFA.unpackEncodedString(DFA134_acceptS);
+    static final short[] DFA134_special = DFA.unpackEncodedString(DFA134_specialS);
+    static final short[][] DFA134_transition;
+
+    static {
+        int numStates = DFA134_transitionS.length;
+        DFA134_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA134_transition[i] = DFA.unpackEncodedString(DFA134_transitionS[i]);
+        }
+    }
+
+    class DFA134 extends DFA {
+
+        public DFA134(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 134;
+            this.eot = DFA134_eot;
+            this.eof = DFA134_eof;
+            this.min = DFA134_min;
+            this.max = DFA134_max;
+            this.accept = DFA134_accept;
+            this.special = DFA134_special;
+            this.transition = DFA134_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 809:31: ( '&&' inclusiveOrExpression )*";
+        }
+    }
+    static final String DFA135_eotS =
+        "\27\uffff";
+    static final String DFA135_eofS =
+        "\1\1\26\uffff";
+    static final String DFA135_minS =
+        "\1\31\26\uffff";
+    static final String DFA135_maxS =
+        "\1\144\26\uffff";
+    static final String DFA135_acceptS =
+        "\1\uffff\1\2\24\uffff\1\1";
+    static final String DFA135_specialS =
+        "\27\uffff}>";
+    static final String[] DFA135_transitionS = {
+            "\1\1\7\uffff\3\1\2\uffff\1\1\3\uffff\1\1\1\uffff\1\1\22\uffff"+
+            "\1\1\2\uffff\1\1\7\uffff\1\1\17\uffff\12\1\1\26",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA135_eot = DFA.unpackEncodedString(DFA135_eotS);
+    static final short[] DFA135_eof = DFA.unpackEncodedString(DFA135_eofS);
+    static final char[] DFA135_min = DFA.unpackEncodedStringToUnsignedChars(DFA135_minS);
+    static final char[] DFA135_max = DFA.unpackEncodedStringToUnsignedChars(DFA135_maxS);
+    static final short[] DFA135_accept = DFA.unpackEncodedString(DFA135_acceptS);
+    static final short[] DFA135_special = DFA.unpackEncodedString(DFA135_specialS);
+    static final short[][] DFA135_transition;
+
+    static {
+        int numStates = DFA135_transitionS.length;
+        DFA135_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA135_transition[i] = DFA.unpackEncodedString(DFA135_transitionS[i]);
+        }
+    }
+
+    class DFA135 extends DFA {
+
+        public DFA135(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 135;
+            this.eot = DFA135_eot;
+            this.eof = DFA135_eof;
+            this.min = DFA135_min;
+            this.max = DFA135_max;
+            this.accept = DFA135_accept;
+            this.special = DFA135_special;
+            this.transition = DFA135_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 813:31: ( '|' exclusiveOrExpression )*";
+        }
+    }
+    static final String DFA136_eotS =
+        "\30\uffff";
+    static final String DFA136_eofS =
+        "\1\1\27\uffff";
+    static final String DFA136_minS =
+        "\1\31\27\uffff";
+    static final String DFA136_maxS =
+        "\1\145\27\uffff";
+    static final String DFA136_acceptS =
+        "\1\uffff\1\2\25\uffff\1\1";
+    static final String DFA136_specialS =
+        "\30\uffff}>";
+    static final String[] DFA136_transitionS = {
+            "\1\1\7\uffff\3\1\2\uffff\1\1\3\uffff\1\1\1\uffff\1\1\22\uffff"+
+            "\1\1\2\uffff\1\1\7\uffff\1\1\17\uffff\13\1\1\27",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA136_eot = DFA.unpackEncodedString(DFA136_eotS);
+    static final short[] DFA136_eof = DFA.unpackEncodedString(DFA136_eofS);
+    static final char[] DFA136_min = DFA.unpackEncodedStringToUnsignedChars(DFA136_minS);
+    static final char[] DFA136_max = DFA.unpackEncodedStringToUnsignedChars(DFA136_maxS);
+    static final short[] DFA136_accept = DFA.unpackEncodedString(DFA136_acceptS);
+    static final short[] DFA136_special = DFA.unpackEncodedString(DFA136_specialS);
+    static final short[][] DFA136_transition;
+
+    static {
+        int numStates = DFA136_transitionS.length;
+        DFA136_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA136_transition[i] = DFA.unpackEncodedString(DFA136_transitionS[i]);
+        }
+    }
+
+    class DFA136 extends DFA {
+
+        public DFA136(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 136;
+            this.eot = DFA136_eot;
+            this.eof = DFA136_eof;
+            this.min = DFA136_min;
+            this.max = DFA136_max;
+            this.accept = DFA136_accept;
+            this.special = DFA136_special;
+            this.transition = DFA136_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 817:23: ( '^' andExpression )*";
+        }
+    }
+    static final String DFA137_eotS =
+        "\31\uffff";
+    static final String DFA137_eofS =
+        "\1\1\30\uffff";
+    static final String DFA137_minS =
+        "\1\31\30\uffff";
+    static final String DFA137_maxS =
+        "\1\145\30\uffff";
+    static final String DFA137_acceptS =
+        "\1\uffff\1\2\26\uffff\1\1";
+    static final String DFA137_specialS =
+        "\31\uffff}>";
+    static final String[] DFA137_transitionS = {
+            "\1\1\7\uffff\3\1\1\30\1\uffff\1\1\3\uffff\1\1\1\uffff\1\1\22"+
+            "\uffff\1\1\2\uffff\1\1\7\uffff\1\1\17\uffff\14\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA137_eot = DFA.unpackEncodedString(DFA137_eotS);
+    static final short[] DFA137_eof = DFA.unpackEncodedString(DFA137_eofS);
+    static final char[] DFA137_min = DFA.unpackEncodedStringToUnsignedChars(DFA137_minS);
+    static final char[] DFA137_max = DFA.unpackEncodedStringToUnsignedChars(DFA137_maxS);
+    static final short[] DFA137_accept = DFA.unpackEncodedString(DFA137_acceptS);
+    static final short[] DFA137_special = DFA.unpackEncodedString(DFA137_specialS);
+    static final short[][] DFA137_transition;
+
+    static {
+        int numStates = DFA137_transitionS.length;
+        DFA137_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA137_transition[i] = DFA.unpackEncodedString(DFA137_transitionS[i]);
+        }
+    }
+
+    class DFA137 extends DFA {
+
+        public DFA137(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 137;
+            this.eot = DFA137_eot;
+            this.eof = DFA137_eof;
+            this.min = DFA137_min;
+            this.max = DFA137_max;
+            this.accept = DFA137_accept;
+            this.special = DFA137_special;
+            this.transition = DFA137_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 821:28: ( '&' equalityExpression )*";
+        }
+    }
+    static final String DFA138_eotS =
+        "\32\uffff";
+    static final String DFA138_eofS =
+        "\1\1\31\uffff";
+    static final String DFA138_minS =
+        "\1\31\31\uffff";
+    static final String DFA138_maxS =
+        "\1\147\31\uffff";
+    static final String DFA138_acceptS =
+        "\1\uffff\1\2\27\uffff\1\1";
+    static final String DFA138_specialS =
+        "\32\uffff}>";
+    static final String[] DFA138_transitionS = {
+            "\1\1\7\uffff\4\1\1\uffff\1\1\3\uffff\1\1\1\uffff\1\1\22\uffff"+
+            "\1\1\2\uffff\1\1\7\uffff\1\1\17\uffff\14\1\2\31",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA138_eot = DFA.unpackEncodedString(DFA138_eotS);
+    static final short[] DFA138_eof = DFA.unpackEncodedString(DFA138_eofS);
+    static final char[] DFA138_min = DFA.unpackEncodedStringToUnsignedChars(DFA138_minS);
+    static final char[] DFA138_max = DFA.unpackEncodedStringToUnsignedChars(DFA138_maxS);
+    static final short[] DFA138_accept = DFA.unpackEncodedString(DFA138_acceptS);
+    static final short[] DFA138_special = DFA.unpackEncodedString(DFA138_specialS);
+    static final short[][] DFA138_transition;
+
+    static {
+        int numStates = DFA138_transitionS.length;
+        DFA138_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA138_transition[i] = DFA.unpackEncodedString(DFA138_transitionS[i]);
+        }
+    }
+
+    class DFA138 extends DFA {
+
+        public DFA138(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 138;
+            this.eot = DFA138_eot;
+            this.eof = DFA138_eof;
+            this.min = DFA138_min;
+            this.max = DFA138_max;
+            this.accept = DFA138_accept;
+            this.special = DFA138_special;
+            this.transition = DFA138_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 825:30: ( ( '==' | '!=' ) instanceOfExpression )*";
+        }
+    }
+    static final String DFA139_eotS =
+        "\33\uffff";
+    static final String DFA139_eofS =
+        "\1\2\32\uffff";
+    static final String DFA139_minS =
+        "\1\31\32\uffff";
+    static final String DFA139_maxS =
+        "\1\150\32\uffff";
+    static final String DFA139_acceptS =
+        "\1\uffff\1\1\1\2\30\uffff";
+    static final String DFA139_specialS =
+        "\33\uffff}>";
+    static final String[] DFA139_transitionS = {
+            "\1\2\7\uffff\4\2\1\uffff\1\2\3\uffff\1\2\1\uffff\1\2\22\uffff"+
+            "\1\2\2\uffff\1\2\7\uffff\1\2\17\uffff\16\2\1\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA139_eot = DFA.unpackEncodedString(DFA139_eotS);
+    static final short[] DFA139_eof = DFA.unpackEncodedString(DFA139_eofS);
+    static final char[] DFA139_min = DFA.unpackEncodedStringToUnsignedChars(DFA139_minS);
+    static final char[] DFA139_max = DFA.unpackEncodedStringToUnsignedChars(DFA139_maxS);
+    static final short[] DFA139_accept = DFA.unpackEncodedString(DFA139_acceptS);
+    static final short[] DFA139_special = DFA.unpackEncodedString(DFA139_specialS);
+    static final short[][] DFA139_transition;
+
+    static {
+        int numStates = DFA139_transitionS.length;
+        DFA139_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA139_transition[i] = DFA.unpackEncodedString(DFA139_transitionS[i]);
+        }
+    }
+
+    class DFA139 extends DFA {
+
+        public DFA139(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 139;
+            this.eot = DFA139_eot;
+            this.eof = DFA139_eof;
+            this.min = DFA139_min;
+            this.max = DFA139_max;
+            this.accept = DFA139_accept;
+            this.special = DFA139_special;
+            this.transition = DFA139_transition;
+        }
+        public String getDescription() {
+            return "829:30: ( 'instanceof' type )?";
+        }
+    }
+    static final String DFA140_eotS =
+        "\106\uffff";
+    static final String DFA140_eofS =
+        "\1\1\105\uffff";
+    static final String DFA140_minS =
+        "\1\31\26\uffff\2\4\2\uffff\1\0\52\uffff";
+    static final String DFA140_maxS =
+        "\1\150\26\uffff\2\162\2\uffff\1\0\52\uffff";
+    static final String DFA140_acceptS =
+        "\1\uffff\1\2\32\uffff\1\1\51\uffff";
+    static final String DFA140_specialS =
+        "\33\uffff\1\0\52\uffff}>";
+    static final String[] DFA140_transitionS = {
+            "\1\1\7\uffff\1\27\1\1\1\30\1\1\1\uffff\1\1\3\uffff\1\1\1\uffff"+
+            "\1\1\22\uffff\1\1\2\uffff\1\1\7\uffff\1\1\17\uffff\17\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\34\1\uffff\6\34\25\uffff\1\33\6\uffff\1\34\3\uffff\1\34\12"+
+            "\uffff\10\34\1\uffff\2\34\2\uffff\3\34\42\uffff\2\34\2\uffff"+
+            "\6\34",
+            "\1\34\1\uffff\6\34\25\uffff\1\34\1\uffff\1\1\4\uffff\1\34\3"+
+            "\uffff\1\34\12\uffff\10\34\1\uffff\2\34\2\uffff\3\34\42\uffff"+
+            "\2\34\2\uffff\6\34",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA140_eot = DFA.unpackEncodedString(DFA140_eotS);
+    static final short[] DFA140_eof = DFA.unpackEncodedString(DFA140_eofS);
+    static final char[] DFA140_min = DFA.unpackEncodedStringToUnsignedChars(DFA140_minS);
+    static final char[] DFA140_max = DFA.unpackEncodedStringToUnsignedChars(DFA140_maxS);
+    static final short[] DFA140_accept = DFA.unpackEncodedString(DFA140_acceptS);
+    static final short[] DFA140_special = DFA.unpackEncodedString(DFA140_specialS);
+    static final short[][] DFA140_transition;
+
+    static {
+        int numStates = DFA140_transitionS.length;
+        DFA140_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA140_transition[i] = DFA.unpackEncodedString(DFA140_transitionS[i]);
+        }
+    }
+
+    class DFA140 extends DFA {
+
+        public DFA140(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 140;
+            this.eot = DFA140_eot;
+            this.eof = DFA140_eof;
+            this.min = DFA140_min;
+            this.max = DFA140_max;
+            this.accept = DFA140_accept;
+            this.special = DFA140_special;
+            this.transition = DFA140_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 833:25: ( relationalOp shiftExpression )*";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA140_27 = input.LA(1);
+
+                         
+                        int index140_27 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred208_Java()) ) {s = 28;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index140_27);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 140, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA141_eotS =
+        "\55\uffff";
+    static final String DFA141_eofS =
+        "\55\uffff";
+    static final String DFA141_minS =
+        "\1\41\2\4\52\uffff";
+    static final String DFA141_maxS =
+        "\1\43\2\162\52\uffff";
+    static final String DFA141_acceptS =
+        "\3\uffff\1\1\1\3\23\uffff\1\2\1\4\23\uffff";
+    static final String DFA141_specialS =
+        "\55\uffff}>";
+    static final String[] DFA141_transitionS = {
+            "\1\1\1\uffff\1\2",
+            "\1\4\1\uffff\6\4\25\uffff\1\4\6\uffff\1\4\3\uffff\1\3\12\uffff"+
+            "\10\4\1\uffff\2\4\2\uffff\3\4\42\uffff\2\4\2\uffff\6\4",
+            "\1\31\1\uffff\6\31\25\uffff\1\31\6\uffff\1\31\3\uffff\1\30\12"+
+            "\uffff\10\31\1\uffff\2\31\2\uffff\3\31\42\uffff\2\31\2\uffff"+
+            "\6\31",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA141_eot = DFA.unpackEncodedString(DFA141_eotS);
+    static final short[] DFA141_eof = DFA.unpackEncodedString(DFA141_eofS);
+    static final char[] DFA141_min = DFA.unpackEncodedStringToUnsignedChars(DFA141_minS);
+    static final char[] DFA141_max = DFA.unpackEncodedStringToUnsignedChars(DFA141_maxS);
+    static final short[] DFA141_accept = DFA.unpackEncodedString(DFA141_acceptS);
+    static final short[] DFA141_special = DFA.unpackEncodedString(DFA141_specialS);
+    static final short[][] DFA141_transition;
+
+    static {
+        int numStates = DFA141_transitionS.length;
+        DFA141_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA141_transition[i] = DFA.unpackEncodedString(DFA141_transitionS[i]);
+        }
+    }
+
+    class DFA141 extends DFA {
+
+        public DFA141(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 141;
+            this.eot = DFA141_eot;
+            this.eof = DFA141_eof;
+            this.min = DFA141_min;
+            this.max = DFA141_max;
+            this.accept = DFA141_accept;
+            this.special = DFA141_special;
+            this.transition = DFA141_transition;
+        }
+        public String getDescription() {
+            return "837:4: ( '<' '=' | '>' '=' | '<' | '>' )";
+        }
+    }
+    static final String DFA142_eotS =
+        "\107\uffff";
+    static final String DFA142_eofS =
+        "\1\3\106\uffff";
+    static final String DFA142_minS =
+        "\1\31\2\4\31\uffff\1\0\24\uffff\1\0\25\uffff";
+    static final String DFA142_maxS =
+        "\1\150\2\162\31\uffff\1\0\24\uffff\1\0\25\uffff";
+    static final String DFA142_acceptS =
+        "\3\uffff\1\2\102\uffff\1\1";
+    static final String DFA142_specialS =
+        "\34\uffff\1\0\24\uffff\1\1\25\uffff}>";
+    static final String[] DFA142_transitionS = {
+            "\1\3\7\uffff\1\1\1\3\1\2\1\3\1\uffff\1\3\3\uffff\1\3\1\uffff"+
+            "\1\3\22\uffff\1\3\2\uffff\1\3\7\uffff\1\3\17\uffff\17\3",
+            "\1\3\1\uffff\6\3\25\uffff\1\34\6\uffff\1\3\3\uffff\1\3\12\uffff"+
+            "\10\3\1\uffff\2\3\2\uffff\3\3\42\uffff\2\3\2\uffff\6\3",
+            "\1\3\1\uffff\6\3\25\uffff\1\3\1\uffff\1\61\4\uffff\1\3\3\uffff"+
+            "\1\3\12\uffff\10\3\1\uffff\2\3\2\uffff\3\3\42\uffff\2\3\2\uffff"+
+            "\6\3",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA142_eot = DFA.unpackEncodedString(DFA142_eotS);
+    static final short[] DFA142_eof = DFA.unpackEncodedString(DFA142_eofS);
+    static final char[] DFA142_min = DFA.unpackEncodedStringToUnsignedChars(DFA142_minS);
+    static final char[] DFA142_max = DFA.unpackEncodedStringToUnsignedChars(DFA142_maxS);
+    static final short[] DFA142_accept = DFA.unpackEncodedString(DFA142_acceptS);
+    static final short[] DFA142_special = DFA.unpackEncodedString(DFA142_specialS);
+    static final short[][] DFA142_transition;
+
+    static {
+        int numStates = DFA142_transitionS.length;
+        DFA142_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA142_transition[i] = DFA.unpackEncodedString(DFA142_transitionS[i]);
+        }
+    }
+
+    class DFA142 extends DFA {
+
+        public DFA142(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 142;
+            this.eot = DFA142_eot;
+            this.eof = DFA142_eof;
+            this.min = DFA142_min;
+            this.max = DFA142_max;
+            this.accept = DFA142_accept;
+            this.special = DFA142_special;
+            this.transition = DFA142_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 841:28: ( shiftOp additiveExpression )*";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA142_28 = input.LA(1);
+
+                         
+                        int index142_28 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred212_Java()) ) {s = 70;}
+
+                        else if ( (true) ) {s = 3;}
+
+                         
+                        input.seek(index142_28);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA142_49 = input.LA(1);
+
+                         
+                        int index142_49 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred212_Java()) ) {s = 70;}
+
+                        else if ( (true) ) {s = 3;}
+
+                         
+                        input.seek(index142_49);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 142, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA144_eotS =
+        "\34\uffff";
+    static final String DFA144_eofS =
+        "\1\1\33\uffff";
+    static final String DFA144_minS =
+        "\1\31\33\uffff";
+    static final String DFA144_maxS =
+        "\1\152\33\uffff";
+    static final String DFA144_acceptS =
+        "\1\uffff\1\2\31\uffff\1\1";
+    static final String DFA144_specialS =
+        "\34\uffff}>";
+    static final String[] DFA144_transitionS = {
+            "\1\1\7\uffff\4\1\1\uffff\1\1\3\uffff\1\1\1\uffff\1\1\22\uffff"+
+            "\1\1\2\uffff\1\1\7\uffff\1\1\17\uffff\17\1\2\33",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA144_eot = DFA.unpackEncodedString(DFA144_eotS);
+    static final short[] DFA144_eof = DFA.unpackEncodedString(DFA144_eofS);
+    static final char[] DFA144_min = DFA.unpackEncodedStringToUnsignedChars(DFA144_minS);
+    static final char[] DFA144_max = DFA.unpackEncodedStringToUnsignedChars(DFA144_maxS);
+    static final short[] DFA144_accept = DFA.unpackEncodedString(DFA144_acceptS);
+    static final short[] DFA144_special = DFA.unpackEncodedString(DFA144_specialS);
+    static final short[][] DFA144_transition;
+
+    static {
+        int numStates = DFA144_transitionS.length;
+        DFA144_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA144_transition[i] = DFA.unpackEncodedString(DFA144_transitionS[i]);
+        }
+    }
+
+    class DFA144 extends DFA {
+
+        public DFA144(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 144;
+            this.eot = DFA144_eot;
+            this.eof = DFA144_eof;
+            this.min = DFA144_min;
+            this.max = DFA144_max;
+            this.accept = DFA144_accept;
+            this.special = DFA144_special;
+            this.transition = DFA144_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 851:34: ( ( '+' | '-' ) multiplicativeExpression )*";
+        }
+    }
+    static final String DFA145_eotS =
+        "\35\uffff";
+    static final String DFA145_eofS =
+        "\1\1\34\uffff";
+    static final String DFA145_minS =
+        "\1\31\34\uffff";
+    static final String DFA145_maxS =
+        "\1\154\34\uffff";
+    static final String DFA145_acceptS =
+        "\1\uffff\1\2\32\uffff\1\1";
+    static final String DFA145_specialS =
+        "\35\uffff}>";
+    static final String[] DFA145_transitionS = {
+            "\1\1\3\uffff\1\34\3\uffff\4\1\1\uffff\1\1\3\uffff\1\1\1\uffff"+
+            "\1\1\22\uffff\1\1\2\uffff\1\1\7\uffff\1\1\17\uffff\21\1\2\34",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA145_eot = DFA.unpackEncodedString(DFA145_eotS);
+    static final short[] DFA145_eof = DFA.unpackEncodedString(DFA145_eofS);
+    static final char[] DFA145_min = DFA.unpackEncodedStringToUnsignedChars(DFA145_minS);
+    static final char[] DFA145_max = DFA.unpackEncodedStringToUnsignedChars(DFA145_maxS);
+    static final short[] DFA145_accept = DFA.unpackEncodedString(DFA145_acceptS);
+    static final short[] DFA145_special = DFA.unpackEncodedString(DFA145_specialS);
+    static final short[][] DFA145_transition;
+
+    static {
+        int numStates = DFA145_transitionS.length;
+        DFA145_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA145_transition[i] = DFA.unpackEncodedString(DFA145_transitionS[i]);
+        }
+    }
+
+    class DFA145 extends DFA {
+
+        public DFA145(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 145;
+            this.eot = DFA145_eot;
+            this.eof = DFA145_eof;
+            this.min = DFA145_min;
+            this.max = DFA145_max;
+            this.accept = DFA145_accept;
+            this.special = DFA145_special;
+            this.transition = DFA145_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 855:25: ( ( '*' | '/' | '%' ) unaryExpression )*";
+        }
+    }
+    static final String DFA146_eotS =
+        "\25\uffff";
+    static final String DFA146_eofS =
+        "\25\uffff";
+    static final String DFA146_minS =
+        "\1\4\24\uffff";
+    static final String DFA146_maxS =
+        "\1\162\24\uffff";
+    static final String DFA146_acceptS =
+        "\1\uffff\1\1\1\2\1\3\1\4\1\5\17\uffff";
+    static final String DFA146_specialS =
+        "\25\uffff}>";
+    static final String[] DFA146_transitionS = {
+            "\1\5\1\uffff\6\5\25\uffff\1\5\6\uffff\1\5\16\uffff\10\5\1\uffff"+
+            "\2\5\2\uffff\3\5\42\uffff\1\1\1\2\2\uffff\1\3\1\4\4\5",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA146_eot = DFA.unpackEncodedString(DFA146_eotS);
+    static final short[] DFA146_eof = DFA.unpackEncodedString(DFA146_eofS);
+    static final char[] DFA146_min = DFA.unpackEncodedStringToUnsignedChars(DFA146_minS);
+    static final char[] DFA146_max = DFA.unpackEncodedStringToUnsignedChars(DFA146_maxS);
+    static final short[] DFA146_accept = DFA.unpackEncodedString(DFA146_acceptS);
+    static final short[] DFA146_special = DFA.unpackEncodedString(DFA146_specialS);
+    static final short[][] DFA146_transition;
+
+    static {
+        int numStates = DFA146_transitionS.length;
+        DFA146_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA146_transition[i] = DFA.unpackEncodedString(DFA146_transitionS[i]);
+        }
+    }
+
+    class DFA146 extends DFA {
+
+        public DFA146(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 146;
+            this.eot = DFA146_eot;
+            this.eof = DFA146_eof;
+            this.min = DFA146_min;
+            this.max = DFA146_max;
+            this.accept = DFA146_accept;
+            this.special = DFA146_special;
+            this.transition = DFA146_transition;
+        }
+        public String getDescription() {
+            return "858:1: unaryExpression : ( '+' unaryExpression | '-' unaryExpression | '++' primary | '--' primary | unaryExpressionNotPlusMinus );";
+        }
+    }
+    static final String DFA149_eotS =
+        "\46\uffff";
+    static final String DFA149_eofS =
+        "\46\uffff";
+    static final String DFA149_minS =
+        "\1\4\2\uffff\1\4\15\uffff\24\0\1\uffff";
+    static final String DFA149_maxS =
+        "\1\162\2\uffff\1\162\15\uffff\24\0\1\uffff";
+    static final String DFA149_acceptS =
+        "\1\uffff\1\1\1\2\1\uffff\1\4\40\uffff\1\3";
+    static final String DFA149_specialS =
+        "\21\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1"+
+        "\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\uffff}>";
+    static final String[] DFA149_transitionS = {
+            "\1\4\1\uffff\6\4\25\uffff\1\4\6\uffff\1\4\16\uffff\10\4\1\uffff"+
+            "\1\4\1\3\2\uffff\3\4\50\uffff\1\1\1\2\2\4",
+            "",
+            "",
+            "\1\43\1\uffff\1\35\1\36\1\37\3\34\25\uffff\1\31\6\uffff\1\44"+
+            "\16\uffff\10\21\1\uffff\1\33\1\30\2\uffff\1\41\2\40\42\uffff"+
+            "\1\22\1\23\2\uffff\1\24\1\25\1\26\1\27\1\32\1\42",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            ""
+    };
+
+    static final short[] DFA149_eot = DFA.unpackEncodedString(DFA149_eotS);
+    static final short[] DFA149_eof = DFA.unpackEncodedString(DFA149_eofS);
+    static final char[] DFA149_min = DFA.unpackEncodedStringToUnsignedChars(DFA149_minS);
+    static final char[] DFA149_max = DFA.unpackEncodedStringToUnsignedChars(DFA149_maxS);
+    static final short[] DFA149_accept = DFA.unpackEncodedString(DFA149_acceptS);
+    static final short[] DFA149_special = DFA.unpackEncodedString(DFA149_specialS);
+    static final short[][] DFA149_transition;
+
+    static {
+        int numStates = DFA149_transitionS.length;
+        DFA149_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA149_transition[i] = DFA.unpackEncodedString(DFA149_transitionS[i]);
+        }
+    }
+
+    class DFA149 extends DFA {
+
+        public DFA149(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 149;
+            this.eot = DFA149_eot;
+            this.eof = DFA149_eof;
+            this.min = DFA149_min;
+            this.max = DFA149_max;
+            this.accept = DFA149_accept;
+            this.special = DFA149_special;
+            this.transition = DFA149_transition;
+        }
+        public String getDescription() {
+            return "866:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA149_17 = input.LA(1);
+
+                         
+                        int index149_17 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred226_Java()) ) {s = 37;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index149_17);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA149_18 = input.LA(1);
+
+                         
+                        int index149_18 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred226_Java()) ) {s = 37;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index149_18);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA149_19 = input.LA(1);
+
+                         
+                        int index149_19 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred226_Java()) ) {s = 37;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index149_19);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA149_20 = input.LA(1);
+
+                         
+                        int index149_20 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred226_Java()) ) {s = 37;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index149_20);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA149_21 = input.LA(1);
+
+                         
+                        int index149_21 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred226_Java()) ) {s = 37;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index149_21);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA149_22 = input.LA(1);
+
+                         
+                        int index149_22 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred226_Java()) ) {s = 37;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index149_22);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA149_23 = input.LA(1);
+
+                         
+                        int index149_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred226_Java()) ) {s = 37;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index149_23);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA149_24 = input.LA(1);
+
+                         
+                        int index149_24 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred226_Java()) ) {s = 37;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index149_24);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA149_25 = input.LA(1);
+
+                         
+                        int index149_25 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred226_Java()) ) {s = 37;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index149_25);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA149_26 = input.LA(1);
+
+                         
+                        int index149_26 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred226_Java()) ) {s = 37;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index149_26);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA149_27 = input.LA(1);
+
+                         
+                        int index149_27 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred226_Java()) ) {s = 37;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index149_27);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 11 : 
+                        int LA149_28 = input.LA(1);
+
+                         
+                        int index149_28 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred226_Java()) ) {s = 37;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index149_28);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 12 : 
+                        int LA149_29 = input.LA(1);
+
+                         
+                        int index149_29 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred226_Java()) ) {s = 37;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index149_29);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 13 : 
+                        int LA149_30 = input.LA(1);
+
+                         
+                        int index149_30 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred226_Java()) ) {s = 37;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index149_30);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 14 : 
+                        int LA149_31 = input.LA(1);
+
+                         
+                        int index149_31 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred226_Java()) ) {s = 37;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index149_31);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 15 : 
+                        int LA149_32 = input.LA(1);
+
+                         
+                        int index149_32 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred226_Java()) ) {s = 37;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index149_32);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 16 : 
+                        int LA149_33 = input.LA(1);
+
+                         
+                        int index149_33 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred226_Java()) ) {s = 37;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index149_33);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 17 : 
+                        int LA149_34 = input.LA(1);
+
+                         
+                        int index149_34 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred226_Java()) ) {s = 37;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index149_34);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 18 : 
+                        int LA149_35 = input.LA(1);
+
+                         
+                        int index149_35 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred226_Java()) ) {s = 37;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index149_35);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 19 : 
+                        int LA149_36 = input.LA(1);
+
+                         
+                        int index149_36 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred226_Java()) ) {s = 37;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index149_36);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 149, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA147_eotS =
+        "\40\uffff";
+    static final String DFA147_eofS =
+        "\1\1\37\uffff";
+    static final String DFA147_minS =
+        "\1\31\37\uffff";
+    static final String DFA147_maxS =
+        "\1\156\37\uffff";
+    static final String DFA147_acceptS =
+        "\1\uffff\1\2\34\uffff\1\1\1\uffff";
+    static final String DFA147_specialS =
+        "\40\uffff}>";
+    static final String[] DFA147_transitionS = {
+            "\1\1\2\uffff\1\36\1\1\3\uffff\4\1\1\uffff\1\1\2\uffff\1\36\1"+
+            "\1\1\uffff\1\1\22\uffff\1\1\2\uffff\1\1\7\uffff\1\1\17\uffff"+
+            "\25\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA147_eot = DFA.unpackEncodedString(DFA147_eotS);
+    static final short[] DFA147_eof = DFA.unpackEncodedString(DFA147_eofS);
+    static final char[] DFA147_min = DFA.unpackEncodedStringToUnsignedChars(DFA147_minS);
+    static final char[] DFA147_max = DFA.unpackEncodedStringToUnsignedChars(DFA147_maxS);
+    static final short[] DFA147_accept = DFA.unpackEncodedString(DFA147_acceptS);
+    static final short[] DFA147_special = DFA.unpackEncodedString(DFA147_specialS);
+    static final short[][] DFA147_transition;
+
+    static {
+        int numStates = DFA147_transitionS.length;
+        DFA147_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA147_transition[i] = DFA.unpackEncodedString(DFA147_transitionS[i]);
+        }
+    }
+
+    class DFA147 extends DFA {
+
+        public DFA147(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 147;
+            this.eot = DFA147_eot;
+            this.eof = DFA147_eof;
+            this.min = DFA147_min;
+            this.max = DFA147_max;
+            this.accept = DFA147_accept;
+            this.special = DFA147_special;
+            this.transition = DFA147_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 870:17: ( selector )*";
+        }
+    }
+    static final String DFA148_eotS =
+        "\36\uffff";
+    static final String DFA148_eofS =
+        "\1\2\35\uffff";
+    static final String DFA148_minS =
+        "\1\31\35\uffff";
+    static final String DFA148_maxS =
+        "\1\156\35\uffff";
+    static final String DFA148_acceptS =
+        "\1\uffff\1\1\1\2\33\uffff";
+    static final String DFA148_specialS =
+        "\36\uffff}>";
+    static final String[] DFA148_transitionS = {
+            "\1\2\3\uffff\1\2\3\uffff\4\2\1\uffff\1\2\3\uffff\1\2\1\uffff"+
+            "\1\2\22\uffff\1\2\2\uffff\1\2\7\uffff\1\2\17\uffff\23\2\2\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA148_eot = DFA.unpackEncodedString(DFA148_eotS);
+    static final short[] DFA148_eof = DFA.unpackEncodedString(DFA148_eofS);
+    static final char[] DFA148_min = DFA.unpackEncodedStringToUnsignedChars(DFA148_minS);
+    static final char[] DFA148_max = DFA.unpackEncodedStringToUnsignedChars(DFA148_maxS);
+    static final short[] DFA148_accept = DFA.unpackEncodedString(DFA148_acceptS);
+    static final short[] DFA148_special = DFA.unpackEncodedString(DFA148_specialS);
+    static final short[][] DFA148_transition;
+
+    static {
+        int numStates = DFA148_transitionS.length;
+        DFA148_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA148_transition[i] = DFA.unpackEncodedString(DFA148_transitionS[i]);
+        }
+    }
+
+    class DFA148 extends DFA {
+
+        public DFA148(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 148;
+            this.eot = DFA148_eot;
+            this.eof = DFA148_eof;
+            this.min = DFA148_min;
+            this.max = DFA148_max;
+            this.accept = DFA148_accept;
+            this.special = DFA148_special;
+            this.transition = DFA148_transition;
+        }
+        public String getDescription() {
+            return "870:27: ( '++' | '--' )?";
+        }
+    }
+    static final String DFA151_eotS =
+        "\27\uffff";
+    static final String DFA151_eofS =
+        "\27\uffff";
+    static final String DFA151_minS =
+        "\1\101\1\4\1\uffff\1\0\23\uffff";
+    static final String DFA151_maxS =
+        "\1\101\1\162\1\uffff\1\0\23\uffff";
+    static final String DFA151_acceptS =
+        "\2\uffff\1\2\23\uffff\1\1";
+    static final String DFA151_specialS =
+        "\3\uffff\1\0\23\uffff}>";
+    static final String[] DFA151_transitionS = {
+            "\1\1",
+            "\1\2\1\uffff\6\2\25\uffff\1\2\6\uffff\1\2\16\uffff\10\3\1\uffff"+
+            "\2\2\2\uffff\3\2\42\uffff\2\2\2\uffff\6\2",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA151_eot = DFA.unpackEncodedString(DFA151_eotS);
+    static final short[] DFA151_eof = DFA.unpackEncodedString(DFA151_eofS);
+    static final char[] DFA151_min = DFA.unpackEncodedStringToUnsignedChars(DFA151_minS);
+    static final char[] DFA151_max = DFA.unpackEncodedStringToUnsignedChars(DFA151_maxS);
+    static final short[] DFA151_accept = DFA.unpackEncodedString(DFA151_acceptS);
+    static final short[] DFA151_special = DFA.unpackEncodedString(DFA151_specialS);
+    static final short[][] DFA151_transition;
+
+    static {
+        int numStates = DFA151_transitionS.length;
+        DFA151_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA151_transition[i] = DFA.unpackEncodedString(DFA151_transitionS[i]);
+        }
+    }
+
+    class DFA151 extends DFA {
+
+        public DFA151(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 151;
+            this.eot = DFA151_eot;
+            this.eof = DFA151_eof;
+            this.min = DFA151_min;
+            this.max = DFA151_max;
+            this.accept = DFA151_accept;
+            this.special = DFA151_special;
+            this.transition = DFA151_transition;
+        }
+        public String getDescription() {
+            return "873:1: castExpression : ( '(' primitiveType ')' unaryExpression | '(' ( type | expression ) ')' unaryExpressionNotPlusMinus );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA151_3 = input.LA(1);
+
+                         
+                        int index151_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred230_Java()) ) {s = 22;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index151_3);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 151, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA150_eotS =
+        "\63\uffff";
+    static final String DFA150_eofS =
+        "\63\uffff";
+    static final String DFA150_minS =
+        "\1\4\1\0\1\34\55\uffff\1\0\2\uffff";
+    static final String DFA150_maxS =
+        "\1\162\1\0\1\102\55\uffff\1\0\2\uffff";
+    static final String DFA150_acceptS =
+        "\3\uffff\1\2\53\uffff\1\1\3\uffff";
+    static final String DFA150_specialS =
+        "\1\uffff\1\0\56\uffff\1\1\2\uffff}>";
+    static final String[] DFA150_transitionS = {
+            "\1\1\1\uffff\6\3\25\uffff\1\3\6\uffff\1\3\16\uffff\10\2\1\uffff"+
+            "\2\3\2\uffff\3\3\42\uffff\2\3\2\uffff\6\3",
+            "\1\uffff",
+            "\1\3\14\uffff\1\60\30\uffff\1\57",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            ""
+    };
+
+    static final short[] DFA150_eot = DFA.unpackEncodedString(DFA150_eotS);
+    static final short[] DFA150_eof = DFA.unpackEncodedString(DFA150_eofS);
+    static final char[] DFA150_min = DFA.unpackEncodedStringToUnsignedChars(DFA150_minS);
+    static final char[] DFA150_max = DFA.unpackEncodedStringToUnsignedChars(DFA150_maxS);
+    static final short[] DFA150_accept = DFA.unpackEncodedString(DFA150_acceptS);
+    static final short[] DFA150_special = DFA.unpackEncodedString(DFA150_specialS);
+    static final short[][] DFA150_transition;
+
+    static {
+        int numStates = DFA150_transitionS.length;
+        DFA150_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA150_transition[i] = DFA.unpackEncodedString(DFA150_transitionS[i]);
+        }
+    }
+
+    class DFA150 extends DFA {
+
+        public DFA150(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 150;
+            this.eot = DFA150_eot;
+            this.eof = DFA150_eof;
+            this.min = DFA150_min;
+            this.max = DFA150_max;
+            this.accept = DFA150_accept;
+            this.special = DFA150_special;
+            this.transition = DFA150_transition;
+        }
+        public String getDescription() {
+            return "875:12: ( type | expression )";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA150_1 = input.LA(1);
+
+                         
+                        int index150_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred231_Java()) ) {s = 47;}
+
+                        else if ( (true) ) {s = 3;}
+
+                         
+                        input.seek(index150_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA150_48 = input.LA(1);
+
+                         
+                        int index150_48 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred231_Java()) ) {s = 47;}
+
+                        else if ( (true) ) {s = 3;}
+
+                         
+                        input.seek(index150_48);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 150, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA158_eotS =
+        "\17\uffff";
+    static final String DFA158_eofS =
+        "\17\uffff";
+    static final String DFA158_minS =
+        "\1\4\16\uffff";
+    static final String DFA158_maxS =
+        "\1\162\16\uffff";
+    static final String DFA158_acceptS =
+        "\1\uffff\1\1\1\2\1\3\1\4\1\5\5\uffff\1\6\1\7\1\10\1\11";
+    static final String DFA158_specialS =
+        "\17\uffff}>";
+    static final String[] DFA158_transitionS = {
+            "\1\14\1\uffff\6\5\25\uffff\1\2\6\uffff\1\16\16\uffff\10\15\1"+
+            "\uffff\1\4\1\1\2\uffff\3\5\52\uffff\1\3\1\13",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA158_eot = DFA.unpackEncodedString(DFA158_eotS);
+    static final short[] DFA158_eof = DFA.unpackEncodedString(DFA158_eofS);
+    static final char[] DFA158_min = DFA.unpackEncodedStringToUnsignedChars(DFA158_minS);
+    static final char[] DFA158_max = DFA.unpackEncodedStringToUnsignedChars(DFA158_maxS);
+    static final short[] DFA158_accept = DFA.unpackEncodedString(DFA158_acceptS);
+    static final short[] DFA158_special = DFA.unpackEncodedString(DFA158_specialS);
+    static final short[][] DFA158_transition;
+
+    static {
+        int numStates = DFA158_transitionS.length;
+        DFA158_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA158_transition[i] = DFA.unpackEncodedString(DFA158_transitionS[i]);
+        }
+    }
+
+    class DFA158 extends DFA {
+
+        public DFA158(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 158;
+            this.eot = DFA158_eot;
+            this.eof = DFA158_eof;
+            this.min = DFA158_min;
+            this.max = DFA158_max;
+            this.accept = DFA158_accept;
+            this.special = DFA158_special;
+            this.transition = DFA158_transition;
+        }
+        public String getDescription() {
+            return "878:1: primary : ( parExpression | nonWildcardTypeArguments ( explicitGenericInvocationSuffix | 'this' arguments ) | 'this' ( '.' Identifier )* ( identifierSuffix )? | 'super' superSuffix | literal | 'new' creator | i= Identifier ( '.' Identifier )* ( identifierSuffix )? | primitiveType ( '[' ']' )* '.' 'class' | 'void' '.' 'class' );";
+        }
+    }
+    static final String DFA153_eotS =
+        "\50\uffff";
+    static final String DFA153_eofS =
+        "\1\1\47\uffff";
+    static final String DFA153_minS =
+        "\1\31\2\uffff\1\4\41\uffff\1\0\2\uffff";
+    static final String DFA153_maxS =
+        "\1\156\2\uffff\1\162\41\uffff\1\0\2\uffff";
+    static final String DFA153_acceptS =
+        "\1\uffff\1\2\45\uffff\1\1";
+    static final String DFA153_specialS =
+        "\45\uffff\1\0\2\uffff}>";
+    static final String[] DFA153_transitionS = {
+            "\1\1\2\uffff\1\3\1\1\3\uffff\4\1\1\uffff\1\1\2\uffff\2\1\1\uffff"+
+            "\1\1\22\uffff\1\1\1\uffff\2\1\7\uffff\1\1\17\uffff\25\1",
+            "",
+            "",
+            "\1\45\31\uffff\1\1\2\uffff\1\1\36\uffff\1\1\60\uffff\2\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            ""
+    };
+
+    static final short[] DFA153_eot = DFA.unpackEncodedString(DFA153_eotS);
+    static final short[] DFA153_eof = DFA.unpackEncodedString(DFA153_eofS);
+    static final char[] DFA153_min = DFA.unpackEncodedStringToUnsignedChars(DFA153_minS);
+    static final char[] DFA153_max = DFA.unpackEncodedStringToUnsignedChars(DFA153_maxS);
+    static final short[] DFA153_accept = DFA.unpackEncodedString(DFA153_acceptS);
+    static final short[] DFA153_special = DFA.unpackEncodedString(DFA153_specialS);
+    static final short[][] DFA153_transition;
+
+    static {
+        int numStates = DFA153_transitionS.length;
+        DFA153_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA153_transition[i] = DFA.unpackEncodedString(DFA153_transitionS[i]);
+        }
+    }
+
+    class DFA153 extends DFA {
+
+        public DFA153(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 153;
+            this.eot = DFA153_eot;
+            this.eof = DFA153_eof;
+            this.min = DFA153_min;
+            this.max = DFA153_max;
+            this.accept = DFA153_accept;
+            this.special = DFA153_special;
+            this.transition = DFA153_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 882:16: ( '.' Identifier )*";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA153_37 = input.LA(1);
+
+                         
+                        int index153_37 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred235_Java()) ) {s = 39;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index153_37);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 153, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA154_eotS =
+        "\74\uffff";
+    static final String DFA154_eofS =
+        "\1\4\73\uffff";
+    static final String DFA154_minS =
+        "\1\31\1\4\1\uffff\1\4\36\uffff\24\0\1\uffff\3\0\2\uffff";
+    static final String DFA154_maxS =
+        "\1\156\1\162\1\uffff\1\162\36\uffff\24\0\1\uffff\3\0\2\uffff";
+    static final String DFA154_acceptS =
+        "\2\uffff\1\1\1\uffff\1\2\67\uffff";
+    static final String DFA154_specialS =
+        "\42\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1"+
+        "\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\uffff\1\24\1\25\1\26\2"+
+        "\uffff}>";
+    static final String[] DFA154_transitionS = {
+            "\1\4\2\uffff\1\3\1\4\3\uffff\4\4\1\uffff\1\4\2\uffff\1\1\1\4"+
+            "\1\uffff\1\4\22\uffff\1\4\1\uffff\1\2\1\4\7\uffff\1\4\17\uffff"+
+            "\25\4",
+            "\1\63\1\uffff\1\55\1\56\1\57\3\54\25\uffff\1\51\6\uffff\1\65"+
+            "\1\uffff\1\2\14\uffff\10\64\1\uffff\1\53\1\50\2\uffff\1\61\2"+
+            "\60\42\uffff\1\42\1\43\2\uffff\1\44\1\45\1\46\1\47\1\52\1\62",
+            "",
+            "\1\4\31\uffff\1\2\2\uffff\1\2\36\uffff\1\70\60\uffff\1\67\1"+
+            "\71",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            ""
+    };
+
+    static final short[] DFA154_eot = DFA.unpackEncodedString(DFA154_eotS);
+    static final short[] DFA154_eof = DFA.unpackEncodedString(DFA154_eofS);
+    static final char[] DFA154_min = DFA.unpackEncodedStringToUnsignedChars(DFA154_minS);
+    static final char[] DFA154_max = DFA.unpackEncodedStringToUnsignedChars(DFA154_maxS);
+    static final short[] DFA154_accept = DFA.unpackEncodedString(DFA154_acceptS);
+    static final short[] DFA154_special = DFA.unpackEncodedString(DFA154_specialS);
+    static final short[][] DFA154_transition;
+
+    static {
+        int numStates = DFA154_transitionS.length;
+        DFA154_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA154_transition[i] = DFA.unpackEncodedString(DFA154_transitionS[i]);
+        }
+    }
+
+    class DFA154 extends DFA {
+
+        public DFA154(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 154;
+            this.eot = DFA154_eot;
+            this.eof = DFA154_eof;
+            this.min = DFA154_min;
+            this.max = DFA154_max;
+            this.accept = DFA154_accept;
+            this.special = DFA154_special;
+            this.transition = DFA154_transition;
+        }
+        public String getDescription() {
+            return "882:34: ( identifierSuffix )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA154_34 = input.LA(1);
+
+                         
+                        int index154_34 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred236_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index154_34);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA154_35 = input.LA(1);
+
+                         
+                        int index154_35 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred236_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index154_35);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA154_36 = input.LA(1);
+
+                         
+                        int index154_36 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred236_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index154_36);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA154_37 = input.LA(1);
+
+                         
+                        int index154_37 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred236_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index154_37);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA154_38 = input.LA(1);
+
+                         
+                        int index154_38 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred236_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index154_38);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA154_39 = input.LA(1);
+
+                         
+                        int index154_39 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred236_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index154_39);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA154_40 = input.LA(1);
+
+                         
+                        int index154_40 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred236_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index154_40);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA154_41 = input.LA(1);
+
+                         
+                        int index154_41 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred236_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index154_41);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA154_42 = input.LA(1);
+
+                         
+                        int index154_42 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred236_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index154_42);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA154_43 = input.LA(1);
+
+                         
+                        int index154_43 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred236_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index154_43);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA154_44 = input.LA(1);
+
+                         
+                        int index154_44 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred236_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index154_44);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 11 : 
+                        int LA154_45 = input.LA(1);
+
+                         
+                        int index154_45 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred236_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index154_45);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 12 : 
+                        int LA154_46 = input.LA(1);
+
+                         
+                        int index154_46 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred236_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index154_46);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 13 : 
+                        int LA154_47 = input.LA(1);
+
+                         
+                        int index154_47 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred236_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index154_47);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 14 : 
+                        int LA154_48 = input.LA(1);
+
+                         
+                        int index154_48 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred236_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index154_48);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 15 : 
+                        int LA154_49 = input.LA(1);
+
+                         
+                        int index154_49 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred236_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index154_49);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 16 : 
+                        int LA154_50 = input.LA(1);
+
+                         
+                        int index154_50 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred236_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index154_50);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 17 : 
+                        int LA154_51 = input.LA(1);
+
+                         
+                        int index154_51 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred236_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index154_51);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 18 : 
+                        int LA154_52 = input.LA(1);
+
+                         
+                        int index154_52 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred236_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index154_52);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 19 : 
+                        int LA154_53 = input.LA(1);
+
+                         
+                        int index154_53 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred236_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index154_53);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 20 : 
+                        int LA154_55 = input.LA(1);
+
+                         
+                        int index154_55 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred236_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index154_55);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 21 : 
+                        int LA154_56 = input.LA(1);
+
+                         
+                        int index154_56 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred236_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index154_56);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 22 : 
+                        int LA154_57 = input.LA(1);
+
+                         
+                        int index154_57 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred236_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index154_57);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 154, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA155_eotS =
+        "\50\uffff";
+    static final String DFA155_eofS =
+        "\1\1\47\uffff";
+    static final String DFA155_minS =
+        "\1\31\2\uffff\1\4\41\uffff\1\0\2\uffff";
+    static final String DFA155_maxS =
+        "\1\156\2\uffff\1\162\41\uffff\1\0\2\uffff";
+    static final String DFA155_acceptS =
+        "\1\uffff\1\2\45\uffff\1\1";
+    static final String DFA155_specialS =
+        "\45\uffff\1\0\2\uffff}>";
+    static final String[] DFA155_transitionS = {
+            "\1\1\2\uffff\1\3\1\1\3\uffff\4\1\1\uffff\1\1\2\uffff\2\1\1\uffff"+
+            "\1\1\22\uffff\1\1\1\uffff\2\1\7\uffff\1\1\17\uffff\25\1",
+            "",
+            "",
+            "\1\45\31\uffff\1\1\2\uffff\1\1\36\uffff\1\1\60\uffff\2\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            ""
+    };
+
+    static final short[] DFA155_eot = DFA.unpackEncodedString(DFA155_eotS);
+    static final short[] DFA155_eof = DFA.unpackEncodedString(DFA155_eofS);
+    static final char[] DFA155_min = DFA.unpackEncodedStringToUnsignedChars(DFA155_minS);
+    static final char[] DFA155_max = DFA.unpackEncodedStringToUnsignedChars(DFA155_maxS);
+    static final short[] DFA155_accept = DFA.unpackEncodedString(DFA155_acceptS);
+    static final short[] DFA155_special = DFA.unpackEncodedString(DFA155_specialS);
+    static final short[][] DFA155_transition;
+
+    static {
+        int numStates = DFA155_transitionS.length;
+        DFA155_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA155_transition[i] = DFA.unpackEncodedString(DFA155_transitionS[i]);
+        }
+    }
+
+    class DFA155 extends DFA {
+
+        public DFA155(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 155;
+            this.eot = DFA155_eot;
+            this.eof = DFA155_eof;
+            this.min = DFA155_min;
+            this.max = DFA155_max;
+            this.accept = DFA155_accept;
+            this.special = DFA155_special;
+            this.transition = DFA155_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 886:126: ( '.' Identifier )*";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA155_37 = input.LA(1);
+
+                         
+                        int index155_37 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred241_Java()) ) {s = 39;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index155_37);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 155, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA156_eotS =
+        "\74\uffff";
+    static final String DFA156_eofS =
+        "\1\4\73\uffff";
+    static final String DFA156_minS =
+        "\1\31\1\4\1\uffff\1\4\36\uffff\24\0\1\uffff\3\0\2\uffff";
+    static final String DFA156_maxS =
+        "\1\156\1\162\1\uffff\1\162\36\uffff\24\0\1\uffff\3\0\2\uffff";
+    static final String DFA156_acceptS =
+        "\2\uffff\1\1\1\uffff\1\2\67\uffff";
+    static final String DFA156_specialS =
+        "\42\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1"+
+        "\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\uffff\1\24\1\25\1\26\2"+
+        "\uffff}>";
+    static final String[] DFA156_transitionS = {
+            "\1\4\2\uffff\1\3\1\4\3\uffff\4\4\1\uffff\1\4\2\uffff\1\1\1\4"+
+            "\1\uffff\1\4\22\uffff\1\4\1\uffff\1\2\1\4\7\uffff\1\4\17\uffff"+
+            "\25\4",
+            "\1\63\1\uffff\1\55\1\56\1\57\3\54\25\uffff\1\51\6\uffff\1\65"+
+            "\1\uffff\1\2\14\uffff\10\64\1\uffff\1\53\1\50\2\uffff\1\61\2"+
+            "\60\42\uffff\1\42\1\43\2\uffff\1\44\1\45\1\46\1\47\1\52\1\62",
+            "",
+            "\1\4\31\uffff\1\2\2\uffff\1\2\36\uffff\1\70\60\uffff\1\67\1"+
+            "\71",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            ""
+    };
+
+    static final short[] DFA156_eot = DFA.unpackEncodedString(DFA156_eotS);
+    static final short[] DFA156_eof = DFA.unpackEncodedString(DFA156_eofS);
+    static final char[] DFA156_min = DFA.unpackEncodedStringToUnsignedChars(DFA156_minS);
+    static final char[] DFA156_max = DFA.unpackEncodedStringToUnsignedChars(DFA156_maxS);
+    static final short[] DFA156_accept = DFA.unpackEncodedString(DFA156_acceptS);
+    static final short[] DFA156_special = DFA.unpackEncodedString(DFA156_specialS);
+    static final short[][] DFA156_transition;
+
+    static {
+        int numStates = DFA156_transitionS.length;
+        DFA156_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA156_transition[i] = DFA.unpackEncodedString(DFA156_transitionS[i]);
+        }
+    }
+
+    class DFA156 extends DFA {
+
+        public DFA156(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 156;
+            this.eot = DFA156_eot;
+            this.eof = DFA156_eof;
+            this.min = DFA156_min;
+            this.max = DFA156_max;
+            this.accept = DFA156_accept;
+            this.special = DFA156_special;
+            this.transition = DFA156_transition;
+        }
+        public String getDescription() {
+            return "886:144: ( identifierSuffix )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA156_34 = input.LA(1);
+
+                         
+                        int index156_34 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred242_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index156_34);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA156_35 = input.LA(1);
+
+                         
+                        int index156_35 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred242_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index156_35);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA156_36 = input.LA(1);
+
+                         
+                        int index156_36 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred242_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index156_36);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA156_37 = input.LA(1);
+
+                         
+                        int index156_37 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred242_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index156_37);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA156_38 = input.LA(1);
+
+                         
+                        int index156_38 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred242_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index156_38);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA156_39 = input.LA(1);
+
+                         
+                        int index156_39 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred242_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index156_39);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA156_40 = input.LA(1);
+
+                         
+                        int index156_40 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred242_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index156_40);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA156_41 = input.LA(1);
+
+                         
+                        int index156_41 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred242_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index156_41);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA156_42 = input.LA(1);
+
+                         
+                        int index156_42 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred242_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index156_42);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA156_43 = input.LA(1);
+
+                         
+                        int index156_43 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred242_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index156_43);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA156_44 = input.LA(1);
+
+                         
+                        int index156_44 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred242_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index156_44);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 11 : 
+                        int LA156_45 = input.LA(1);
+
+                         
+                        int index156_45 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred242_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index156_45);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 12 : 
+                        int LA156_46 = input.LA(1);
+
+                         
+                        int index156_46 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred242_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index156_46);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 13 : 
+                        int LA156_47 = input.LA(1);
+
+                         
+                        int index156_47 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred242_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index156_47);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 14 : 
+                        int LA156_48 = input.LA(1);
+
+                         
+                        int index156_48 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred242_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index156_48);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 15 : 
+                        int LA156_49 = input.LA(1);
+
+                         
+                        int index156_49 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred242_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index156_49);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 16 : 
+                        int LA156_50 = input.LA(1);
+
+                         
+                        int index156_50 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred242_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index156_50);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 17 : 
+                        int LA156_51 = input.LA(1);
+
+                         
+                        int index156_51 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred242_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index156_51);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 18 : 
+                        int LA156_52 = input.LA(1);
+
+                         
+                        int index156_52 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred242_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index156_52);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 19 : 
+                        int LA156_53 = input.LA(1);
+
+                         
+                        int index156_53 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred242_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index156_53);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 20 : 
+                        int LA156_55 = input.LA(1);
+
+                         
+                        int index156_55 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred242_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index156_55);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 21 : 
+                        int LA156_56 = input.LA(1);
+
+                         
+                        int index156_56 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred242_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index156_56);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 22 : 
+                        int LA156_57 = input.LA(1);
+
+                         
+                        int index156_57 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred242_Java()) ) {s = 2;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index156_57);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 156, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA162_eotS =
+        "\36\uffff";
+    static final String DFA162_eofS =
+        "\36\uffff";
+    static final String DFA162_minS =
+        "\1\34\1\4\1\uffff\1\36\32\uffff";
+    static final String DFA162_maxS =
+        "\1\101\1\162\1\uffff\1\162\32\uffff";
+    static final String DFA162_acceptS =
+        "\2\uffff\1\3\1\uffff\1\1\1\2\23\uffff\1\4\1\6\1\7\1\10\1\5";
+    static final String DFA162_specialS =
+        "\36\uffff}>";
+    static final String[] DFA162_transitionS = {
+            "\1\3\14\uffff\1\1\27\uffff\1\2",
+            "\1\5\1\uffff\6\5\25\uffff\1\5\6\uffff\1\5\1\uffff\1\4\14\uffff"+
+            "\10\5\1\uffff\2\5\2\uffff\3\5\42\uffff\2\5\2\uffff\6\5",
+            "",
+            "\1\31\2\uffff\1\35\36\uffff\1\33\60\uffff\1\32\1\34",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA162_eot = DFA.unpackEncodedString(DFA162_eotS);
+    static final short[] DFA162_eof = DFA.unpackEncodedString(DFA162_eofS);
+    static final char[] DFA162_min = DFA.unpackEncodedStringToUnsignedChars(DFA162_minS);
+    static final char[] DFA162_max = DFA.unpackEncodedStringToUnsignedChars(DFA162_maxS);
+    static final short[] DFA162_accept = DFA.unpackEncodedString(DFA162_acceptS);
+    static final short[] DFA162_special = DFA.unpackEncodedString(DFA162_specialS);
+    static final short[][] DFA162_transition;
+
+    static {
+        int numStates = DFA162_transitionS.length;
+        DFA162_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA162_transition[i] = DFA.unpackEncodedString(DFA162_transitionS[i]);
+        }
+    }
+
+    class DFA162 extends DFA {
+
+        public DFA162(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 162;
+            this.eot = DFA162_eot;
+            this.eof = DFA162_eof;
+            this.min = DFA162_min;
+            this.max = DFA162_max;
+            this.accept = DFA162_accept;
+            this.special = DFA162_special;
+            this.transition = DFA162_transition;
+        }
+        public String getDescription() {
+            return "891:1: identifierSuffix : ( ( '[' ']' )+ '.' 'class' | ( '[' expression ']' )+ | arguments | '.' 'class' | '.' explicitGenericInvocation | '.' 'this' | '.' 'super' arguments | '.' 'new' ( nonWildcardTypeArguments )? innerCreator );";
+        }
+    }
+    static final String DFA160_eotS =
+        "\65\uffff";
+    static final String DFA160_eofS =
+        "\1\1\64\uffff";
+    static final String DFA160_minS =
+        "\1\31\35\uffff\1\4\1\uffff\24\0\1\uffff";
+    static final String DFA160_maxS =
+        "\1\156\35\uffff\1\162\1\uffff\24\0\1\uffff";
+    static final String DFA160_acceptS =
+        "\1\uffff\1\2\62\uffff\1\1";
+    static final String DFA160_specialS =
+        "\40\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1"+
+        "\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\uffff}>";
+    static final String[] DFA160_transitionS = {
+            "\1\1\2\uffff\2\1\3\uffff\4\1\1\uffff\1\1\2\uffff\1\36\1\1\1"+
+            "\uffff\1\1\22\uffff\1\1\2\uffff\1\1\7\uffff\1\1\17\uffff\25"+
+            "\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\61\1\uffff\1\53\1\54\1\55\3\52\25\uffff\1\47\6\uffff\1\63"+
+            "\16\uffff\10\62\1\uffff\1\51\1\46\2\uffff\1\57\2\56\42\uffff"+
+            "\1\40\1\41\2\uffff\1\42\1\43\1\44\1\45\1\50\1\60",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            ""
+    };
+
+    static final short[] DFA160_eot = DFA.unpackEncodedString(DFA160_eotS);
+    static final short[] DFA160_eof = DFA.unpackEncodedString(DFA160_eofS);
+    static final char[] DFA160_min = DFA.unpackEncodedStringToUnsignedChars(DFA160_minS);
+    static final char[] DFA160_max = DFA.unpackEncodedStringToUnsignedChars(DFA160_maxS);
+    static final short[] DFA160_accept = DFA.unpackEncodedString(DFA160_acceptS);
+    static final short[] DFA160_special = DFA.unpackEncodedString(DFA160_specialS);
+    static final short[][] DFA160_transition;
+
+    static {
+        int numStates = DFA160_transitionS.length;
+        DFA160_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA160_transition[i] = DFA.unpackEncodedString(DFA160_transitionS[i]);
+        }
+    }
+
+    class DFA160 extends DFA {
+
+        public DFA160(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 160;
+            this.eot = DFA160_eot;
+            this.eof = DFA160_eof;
+            this.min = DFA160_min;
+            this.max = DFA160_max;
+            this.accept = DFA160_accept;
+            this.special = DFA160_special;
+            this.transition = DFA160_transition;
+        }
+        public String getDescription() {
+            return "()+ loopback of 893:4: ( '[' expression ']' )+";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA160_32 = input.LA(1);
+
+                         
+                        int index160_32 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred248_Java()) ) {s = 52;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index160_32);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA160_33 = input.LA(1);
+
+                         
+                        int index160_33 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred248_Java()) ) {s = 52;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index160_33);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA160_34 = input.LA(1);
+
+                         
+                        int index160_34 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred248_Java()) ) {s = 52;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index160_34);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA160_35 = input.LA(1);
+
+                         
+                        int index160_35 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred248_Java()) ) {s = 52;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index160_35);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA160_36 = input.LA(1);
+
+                         
+                        int index160_36 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred248_Java()) ) {s = 52;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index160_36);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA160_37 = input.LA(1);
+
+                         
+                        int index160_37 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred248_Java()) ) {s = 52;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index160_37);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA160_38 = input.LA(1);
+
+                         
+                        int index160_38 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred248_Java()) ) {s = 52;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index160_38);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA160_39 = input.LA(1);
+
+                         
+                        int index160_39 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred248_Java()) ) {s = 52;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index160_39);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA160_40 = input.LA(1);
+
+                         
+                        int index160_40 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred248_Java()) ) {s = 52;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index160_40);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA160_41 = input.LA(1);
+
+                         
+                        int index160_41 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred248_Java()) ) {s = 52;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index160_41);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA160_42 = input.LA(1);
+
+                         
+                        int index160_42 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred248_Java()) ) {s = 52;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index160_42);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 11 : 
+                        int LA160_43 = input.LA(1);
+
+                         
+                        int index160_43 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred248_Java()) ) {s = 52;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index160_43);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 12 : 
+                        int LA160_44 = input.LA(1);
+
+                         
+                        int index160_44 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred248_Java()) ) {s = 52;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index160_44);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 13 : 
+                        int LA160_45 = input.LA(1);
+
+                         
+                        int index160_45 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred248_Java()) ) {s = 52;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index160_45);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 14 : 
+                        int LA160_46 = input.LA(1);
+
+                         
+                        int index160_46 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred248_Java()) ) {s = 52;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index160_46);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 15 : 
+                        int LA160_47 = input.LA(1);
+
+                         
+                        int index160_47 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred248_Java()) ) {s = 52;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index160_47);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 16 : 
+                        int LA160_48 = input.LA(1);
+
+                         
+                        int index160_48 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred248_Java()) ) {s = 52;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index160_48);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 17 : 
+                        int LA160_49 = input.LA(1);
+
+                         
+                        int index160_49 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred248_Java()) ) {s = 52;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index160_49);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 18 : 
+                        int LA160_50 = input.LA(1);
+
+                         
+                        int index160_50 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred248_Java()) ) {s = 52;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index160_50);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 19 : 
+                        int LA160_51 = input.LA(1);
+
+                         
+                        int index160_51 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred248_Java()) ) {s = 52;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index160_51);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 160, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA172_eotS =
+        "\26\uffff";
+    static final String DFA172_eofS =
+        "\26\uffff";
+    static final String DFA172_minS =
+        "\1\4\25\uffff";
+    static final String DFA172_maxS =
+        "\1\162\25\uffff";
+    static final String DFA172_acceptS =
+        "\1\uffff\1\1\1\2\23\uffff";
+    static final String DFA172_specialS =
+        "\26\uffff}>";
+    static final String[] DFA172_transitionS = {
+            "\1\2\1\uffff\6\2\25\uffff\1\2\6\uffff\1\2\1\uffff\1\1\14\uffff"+
+            "\10\2\1\uffff\2\2\2\uffff\3\2\42\uffff\2\2\2\uffff\6\2",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA172_eot = DFA.unpackEncodedString(DFA172_eotS);
+    static final short[] DFA172_eof = DFA.unpackEncodedString(DFA172_eofS);
+    static final char[] DFA172_min = DFA.unpackEncodedStringToUnsignedChars(DFA172_minS);
+    static final char[] DFA172_max = DFA.unpackEncodedStringToUnsignedChars(DFA172_maxS);
+    static final short[] DFA172_accept = DFA.unpackEncodedString(DFA172_acceptS);
+    static final short[] DFA172_special = DFA.unpackEncodedString(DFA172_specialS);
+    static final short[][] DFA172_transition;
+
+    static {
+        int numStates = DFA172_transitionS.length;
+        DFA172_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA172_transition[i] = DFA.unpackEncodedString(DFA172_transitionS[i]);
+        }
+    }
+
+    class DFA172 extends DFA {
+
+        public DFA172(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 172;
+            this.eot = DFA172_eot;
+            this.eof = DFA172_eof;
+            this.min = DFA172_min;
+            this.max = DFA172_max;
+            this.accept = DFA172_accept;
+            this.special = DFA172_special;
+            this.transition = DFA172_transition;
+        }
+        public String getDescription() {
+            return "919:9: ( ']' ( '[' ']' )* arrayInitializer | expression ']' ( '[' expression ']' )* ( '[' ']' )* )";
+        }
+    }
+    static final String DFA170_eotS =
+        "\66\uffff";
+    static final String DFA170_eofS =
+        "\1\2\65\uffff";
+    static final String DFA170_minS =
+        "\1\31\1\4\37\uffff\24\0\1\uffff";
+    static final String DFA170_maxS =
+        "\1\156\1\162\37\uffff\24\0\1\uffff";
+    static final String DFA170_acceptS =
+        "\2\uffff\1\2\62\uffff\1\1";
+    static final String DFA170_specialS =
+        "\41\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1"+
+        "\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\uffff}>";
+    static final String[] DFA170_transitionS = {
+            "\1\2\2\uffff\2\2\3\uffff\4\2\1\uffff\1\2\2\uffff\1\1\1\2\1\uffff"+
+            "\1\2\22\uffff\1\2\2\uffff\1\2\7\uffff\1\2\17\uffff\25\2",
+            "\1\62\1\uffff\1\54\1\55\1\56\3\53\25\uffff\1\50\6\uffff\1\64"+
+            "\1\uffff\1\2\14\uffff\10\63\1\uffff\1\52\1\47\2\uffff\1\60\2"+
+            "\57\42\uffff\1\41\1\42\2\uffff\1\43\1\44\1\45\1\46\1\51\1\61",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            ""
+    };
+
+    static final short[] DFA170_eot = DFA.unpackEncodedString(DFA170_eotS);
+    static final short[] DFA170_eof = DFA.unpackEncodedString(DFA170_eofS);
+    static final char[] DFA170_min = DFA.unpackEncodedStringToUnsignedChars(DFA170_minS);
+    static final char[] DFA170_max = DFA.unpackEncodedStringToUnsignedChars(DFA170_maxS);
+    static final short[] DFA170_accept = DFA.unpackEncodedString(DFA170_acceptS);
+    static final short[] DFA170_special = DFA.unpackEncodedString(DFA170_specialS);
+    static final short[][] DFA170_transition;
+
+    static {
+        int numStates = DFA170_transitionS.length;
+        DFA170_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA170_transition[i] = DFA.unpackEncodedString(DFA170_transitionS[i]);
+        }
+    }
+
+    class DFA170 extends DFA {
+
+        public DFA170(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 170;
+            this.eot = DFA170_eot;
+            this.eof = DFA170_eof;
+            this.min = DFA170_min;
+            this.max = DFA170_max;
+            this.accept = DFA170_accept;
+            this.special = DFA170_special;
+            this.transition = DFA170_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 920:28: ( '[' expression ']' )*";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA170_33 = input.LA(1);
+
+                         
+                        int index170_33 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred264_Java()) ) {s = 53;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index170_33);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA170_34 = input.LA(1);
+
+                         
+                        int index170_34 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred264_Java()) ) {s = 53;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index170_34);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA170_35 = input.LA(1);
+
+                         
+                        int index170_35 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred264_Java()) ) {s = 53;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index170_35);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA170_36 = input.LA(1);
+
+                         
+                        int index170_36 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred264_Java()) ) {s = 53;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index170_36);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA170_37 = input.LA(1);
+
+                         
+                        int index170_37 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred264_Java()) ) {s = 53;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index170_37);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA170_38 = input.LA(1);
+
+                         
+                        int index170_38 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred264_Java()) ) {s = 53;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index170_38);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA170_39 = input.LA(1);
+
+                         
+                        int index170_39 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred264_Java()) ) {s = 53;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index170_39);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA170_40 = input.LA(1);
+
+                         
+                        int index170_40 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred264_Java()) ) {s = 53;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index170_40);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA170_41 = input.LA(1);
+
+                         
+                        int index170_41 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred264_Java()) ) {s = 53;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index170_41);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA170_42 = input.LA(1);
+
+                         
+                        int index170_42 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred264_Java()) ) {s = 53;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index170_42);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA170_43 = input.LA(1);
+
+                         
+                        int index170_43 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred264_Java()) ) {s = 53;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index170_43);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 11 : 
+                        int LA170_44 = input.LA(1);
+
+                         
+                        int index170_44 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred264_Java()) ) {s = 53;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index170_44);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 12 : 
+                        int LA170_45 = input.LA(1);
+
+                         
+                        int index170_45 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred264_Java()) ) {s = 53;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index170_45);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 13 : 
+                        int LA170_46 = input.LA(1);
+
+                         
+                        int index170_46 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred264_Java()) ) {s = 53;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index170_46);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 14 : 
+                        int LA170_47 = input.LA(1);
+
+                         
+                        int index170_47 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred264_Java()) ) {s = 53;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index170_47);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 15 : 
+                        int LA170_48 = input.LA(1);
+
+                         
+                        int index170_48 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred264_Java()) ) {s = 53;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index170_48);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 16 : 
+                        int LA170_49 = input.LA(1);
+
+                         
+                        int index170_49 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred264_Java()) ) {s = 53;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index170_49);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 17 : 
+                        int LA170_50 = input.LA(1);
+
+                         
+                        int index170_50 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred264_Java()) ) {s = 53;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index170_50);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 18 : 
+                        int LA170_51 = input.LA(1);
+
+                         
+                        int index170_51 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred264_Java()) ) {s = 53;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index170_51);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 19 : 
+                        int LA170_52 = input.LA(1);
+
+                         
+                        int index170_52 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred264_Java()) ) {s = 53;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index170_52);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 170, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA171_eotS =
+        "\65\uffff";
+    static final String DFA171_eofS =
+        "\1\1\64\uffff";
+    static final String DFA171_minS =
+        "\1\31\35\uffff\1\4\26\uffff";
+    static final String DFA171_maxS =
+        "\1\156\35\uffff\1\162\26\uffff";
+    static final String DFA171_acceptS =
+        "\1\uffff\1\2\36\uffff\1\1\24\uffff";
+    static final String DFA171_specialS =
+        "\65\uffff}>";
+    static final String[] DFA171_transitionS = {
+            "\1\1\2\uffff\2\1\3\uffff\4\1\1\uffff\1\1\2\uffff\1\36\1\1\1"+
+            "\uffff\1\1\22\uffff\1\1\2\uffff\1\1\7\uffff\1\1\17\uffff\25"+
+            "\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\1\1\uffff\6\1\25\uffff\1\1\6\uffff\1\1\1\uffff\1\40\14\uffff"+
+            "\10\1\1\uffff\2\1\2\uffff\3\1\42\uffff\2\1\2\uffff\6\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA171_eot = DFA.unpackEncodedString(DFA171_eotS);
+    static final short[] DFA171_eof = DFA.unpackEncodedString(DFA171_eofS);
+    static final char[] DFA171_min = DFA.unpackEncodedStringToUnsignedChars(DFA171_minS);
+    static final char[] DFA171_max = DFA.unpackEncodedStringToUnsignedChars(DFA171_maxS);
+    static final short[] DFA171_accept = DFA.unpackEncodedString(DFA171_acceptS);
+    static final short[] DFA171_special = DFA.unpackEncodedString(DFA171_specialS);
+    static final short[][] DFA171_transition;
+
+    static {
+        int numStates = DFA171_transitionS.length;
+        DFA171_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA171_transition[i] = DFA.unpackEncodedString(DFA171_transitionS[i]);
+        }
+    }
+
+    class DFA171 extends DFA {
+
+        public DFA171(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 171;
+            this.eot = DFA171_eot;
+            this.eof = DFA171_eof;
+            this.min = DFA171_min;
+            this.max = DFA171_max;
+            this.accept = DFA171_accept;
+            this.special = DFA171_special;
+            this.transition = DFA171_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 920:50: ( '[' ']' )*";
+        }
+    }
+    static final String DFA173_eotS =
+        "\41\uffff";
+    static final String DFA173_eofS =
+        "\1\2\40\uffff";
+    static final String DFA173_minS =
+        "\1\31\40\uffff";
+    static final String DFA173_maxS =
+        "\1\156\40\uffff";
+    static final String DFA173_acceptS =
+        "\1\uffff\1\1\1\2\36\uffff";
+    static final String DFA173_specialS =
+        "\41\uffff}>";
+    static final String[] DFA173_transitionS = {
+            "\1\2\2\uffff\2\2\3\uffff\4\2\1\1\1\2\2\uffff\2\2\1\uffff\1\2"+
+            "\22\uffff\1\2\2\uffff\1\2\7\uffff\1\2\17\uffff\25\2",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA173_eot = DFA.unpackEncodedString(DFA173_eotS);
+    static final short[] DFA173_eof = DFA.unpackEncodedString(DFA173_eofS);
+    static final char[] DFA173_min = DFA.unpackEncodedStringToUnsignedChars(DFA173_minS);
+    static final char[] DFA173_max = DFA.unpackEncodedStringToUnsignedChars(DFA173_maxS);
+    static final short[] DFA173_accept = DFA.unpackEncodedString(DFA173_acceptS);
+    static final short[] DFA173_special = DFA.unpackEncodedString(DFA173_specialS);
+    static final short[][] DFA173_transition;
+
+    static {
+        int numStates = DFA173_transitionS.length;
+        DFA173_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA173_transition[i] = DFA.unpackEncodedString(DFA173_transitionS[i]);
+        }
+    }
+
+    class DFA173 extends DFA {
+
+        public DFA173(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 173;
+            this.eot = DFA173_eot;
+            this.eof = DFA173_eof;
+            this.min = DFA173_min;
+            this.max = DFA173_max;
+            this.accept = DFA173_accept;
+            this.special = DFA173_special;
+            this.transition = DFA173_transition;
+        }
+        public String getDescription() {
+            return "925:14: ( classBody )?";
+        }
+    }
+    static final String DFA175_eotS =
+        "\41\uffff";
+    static final String DFA175_eofS =
+        "\1\2\40\uffff";
+    static final String DFA175_minS =
+        "\1\31\40\uffff";
+    static final String DFA175_maxS =
+        "\1\156\40\uffff";
+    static final String DFA175_acceptS =
+        "\1\uffff\1\1\1\2\36\uffff";
+    static final String DFA175_specialS =
+        "\41\uffff}>";
+    static final String[] DFA175_transitionS = {
+            "\1\2\2\uffff\2\2\3\uffff\4\2\1\uffff\1\2\2\uffff\2\2\1\uffff"+
+            "\1\2\22\uffff\1\2\1\uffff\1\1\1\2\7\uffff\1\2\17\uffff\25\2",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA175_eot = DFA.unpackEncodedString(DFA175_eotS);
+    static final short[] DFA175_eof = DFA.unpackEncodedString(DFA175_eofS);
+    static final char[] DFA175_min = DFA.unpackEncodedStringToUnsignedChars(DFA175_minS);
+    static final char[] DFA175_max = DFA.unpackEncodedStringToUnsignedChars(DFA175_maxS);
+    static final short[] DFA175_accept = DFA.unpackEncodedString(DFA175_acceptS);
+    static final short[] DFA175_special = DFA.unpackEncodedString(DFA175_specialS);
+    static final short[][] DFA175_transition;
+
+    static {
+        int numStates = DFA175_transitionS.length;
+        DFA175_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA175_transition[i] = DFA.unpackEncodedString(DFA175_transitionS[i]);
+        }
+    }
+
+    class DFA175 extends DFA {
+
+        public DFA175(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 175;
+            this.eot = DFA175_eot;
+            this.eof = DFA175_eof;
+            this.min = DFA175_min;
+            this.max = DFA175_max;
+            this.accept = DFA175_accept;
+            this.special = DFA175_special;
+            this.transition = DFA175_transition;
+        }
+        public String getDescription() {
+            return "942:19: ( arguments )?";
+        }
+    }
+    static final String DFA178_eotS =
+        "\41\uffff";
+    static final String DFA178_eofS =
+        "\1\2\40\uffff";
+    static final String DFA178_minS =
+        "\1\31\40\uffff";
+    static final String DFA178_maxS =
+        "\1\156\40\uffff";
+    static final String DFA178_acceptS =
+        "\1\uffff\1\1\1\2\36\uffff";
+    static final String DFA178_specialS =
+        "\41\uffff}>";
+    static final String[] DFA178_transitionS = {
+            "\1\2\2\uffff\2\2\3\uffff\4\2\1\uffff\1\2\2\uffff\2\2\1\uffff"+
+            "\1\2\22\uffff\1\2\1\uffff\1\1\1\2\7\uffff\1\2\17\uffff\25\2",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA178_eot = DFA.unpackEncodedString(DFA178_eotS);
+    static final short[] DFA178_eof = DFA.unpackEncodedString(DFA178_eofS);
+    static final char[] DFA178_min = DFA.unpackEncodedStringToUnsignedChars(DFA178_minS);
+    static final char[] DFA178_max = DFA.unpackEncodedStringToUnsignedChars(DFA178_maxS);
+    static final short[] DFA178_accept = DFA.unpackEncodedString(DFA178_acceptS);
+    static final short[] DFA178_special = DFA.unpackEncodedString(DFA178_specialS);
+    static final short[][] DFA178_transition;
+
+    static {
+        int numStates = DFA178_transitionS.length;
+        DFA178_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA178_transition[i] = DFA.unpackEncodedString(DFA178_transitionS[i]);
+        }
+    }
+
+    class DFA178 extends DFA {
+
+        public DFA178(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 178;
+            this.eot = DFA178_eot;
+            this.eof = DFA178_eof;
+            this.min = DFA178_min;
+            this.max = DFA178_max;
+            this.accept = DFA178_accept;
+            this.special = DFA178_special;
+            this.transition = DFA178_transition;
+        }
+        public String getDescription() {
+            return "951:21: ( arguments )?";
+        }
+    }
+    static final String DFA180_eotS =
+        "\26\uffff";
+    static final String DFA180_eofS =
+        "\26\uffff";
+    static final String DFA180_minS =
+        "\1\4\25\uffff";
+    static final String DFA180_maxS =
+        "\1\162\25\uffff";
+    static final String DFA180_acceptS =
+        "\1\uffff\1\1\23\uffff\1\2";
+    static final String DFA180_specialS =
+        "\26\uffff}>";
+    static final String[] DFA180_transitionS = {
+            "\1\1\1\uffff\6\1\25\uffff\1\1\6\uffff\1\1\16\uffff\10\1\1\uffff"+
+            "\2\1\1\25\1\uffff\3\1\42\uffff\2\1\2\uffff\6\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA180_eot = DFA.unpackEncodedString(DFA180_eotS);
+    static final short[] DFA180_eof = DFA.unpackEncodedString(DFA180_eofS);
+    static final char[] DFA180_min = DFA.unpackEncodedStringToUnsignedChars(DFA180_minS);
+    static final char[] DFA180_max = DFA.unpackEncodedStringToUnsignedChars(DFA180_maxS);
+    static final short[] DFA180_accept = DFA.unpackEncodedString(DFA180_acceptS);
+    static final short[] DFA180_special = DFA.unpackEncodedString(DFA180_specialS);
+    static final short[][] DFA180_transition;
+
+    static {
+        int numStates = DFA180_transitionS.length;
+        DFA180_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA180_transition[i] = DFA.unpackEncodedString(DFA180_transitionS[i]);
+        }
+    }
+
+    class DFA180 extends DFA {
+
+        public DFA180(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 180;
+            this.eot = DFA180_eot;
+            this.eof = DFA180_eof;
+            this.min = DFA180_min;
+            this.max = DFA180_max;
+            this.accept = DFA180_accept;
+            this.special = DFA180_special;
+            this.transition = DFA180_transition;
+        }
+        public String getDescription() {
+            return "955:8: ( expressionList )?";
+        }
+    }
  
 
     public static final BitSet FOLLOW_annotations_in_compilationUnit70 = new BitSet(new long[]{0x007FE0804F000022L,0x0000000000000080L});
@@ -14866,11 +20960,11 @@
     public static final BitSet FOLLOW_enumDeclaration_in_classDeclaration211 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_30_in_normalClassDeclaration223 = new BitSet(new long[]{0x0000000000000010L});
     public static final BitSet FOLLOW_Identifier_in_normalClassDeclaration225 = new BitSet(new long[]{0x0000002380000000L});
-    public static final BitSet FOLLOW_typeParameters_in_normalClassDeclaration228 = new BitSet(new long[]{0x0000002180000000L});
+    public static final BitSet FOLLOW_typeParameters_in_normalClassDeclaration228 = new BitSet(new long[]{0x0000002380000000L});
     public static final BitSet FOLLOW_31_in_normalClassDeclaration241 = new BitSet(new long[]{0x7F80000000000010L});
-    public static final BitSet FOLLOW_type_in_normalClassDeclaration243 = new BitSet(new long[]{0x0000002100000000L});
+    public static final BitSet FOLLOW_type_in_normalClassDeclaration243 = new BitSet(new long[]{0x0000002380000000L});
     public static final BitSet FOLLOW_32_in_normalClassDeclaration256 = new BitSet(new long[]{0x7F80000000000010L});
-    public static final BitSet FOLLOW_typeList_in_normalClassDeclaration258 = new BitSet(new long[]{0x0000002000000000L});
+    public static final BitSet FOLLOW_typeList_in_normalClassDeclaration258 = new BitSet(new long[]{0x0000002380000000L});
     public static final BitSet FOLLOW_classBody_in_normalClassDeclaration270 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_33_in_typeParameters282 = new BitSet(new long[]{0x0000000000000010L});
     public static final BitSet FOLLOW_typeParameter_in_typeParameters284 = new BitSet(new long[]{0x0000000C00000000L});
@@ -14886,7 +20980,7 @@
     public static final BitSet FOLLOW_ENUM_in_enumDeclaration342 = new BitSet(new long[]{0x0000000000000010L});
     public static final BitSet FOLLOW_Identifier_in_enumDeclaration344 = new BitSet(new long[]{0x0000002100000000L});
     public static final BitSet FOLLOW_32_in_enumDeclaration347 = new BitSet(new long[]{0x7F80000000000010L});
-    public static final BitSet FOLLOW_typeList_in_enumDeclaration349 = new BitSet(new long[]{0x0000002000000000L});
+    public static final BitSet FOLLOW_typeList_in_enumDeclaration349 = new BitSet(new long[]{0x0000002100000000L});
     public static final BitSet FOLLOW_enumBody_in_enumDeclaration353 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_37_in_enumBody365 = new BitSet(new long[]{0x0000004402000010L,0x0000000000000080L});
     public static final BitSet FOLLOW_enumConstants_in_enumBody367 = new BitSet(new long[]{0x0000004402000000L});
@@ -14897,8 +20991,8 @@
     public static final BitSet FOLLOW_34_in_enumConstants390 = new BitSet(new long[]{0x0000000000000010L,0x0000000000000080L});
     public static final BitSet FOLLOW_enumConstant_in_enumConstants392 = new BitSet(new long[]{0x0000000400000002L});
     public static final BitSet FOLLOW_annotations_in_enumConstant406 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_Identifier_in_enumConstant409 = new BitSet(new long[]{0x0000002000000002L,0x0000000000000002L});
-    public static final BitSet FOLLOW_arguments_in_enumConstant412 = new BitSet(new long[]{0x0000002000000002L});
+    public static final BitSet FOLLOW_Identifier_in_enumConstant409 = new BitSet(new long[]{0x0000002380000002L,0x0000000000000002L});
+    public static final BitSet FOLLOW_arguments_in_enumConstant412 = new BitSet(new long[]{0x0000002380000002L});
     public static final BitSet FOLLOW_classBody_in_enumConstant417 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_25_in_enumBodyDeclarations431 = new BitSet(new long[]{0x7FFFE1A24A000032L,0x0000000000000080L});
     public static final BitSet FOLLOW_classBodyDeclaration_in_enumBodyDeclarations434 = new BitSet(new long[]{0x7FFFE1A24A000032L,0x0000000000000080L});
@@ -14906,9 +21000,9 @@
     public static final BitSet FOLLOW_annotationTypeDeclaration_in_interfaceDeclaration454 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_39_in_normalInterfaceDeclaration466 = new BitSet(new long[]{0x0000000000000010L});
     public static final BitSet FOLLOW_Identifier_in_normalInterfaceDeclaration468 = new BitSet(new long[]{0x0000002280000000L});
-    public static final BitSet FOLLOW_typeParameters_in_normalInterfaceDeclaration470 = new BitSet(new long[]{0x0000002080000000L});
+    public static final BitSet FOLLOW_typeParameters_in_normalInterfaceDeclaration470 = new BitSet(new long[]{0x0000002280000000L});
     public static final BitSet FOLLOW_31_in_normalInterfaceDeclaration474 = new BitSet(new long[]{0x7F80000000000010L});
-    public static final BitSet FOLLOW_typeList_in_normalInterfaceDeclaration476 = new BitSet(new long[]{0x0000002000000000L});
+    public static final BitSet FOLLOW_typeList_in_normalInterfaceDeclaration476 = new BitSet(new long[]{0x0000002280000000L});
     public static final BitSet FOLLOW_interfaceBody_in_normalInterfaceDeclaration480 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_type_in_typeList492 = new BitSet(new long[]{0x0000000400000002L});
     public static final BitSet FOLLOW_34_in_typeList495 = new BitSet(new long[]{0x7F80000000000010L});
@@ -14920,9 +21014,9 @@
     public static final BitSet FOLLOW_interfaceBodyDeclaration_in_interfaceBody530 = new BitSet(new long[]{0x7FFFE1C24A000030L,0x0000000000000080L});
     public static final BitSet FOLLOW_38_in_interfaceBody533 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_25_in_classBodyDeclaration544 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_27_in_classBodyDeclaration549 = new BitSet(new long[]{0x0000002000000000L});
+    public static final BitSet FOLLOW_27_in_classBodyDeclaration549 = new BitSet(new long[]{0x0000002008000000L});
     public static final BitSet FOLLOW_block_in_classBodyDeclaration552 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_modifier_in_classBodyDeclaration557 = new BitSet(new long[]{0x7FFFE18248000030L,0x0000000000000080L});
+    public static final BitSet FOLLOW_modifier_in_classBodyDeclaration557 = new BitSet(new long[]{0x7FFFE1A24A000030L,0x0000000000000080L});
     public static final BitSet FOLLOW_memberDecl_in_classBodyDeclaration560 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_genericMethodOrConstructorDecl_in_memberDecl572 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_methodDeclaration_in_memberDecl577 = new BitSet(new long[]{0x0000000000000002L});
@@ -14964,16 +21058,16 @@
     public static final BitSet FOLLOW_constantDeclaratorsRest_in_interfaceMethodOrFieldRest784 = new BitSet(new long[]{0x0000000002000000L});
     public static final BitSet FOLLOW_25_in_interfaceMethodOrFieldRest786 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_interfaceMethodDeclaratorRest_in_interfaceMethodOrFieldRest791 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_formalParameters_in_methodDeclaratorRest803 = new BitSet(new long[]{0x00000A2002000000L});
+    public static final BitSet FOLLOW_formalParameters_in_methodDeclaratorRest803 = new BitSet(new long[]{0x00000A200A000000L});
     public static final BitSet FOLLOW_41_in_methodDeclaratorRest806 = new BitSet(new long[]{0x0000040000000000L});
-    public static final BitSet FOLLOW_42_in_methodDeclaratorRest808 = new BitSet(new long[]{0x00000A2002000000L});
+    public static final BitSet FOLLOW_42_in_methodDeclaratorRest808 = new BitSet(new long[]{0x00000A200A000000L});
     public static final BitSet FOLLOW_43_in_methodDeclaratorRest821 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_qualifiedNameList_in_methodDeclaratorRest823 = new BitSet(new long[]{0x0000002002000000L});
+    public static final BitSet FOLLOW_qualifiedNameList_in_methodDeclaratorRest823 = new BitSet(new long[]{0x000000200A000000L});
     public static final BitSet FOLLOW_methodBody_in_methodDeclaratorRest839 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_25_in_methodDeclaratorRest853 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_formalParameters_in_voidMethodDeclaratorRest875 = new BitSet(new long[]{0x0000082002000000L});
+    public static final BitSet FOLLOW_formalParameters_in_voidMethodDeclaratorRest875 = new BitSet(new long[]{0x000008200A000000L});
     public static final BitSet FOLLOW_43_in_voidMethodDeclaratorRest878 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_qualifiedNameList_in_voidMethodDeclaratorRest880 = new BitSet(new long[]{0x0000002002000000L});
+    public static final BitSet FOLLOW_qualifiedNameList_in_voidMethodDeclaratorRest880 = new BitSet(new long[]{0x000000200A000000L});
     public static final BitSet FOLLOW_methodBody_in_voidMethodDeclaratorRest896 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_25_in_voidMethodDeclaratorRest910 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_formalParameters_in_interfaceMethodDeclaratorRest932 = new BitSet(new long[]{0x00000A0002000000L});
@@ -14985,22 +21079,22 @@
     public static final BitSet FOLLOW_typeParameters_in_interfaceGenericMethodDecl960 = new BitSet(new long[]{0x7F80010000000010L});
     public static final BitSet FOLLOW_type_in_interfaceGenericMethodDecl963 = new BitSet(new long[]{0x0000000000000010L});
     public static final BitSet FOLLOW_40_in_interfaceGenericMethodDecl967 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_Identifier_in_interfaceGenericMethodDecl970 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_Identifier_in_interfaceGenericMethodDecl970 = new BitSet(new long[]{0x0000120000000000L,0x0000000000000002L});
     public static final BitSet FOLLOW_interfaceMethodDeclaratorRest_in_interfaceGenericMethodDecl980 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_formalParameters_in_voidInterfaceMethodDeclaratorRest992 = new BitSet(new long[]{0x0000080002000000L});
     public static final BitSet FOLLOW_43_in_voidInterfaceMethodDeclaratorRest995 = new BitSet(new long[]{0x0000000000000010L});
     public static final BitSet FOLLOW_qualifiedNameList_in_voidInterfaceMethodDeclaratorRest997 = new BitSet(new long[]{0x0000000002000000L});
     public static final BitSet FOLLOW_25_in_voidInterfaceMethodDeclaratorRest1001 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_formalParameters_in_constructorDeclaratorRest1013 = new BitSet(new long[]{0x0000082000000000L});
+    public static final BitSet FOLLOW_formalParameters_in_constructorDeclaratorRest1013 = new BitSet(new long[]{0x0000082008000000L});
     public static final BitSet FOLLOW_43_in_constructorDeclaratorRest1016 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_qualifiedNameList_in_constructorDeclaratorRest1018 = new BitSet(new long[]{0x0000002000000000L});
+    public static final BitSet FOLLOW_qualifiedNameList_in_constructorDeclaratorRest1018 = new BitSet(new long[]{0x0000002008000000L});
     public static final BitSet FOLLOW_methodBody_in_constructorDeclaratorRest1022 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_Identifier_in_constantDeclarator1033 = new BitSet(new long[]{0x0000120000000000L});
     public static final BitSet FOLLOW_constantDeclaratorRest_in_constantDeclarator1035 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_variableDeclarator_in_variableDeclarators1047 = new BitSet(new long[]{0x0000000400000002L});
     public static final BitSet FOLLOW_34_in_variableDeclarators1050 = new BitSet(new long[]{0x0000000000000010L});
     public static final BitSet FOLLOW_variableDeclarator_in_variableDeclarators1052 = new BitSet(new long[]{0x0000000400000002L});
-    public static final BitSet FOLLOW_Identifier_in_variableDeclarator1084 = new BitSet(new long[]{0x0000120000000002L});
+    public static final BitSet FOLLOW_Identifier_in_variableDeclarator1084 = new BitSet(new long[]{0x0000120000000000L});
     public static final BitSet FOLLOW_variableDeclaratorRest_in_variableDeclarator1088 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_41_in_variableDeclaratorRest1106 = new BitSet(new long[]{0x0000040000000000L});
     public static final BitSet FOLLOW_42_in_variableDeclaratorRest1108 = new BitSet(new long[]{0x0000120000000002L});
@@ -15159,36 +21253,36 @@
     public static final BitSet FOLLOW_variableDeclarators_in_localVariableDeclaration2376 = new BitSet(new long[]{0x0000000002000000L});
     public static final BitSet FOLLOW_25_in_localVariableDeclaration2378 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_block_in_statement2390 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_73_in_statement2398 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_73_in_statement2398 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_expression_in_statement2400 = new BitSet(new long[]{0x0000000002000000L,0x0000000000000400L});
-    public static final BitSet FOLLOW_74_in_statement2403 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_74_in_statement2403 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_expression_in_statement2405 = new BitSet(new long[]{0x0000000002000000L});
     public static final BitSet FOLLOW_25_in_statement2409 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_75_in_statement2417 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_parExpression_in_statement2419 = new BitSet(new long[]{0x7F88012202000FD0L,0x0007E60000FDEA73L});
+    public static final BitSet FOLLOW_parExpression_in_statement2419 = new BitSet(new long[]{0x7FFFE1A24A000FF0L,0x0007E60000FDEAF3L});
     public static final BitSet FOLLOW_statement_in_statement2421 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001000L});
-    public static final BitSet FOLLOW_76_in_statement2431 = new BitSet(new long[]{0x7F88012202000FD0L,0x0007E60000FDEA73L});
+    public static final BitSet FOLLOW_76_in_statement2431 = new BitSet(new long[]{0x7FFFE1A24A000FF0L,0x0007E60000FDEAF3L});
     public static final BitSet FOLLOW_statement_in_statement2433 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_77_in_statement2443 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_65_in_statement2445 = new BitSet(new long[]{0x7F82010202000FD0L,0x0007E600000000F3L});
+    public static final BitSet FOLLOW_65_in_statement2445 = new BitSet(new long[]{0x7F82012202000FD0L,0x0007E600000000F3L});
     public static final BitSet FOLLOW_forControl_in_statement2447 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_66_in_statement2449 = new BitSet(new long[]{0x7F88012202000FD0L,0x0007E60000FDEA73L});
+    public static final BitSet FOLLOW_66_in_statement2449 = new BitSet(new long[]{0x7FFFE1A24A000FF0L,0x0007E60000FDEAF3L});
     public static final BitSet FOLLOW_statement_in_statement2451 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_78_in_statement2459 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_parExpression_in_statement2461 = new BitSet(new long[]{0x7F88012202000FD0L,0x0007E60000FDEA73L});
+    public static final BitSet FOLLOW_parExpression_in_statement2461 = new BitSet(new long[]{0x7FFFE1A24A000FF0L,0x0007E60000FDEAF3L});
     public static final BitSet FOLLOW_statement_in_statement2463 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_79_in_statement2471 = new BitSet(new long[]{0x7F88012202000FD0L,0x0007E60000FDEA73L});
+    public static final BitSet FOLLOW_79_in_statement2471 = new BitSet(new long[]{0x7FFFE1A24A000FF0L,0x0007E60000FDEAF3L});
     public static final BitSet FOLLOW_statement_in_statement2473 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
     public static final BitSet FOLLOW_78_in_statement2475 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
     public static final BitSet FOLLOW_parExpression_in_statement2477 = new BitSet(new long[]{0x0000000002000000L});
     public static final BitSet FOLLOW_25_in_statement2479 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_80_in_statement2487 = new BitSet(new long[]{0x0000002000000000L});
+    public static final BitSet FOLLOW_80_in_statement2487 = new BitSet(new long[]{0x0000002008000000L});
     public static final BitSet FOLLOW_block_in_statement2489 = new BitSet(new long[]{0x0000000000000000L,0x0000000001020000L});
     public static final BitSet FOLLOW_catches_in_statement2499 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
-    public static final BitSet FOLLOW_81_in_statement2501 = new BitSet(new long[]{0x0000002000000000L});
+    public static final BitSet FOLLOW_81_in_statement2501 = new BitSet(new long[]{0x0000002008000000L});
     public static final BitSet FOLLOW_block_in_statement2503 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_catches_in_statement2513 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_81_in_statement2523 = new BitSet(new long[]{0x0000002000000000L});
+    public static final BitSet FOLLOW_81_in_statement2523 = new BitSet(new long[]{0x0000002008000000L});
     public static final BitSet FOLLOW_block_in_statement2525 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_82_in_statement2541 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
     public static final BitSet FOLLOW_parExpression_in_statement2543 = new BitSet(new long[]{0x0000002000000000L});
@@ -15196,12 +21290,12 @@
     public static final BitSet FOLLOW_switchBlockStatementGroups_in_statement2547 = new BitSet(new long[]{0x0000004000000000L});
     public static final BitSet FOLLOW_38_in_statement2549 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_51_in_statement2557 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_parExpression_in_statement2559 = new BitSet(new long[]{0x0000002000000000L});
+    public static final BitSet FOLLOW_parExpression_in_statement2559 = new BitSet(new long[]{0x0000002008000000L});
     public static final BitSet FOLLOW_block_in_statement2561 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_83_in_statement2569 = new BitSet(new long[]{0x7F80010202000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_83_in_statement2569 = new BitSet(new long[]{0x7F80012202000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_expression_in_statement2571 = new BitSet(new long[]{0x0000000002000000L});
     public static final BitSet FOLLOW_25_in_statement2574 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_84_in_statement2582 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_84_in_statement2582 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_expression_in_statement2584 = new BitSet(new long[]{0x0000000002000000L});
     public static final BitSet FOLLOW_25_in_statement2586 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_85_in_statement2594 = new BitSet(new long[]{0x0000000002000010L});
@@ -15215,13 +21309,13 @@
     public static final BitSet FOLLOW_statementExpression_in_statement2641 = new BitSet(new long[]{0x0000000002000000L});
     public static final BitSet FOLLOW_25_in_statement2643 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_Identifier_in_statement2651 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
-    public static final BitSet FOLLOW_74_in_statement2653 = new BitSet(new long[]{0x7F88012202000FD0L,0x0007E60000FDEA73L});
+    public static final BitSet FOLLOW_74_in_statement2653 = new BitSet(new long[]{0x7FFFE1A24A000FF0L,0x0007E60000FDEAF3L});
     public static final BitSet FOLLOW_statement_in_statement2655 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_87_in_modifyStatement2675 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
     public static final BitSet FOLLOW_parExpression_in_modifyStatement2677 = new BitSet(new long[]{0x0000002000000000L});
-    public static final BitSet FOLLOW_37_in_modifyStatement2684 = new BitSet(new long[]{0x7F80014200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_37_in_modifyStatement2684 = new BitSet(new long[]{0x7F80016200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_expression_in_modifyStatement2692 = new BitSet(new long[]{0x0000004400000000L});
-    public static final BitSet FOLLOW_34_in_modifyStatement2705 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_34_in_modifyStatement2705 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_expression_in_modifyStatement2709 = new BitSet(new long[]{0x0000004400000000L});
     public static final BitSet FOLLOW_38_in_modifyStatement2728 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_catchClause_in_catches2752 = new BitSet(new long[]{0x0000000000000002L,0x0000000001000000L});
@@ -15229,7 +21323,7 @@
     public static final BitSet FOLLOW_88_in_catchClause2769 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
     public static final BitSet FOLLOW_65_in_catchClause2771 = new BitSet(new long[]{0x7F82000000000010L,0x0000000000000080L});
     public static final BitSet FOLLOW_formalParameter_in_catchClause2773 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_66_in_catchClause2775 = new BitSet(new long[]{0x0000002000000000L});
+    public static final BitSet FOLLOW_66_in_catchClause2775 = new BitSet(new long[]{0x0000002008000000L});
     public static final BitSet FOLLOW_block_in_catchClause2777 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_variableModifier_in_formalParameter2788 = new BitSet(new long[]{0x7F82000000000010L,0x0000000000000080L});
     public static final BitSet FOLLOW_type_in_formalParameter2791 = new BitSet(new long[]{0x0000000000000010L});
@@ -15237,7 +21331,7 @@
     public static final BitSet FOLLOW_switchBlockStatementGroup_in_switchBlockStatementGroups2807 = new BitSet(new long[]{0x0000000000000002L,0x0000000002000100L});
     public static final BitSet FOLLOW_switchLabel_in_switchBlockStatementGroup2821 = new BitSet(new long[]{0x7FFFE1A24A000FF2L,0x0007E60000FDEAF3L});
     public static final BitSet FOLLOW_blockStatement_in_switchBlockStatementGroup2823 = new BitSet(new long[]{0x7FFFE1A24A000FF2L,0x0007E60000FDEAF3L});
-    public static final BitSet FOLLOW_89_in_switchLabel2836 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_89_in_switchLabel2836 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_constantExpression_in_switchLabel2838 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
     public static final BitSet FOLLOW_74_in_switchLabel2840 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_89_in_switchLabel2847 = new BitSet(new long[]{0x0000000000000010L});
@@ -15245,13 +21339,13 @@
     public static final BitSet FOLLOW_74_in_switchLabel2851 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_72_in_switchLabel2858 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
     public static final BitSet FOLLOW_74_in_switchLabel2860 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_34_in_moreStatementExpressions2873 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_34_in_moreStatementExpressions2873 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_statementExpression_in_moreStatementExpressions2875 = new BitSet(new long[]{0x0000000400000002L});
     public static final BitSet FOLLOW_forVarControl_in_forControl2896 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_forInit_in_forControl2901 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_forControl2904 = new BitSet(new long[]{0x7F80010202000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_25_in_forControl2904 = new BitSet(new long[]{0x7F80012202000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_expression_in_forControl2906 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_forControl2909 = new BitSet(new long[]{0x7F80010200000FD2L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_25_in_forControl2909 = new BitSet(new long[]{0x7F82012200000FD2L,0x0007E600000000F3L});
     public static final BitSet FOLLOW_forUpdate_in_forControl2911 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_variableModifier_in_forInit2949 = new BitSet(new long[]{0x7F82000000000010L,0x0000000000000080L});
     public static final BitSet FOLLOW_type_in_forInit2952 = new BitSet(new long[]{0x0000000000000010L});
@@ -15260,19 +21354,19 @@
     public static final BitSet FOLLOW_variableModifier_in_forVarControl2971 = new BitSet(new long[]{0x7F82000000000010L,0x0000000000000080L});
     public static final BitSet FOLLOW_type_in_forVarControl2974 = new BitSet(new long[]{0x0000000000000010L});
     public static final BitSet FOLLOW_Identifier_in_forVarControl2976 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
-    public static final BitSet FOLLOW_74_in_forVarControl2978 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_74_in_forVarControl2978 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_expression_in_forVarControl2980 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_expressionList_in_forUpdate2991 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_65_in_parExpression3004 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_65_in_parExpression3004 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_expression_in_parExpression3006 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
     public static final BitSet FOLLOW_66_in_parExpression3008 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_expression_in_expressionList3025 = new BitSet(new long[]{0x0000000400000002L});
-    public static final BitSet FOLLOW_34_in_expressionList3028 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_34_in_expressionList3028 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_expression_in_expressionList3030 = new BitSet(new long[]{0x0000000400000002L});
     public static final BitSet FOLLOW_expression_in_statementExpression3046 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_expression_in_constantExpression3058 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_conditionalExpression_in_expression3070 = new BitSet(new long[]{0x0000100A00000002L,0x00000003FC000000L});
-    public static final BitSet FOLLOW_assignmentOperator_in_expression3073 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_assignmentOperator_in_expression3073 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_expression_in_expression3075 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_44_in_assignmentOperator3089 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_90_in_assignmentOperator3099 = new BitSet(new long[]{0x0000000000000002L});
@@ -15294,33 +21388,33 @@
     public static final BitSet FOLLOW_35_in_assignmentOperator3211 = new BitSet(new long[]{0x0000100000000000L});
     public static final BitSet FOLLOW_44_in_assignmentOperator3213 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_conditionalOrExpression_in_conditionalExpression3229 = new BitSet(new long[]{0x8000000000000002L});
-    public static final BitSet FOLLOW_63_in_conditionalExpression3233 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_63_in_conditionalExpression3233 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_expression_in_conditionalExpression3235 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
-    public static final BitSet FOLLOW_74_in_conditionalExpression3237 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_74_in_conditionalExpression3237 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_expression_in_conditionalExpression3239 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_conditionalAndExpression_in_conditionalOrExpression3258 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_98_in_conditionalOrExpression3262 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_98_in_conditionalOrExpression3262 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_conditionalAndExpression_in_conditionalOrExpression3264 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
     public static final BitSet FOLLOW_inclusiveOrExpression_in_conditionalAndExpression3283 = new BitSet(new long[]{0x0000000000000002L,0x0000000800000000L});
-    public static final BitSet FOLLOW_99_in_conditionalAndExpression3287 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_99_in_conditionalAndExpression3287 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_inclusiveOrExpression_in_conditionalAndExpression3289 = new BitSet(new long[]{0x0000000000000002L,0x0000000800000000L});
     public static final BitSet FOLLOW_exclusiveOrExpression_in_inclusiveOrExpression3308 = new BitSet(new long[]{0x0000000000000002L,0x0000001000000000L});
-    public static final BitSet FOLLOW_100_in_inclusiveOrExpression3312 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_100_in_inclusiveOrExpression3312 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_exclusiveOrExpression_in_inclusiveOrExpression3314 = new BitSet(new long[]{0x0000000000000002L,0x0000001000000000L});
     public static final BitSet FOLLOW_andExpression_in_exclusiveOrExpression3333 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
-    public static final BitSet FOLLOW_101_in_exclusiveOrExpression3337 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_101_in_exclusiveOrExpression3337 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_andExpression_in_exclusiveOrExpression3339 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
     public static final BitSet FOLLOW_equalityExpression_in_andExpression3358 = new BitSet(new long[]{0x0000001000000002L});
-    public static final BitSet FOLLOW_36_in_andExpression3362 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_36_in_andExpression3362 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_equalityExpression_in_andExpression3364 = new BitSet(new long[]{0x0000001000000002L});
     public static final BitSet FOLLOW_instanceOfExpression_in_equalityExpression3383 = new BitSet(new long[]{0x0000000000000002L,0x000000C000000000L});
-    public static final BitSet FOLLOW_set_in_equalityExpression3387 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_set_in_equalityExpression3387 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_instanceOfExpression_in_equalityExpression3395 = new BitSet(new long[]{0x0000000000000002L,0x000000C000000000L});
     public static final BitSet FOLLOW_relationalExpression_in_instanceOfExpression3414 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
     public static final BitSet FOLLOW_104_in_instanceOfExpression3417 = new BitSet(new long[]{0x7F80000000000010L});
     public static final BitSet FOLLOW_type_in_instanceOfExpression3419 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_shiftExpression_in_relationalExpression3437 = new BitSet(new long[]{0x0000000A00000002L});
-    public static final BitSet FOLLOW_relationalOp_in_relationalExpression3441 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_relationalOp_in_relationalExpression3441 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_shiftExpression_in_relationalExpression3443 = new BitSet(new long[]{0x0000000A00000002L});
     public static final BitSet FOLLOW_33_in_relationalOp3459 = new BitSet(new long[]{0x0000100000000000L});
     public static final BitSet FOLLOW_44_in_relationalOp3461 = new BitSet(new long[]{0x0000000000000002L});
@@ -15329,7 +21423,7 @@
     public static final BitSet FOLLOW_33_in_relationalOp3471 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_35_in_relationalOp3475 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_additiveExpression_in_shiftExpression3492 = new BitSet(new long[]{0x0000000A00000002L});
-    public static final BitSet FOLLOW_shiftOp_in_shiftExpression3496 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_shiftOp_in_shiftExpression3496 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_additiveExpression_in_shiftExpression3498 = new BitSet(new long[]{0x0000000A00000002L});
     public static final BitSet FOLLOW_33_in_shiftOp3522 = new BitSet(new long[]{0x0000000200000000L});
     public static final BitSet FOLLOW_33_in_shiftOp3524 = new BitSet(new long[]{0x0000000000000002L});
@@ -15339,36 +21433,36 @@
     public static final BitSet FOLLOW_35_in_shiftOp3536 = new BitSet(new long[]{0x0000000800000000L});
     public static final BitSet FOLLOW_35_in_shiftOp3538 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_multiplicativeExpression_in_additiveExpression3556 = new BitSet(new long[]{0x0000000000000002L,0x0000060000000000L});
-    public static final BitSet FOLLOW_set_in_additiveExpression3560 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_set_in_additiveExpression3560 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_multiplicativeExpression_in_additiveExpression3568 = new BitSet(new long[]{0x0000000000000002L,0x0000060000000000L});
     public static final BitSet FOLLOW_unaryExpression_in_multiplicativeExpression3587 = new BitSet(new long[]{0x0000000020000002L,0x0000180000000000L});
-    public static final BitSet FOLLOW_set_in_multiplicativeExpression3591 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_set_in_multiplicativeExpression3591 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_unaryExpression_in_multiplicativeExpression3605 = new BitSet(new long[]{0x0000000020000002L,0x0000180000000000L});
-    public static final BitSet FOLLOW_105_in_unaryExpression3625 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_105_in_unaryExpression3625 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_unaryExpression_in_unaryExpression3627 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_106_in_unaryExpression3635 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_106_in_unaryExpression3635 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_unaryExpression_in_unaryExpression3637 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_109_in_unaryExpression3647 = new BitSet(new long[]{0x7F80010200000FD0L,0x0006000000000073L});
+    public static final BitSet FOLLOW_109_in_unaryExpression3647 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_primary_in_unaryExpression3649 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_110_in_unaryExpression3659 = new BitSet(new long[]{0x7F80010200000FD0L,0x0006000000000073L});
+    public static final BitSet FOLLOW_110_in_unaryExpression3659 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_primary_in_unaryExpression3661 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_unaryExpressionNotPlusMinus_in_unaryExpression3671 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_111_in_unaryExpressionNotPlusMinus3690 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_111_in_unaryExpressionNotPlusMinus3690 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_unaryExpression_in_unaryExpressionNotPlusMinus3692 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_112_in_unaryExpressionNotPlusMinus3701 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_112_in_unaryExpressionNotPlusMinus3701 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_unaryExpression_in_unaryExpressionNotPlusMinus3703 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_castExpression_in_unaryExpressionNotPlusMinus3713 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_primary_in_unaryExpressionNotPlusMinus3723 = new BitSet(new long[]{0x0000020010000002L,0x0000600000000000L});
     public static final BitSet FOLLOW_selector_in_unaryExpressionNotPlusMinus3725 = new BitSet(new long[]{0x0000020010000002L,0x0000600000000000L});
     public static final BitSet FOLLOW_set_in_unaryExpressionNotPlusMinus3728 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_65_in_castExpression3751 = new BitSet(new long[]{0x7F80000000000000L});
+    public static final BitSet FOLLOW_65_in_castExpression3751 = new BitSet(new long[]{0x7F80000000000010L});
     public static final BitSet FOLLOW_primitiveType_in_castExpression3753 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_66_in_castExpression3755 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_66_in_castExpression3755 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_unaryExpression_in_castExpression3757 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_65_in_castExpression3766 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_65_in_castExpression3766 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_type_in_castExpression3769 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
     public static final BitSet FOLLOW_expression_in_castExpression3773 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_66_in_castExpression3776 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007800000000073L});
+    public static final BitSet FOLLOW_66_in_castExpression3776 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_unaryExpressionNotPlusMinus_in_castExpression3778 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_parExpression_in_primary3795 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_nonWildcardTypeArguments_in_primary3805 = new BitSet(new long[]{0x0000000000000010L,0x0002000000000001L});
@@ -15400,7 +21494,7 @@
     public static final BitSet FOLLOW_42_in_identifierSuffix3954 = new BitSet(new long[]{0x0000020010000000L});
     public static final BitSet FOLLOW_28_in_identifierSuffix3958 = new BitSet(new long[]{0x0000000040000000L});
     public static final BitSet FOLLOW_30_in_identifierSuffix3960 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_41_in_identifierSuffix3966 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_41_in_identifierSuffix3966 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_expression_in_identifierSuffix3968 = new BitSet(new long[]{0x0000040000000000L});
     public static final BitSet FOLLOW_42_in_identifierSuffix3970 = new BitSet(new long[]{0x0000020000000002L});
     public static final BitSet FOLLOW_arguments_in_identifierSuffix3983 = new BitSet(new long[]{0x0000000000000002L});
@@ -15415,9 +21509,9 @@
     public static final BitSet FOLLOW_arguments_in_identifierSuffix4033 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_28_in_identifierSuffix4043 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
     public static final BitSet FOLLOW_114_in_identifierSuffix4045 = new BitSet(new long[]{0x0000000200000010L});
-    public static final BitSet FOLLOW_nonWildcardTypeArguments_in_identifierSuffix4048 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_nonWildcardTypeArguments_in_identifierSuffix4048 = new BitSet(new long[]{0x0000000200000010L});
     public static final BitSet FOLLOW_innerCreator_in_identifierSuffix4052 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_nonWildcardTypeArguments_in_creator4064 = new BitSet(new long[]{0x7F80000000000010L});
+    public static final BitSet FOLLOW_nonWildcardTypeArguments_in_creator4064 = new BitSet(new long[]{0x7F80000200000010L});
     public static final BitSet FOLLOW_createdName_in_creator4067 = new BitSet(new long[]{0x0000020000000000L,0x0000000000000002L});
     public static final BitSet FOLLOW_arrayCreatorRest_in_creator4078 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_classCreatorRest_in_creator4082 = new BitSet(new long[]{0x0000000000000002L});
@@ -15427,21 +21521,21 @@
     public static final BitSet FOLLOW_Identifier_in_createdName4110 = new BitSet(new long[]{0x0000000210000002L});
     public static final BitSet FOLLOW_typeArguments_in_createdName4112 = new BitSet(new long[]{0x0000000010000002L});
     public static final BitSet FOLLOW_primitiveType_in_createdName4123 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_Identifier_in_innerCreator4135 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_Identifier_in_innerCreator4135 = new BitSet(new long[]{0x0000020000000000L,0x0000000000000002L});
     public static final BitSet FOLLOW_classCreatorRest_in_innerCreator4137 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_41_in_arrayCreatorRest4148 = new BitSet(new long[]{0x7F80050200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_41_in_arrayCreatorRest4148 = new BitSet(new long[]{0x7F80052200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_42_in_arrayCreatorRest4162 = new BitSet(new long[]{0x0000022000000000L});
     public static final BitSet FOLLOW_41_in_arrayCreatorRest4165 = new BitSet(new long[]{0x0000040000000000L});
     public static final BitSet FOLLOW_42_in_arrayCreatorRest4167 = new BitSet(new long[]{0x0000022000000000L});
     public static final BitSet FOLLOW_arrayInitializer_in_arrayCreatorRest4171 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_expression_in_arrayCreatorRest4185 = new BitSet(new long[]{0x0000040000000000L});
     public static final BitSet FOLLOW_42_in_arrayCreatorRest4187 = new BitSet(new long[]{0x0000020000000002L});
-    public static final BitSet FOLLOW_41_in_arrayCreatorRest4190 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_41_in_arrayCreatorRest4190 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_expression_in_arrayCreatorRest4192 = new BitSet(new long[]{0x0000040000000000L});
     public static final BitSet FOLLOW_42_in_arrayCreatorRest4194 = new BitSet(new long[]{0x0000020000000002L});
     public static final BitSet FOLLOW_41_in_arrayCreatorRest4199 = new BitSet(new long[]{0x0000040000000000L});
     public static final BitSet FOLLOW_42_in_arrayCreatorRest4201 = new BitSet(new long[]{0x0000020000000002L});
-    public static final BitSet FOLLOW_arguments_in_classCreatorRest4224 = new BitSet(new long[]{0x0000002000000002L});
+    public static final BitSet FOLLOW_arguments_in_classCreatorRest4224 = new BitSet(new long[]{0x0000002380000002L});
     public static final BitSet FOLLOW_classBody_in_classCreatorRest4226 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_nonWildcardTypeArguments_in_explicitGenericInvocation4239 = new BitSet(new long[]{0x0000000000000010L,0x0000000000000001L});
     public static final BitSet FOLLOW_explicitGenericInvocationSuffix_in_explicitGenericInvocation4241 = new BitSet(new long[]{0x0000000000000002L});
@@ -15462,77 +21556,77 @@
     public static final BitSet FOLLOW_superSuffix_in_selector4319 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_28_in_selector4326 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
     public static final BitSet FOLLOW_114_in_selector4328 = new BitSet(new long[]{0x0000000200000010L});
-    public static final BitSet FOLLOW_nonWildcardTypeArguments_in_selector4331 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_nonWildcardTypeArguments_in_selector4331 = new BitSet(new long[]{0x0000000200000010L});
     public static final BitSet FOLLOW_innerCreator_in_selector4335 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_41_in_selector4342 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_41_in_selector4342 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
     public static final BitSet FOLLOW_expression_in_selector4344 = new BitSet(new long[]{0x0000040000000000L});
     public static final BitSet FOLLOW_42_in_selector4346 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_arguments_in_superSuffix4358 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_28_in_superSuffix4365 = new BitSet(new long[]{0x0000000000000010L});
     public static final BitSet FOLLOW_Identifier_in_superSuffix4367 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000002L});
     public static final BitSet FOLLOW_arguments_in_superSuffix4370 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_65_in_arguments4386 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000077L});
+    public static final BitSet FOLLOW_65_in_arguments4386 = new BitSet(new long[]{0x7F82012200000FD0L,0x0007E600000000F7L});
     public static final BitSet FOLLOW_expressionList_in_arguments4388 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
     public static final BitSet FOLLOW_66_in_arguments4391 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_annotations_in_synpred170 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_methodDeclaration_in_synpred38577 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fieldDeclaration_in_synpred39582 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_28_in_synpred851389 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_Identifier_in_synpred851391 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_annotation_in_synpred1201893 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_classDeclaration_in_synpred1352123 = new BitSet(new long[]{0x0000000002000002L});
-    public static final BitSet FOLLOW_25_in_synpred1352125 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_interfaceDeclaration_in_synpred1372133 = new BitSet(new long[]{0x0000000002000002L});
-    public static final BitSet FOLLOW_25_in_synpred1372135 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_enumDeclaration_in_synpred1392143 = new BitSet(new long[]{0x0000000002000002L});
-    public static final BitSet FOLLOW_25_in_synpred1392145 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_localVariableDeclaration_in_synpred1442286 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_classOrInterfaceDeclaration_in_synpred1452291 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_76_in_synpred1502431 = new BitSet(new long[]{0x7F88012202000FD0L,0x0007E60000FDEA73L});
-    public static final BitSet FOLLOW_statement_in_synpred1502433 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_catches_in_synpred1552499 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
-    public static final BitSet FOLLOW_81_in_synpred1552501 = new BitSet(new long[]{0x0000002000000000L});
-    public static final BitSet FOLLOW_block_in_synpred1552503 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_catches_in_synpred1562513 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_89_in_synpred1762836 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
-    public static final BitSet FOLLOW_constantExpression_in_synpred1762838 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
-    public static final BitSet FOLLOW_74_in_synpred1762840 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_89_in_synpred1772847 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_enumConstantName_in_synpred1772849 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
-    public static final BitSet FOLLOW_74_in_synpred1772851 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forVarControl_in_synpred1792896 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_variableModifier_in_synpred1842949 = new BitSet(new long[]{0x7F82000000000010L,0x0000000000000080L});
-    public static final BitSet FOLLOW_type_in_synpred1842952 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_variableDeclarators_in_synpred1842954 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentOperator_in_synpred1873073 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
-    public static final BitSet FOLLOW_expression_in_synpred1873075 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_35_in_synpred1983193 = new BitSet(new long[]{0x0000000800000000L});
-    public static final BitSet FOLLOW_35_in_synpred1983195 = new BitSet(new long[]{0x0000100000000000L});
-    public static final BitSet FOLLOW_44_in_synpred1983197 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_relationalOp_in_synpred2083441 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
-    public static final BitSet FOLLOW_shiftExpression_in_synpred2083443 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_shiftOp_in_synpred2123496 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
-    public static final BitSet FOLLOW_additiveExpression_in_synpred2123498 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_35_in_synpred2143528 = new BitSet(new long[]{0x0000000800000000L});
-    public static final BitSet FOLLOW_35_in_synpred2143530 = new BitSet(new long[]{0x0000000800000000L});
-    public static final BitSet FOLLOW_35_in_synpred2143532 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_castExpression_in_synpred2263713 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_65_in_synpred2303751 = new BitSet(new long[]{0x7F80000000000000L});
-    public static final BitSet FOLLOW_primitiveType_in_synpred2303753 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_66_in_synpred2303755 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
-    public static final BitSet FOLLOW_unaryExpression_in_synpred2303757 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_type_in_synpred2313769 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_28_in_synpred2353836 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_Identifier_in_synpred2353838 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifierSuffix_in_synpred2363843 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_28_in_synpred2413896 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_Identifier_in_synpred2413898 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifierSuffix_in_synpred2423903 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_41_in_synpred2483966 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
-    public static final BitSet FOLLOW_expression_in_synpred2483968 = new BitSet(new long[]{0x0000040000000000L});
-    public static final BitSet FOLLOW_42_in_synpred2483970 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_41_in_synpred2644190 = new BitSet(new long[]{0x7F80010200000FD0L,0x0007E60000000073L});
-    public static final BitSet FOLLOW_expression_in_synpred2644192 = new BitSet(new long[]{0x0000040000000000L});
-    public static final BitSet FOLLOW_42_in_synpred2644194 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_annotations_in_synpred1_Java70 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_methodDeclaration_in_synpred38_Java577 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fieldDeclaration_in_synpred39_Java582 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_synpred85_Java1389 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_synpred85_Java1391 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_annotation_in_synpred120_Java1893 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_classDeclaration_in_synpred135_Java2123 = new BitSet(new long[]{0x0000000002000002L});
+    public static final BitSet FOLLOW_25_in_synpred135_Java2125 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_interfaceDeclaration_in_synpred137_Java2133 = new BitSet(new long[]{0x0000000002000002L});
+    public static final BitSet FOLLOW_25_in_synpred137_Java2135 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_enumDeclaration_in_synpred139_Java2143 = new BitSet(new long[]{0x0000000002000002L});
+    public static final BitSet FOLLOW_25_in_synpred139_Java2145 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_localVariableDeclaration_in_synpred144_Java2286 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_classOrInterfaceDeclaration_in_synpred145_Java2291 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_76_in_synpred150_Java2431 = new BitSet(new long[]{0x7FFFE1A24A000FF0L,0x0007E60000FDEAF3L});
+    public static final BitSet FOLLOW_statement_in_synpred150_Java2433 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_catches_in_synpred155_Java2499 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+    public static final BitSet FOLLOW_81_in_synpred155_Java2501 = new BitSet(new long[]{0x0000002008000000L});
+    public static final BitSet FOLLOW_block_in_synpred155_Java2503 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_catches_in_synpred156_Java2513 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_89_in_synpred176_Java2836 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_constantExpression_in_synpred176_Java2838 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_74_in_synpred176_Java2840 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_89_in_synpred177_Java2847 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_enumConstantName_in_synpred177_Java2849 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_74_in_synpred177_Java2851 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forVarControl_in_synpred179_Java2896 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_variableModifier_in_synpred184_Java2949 = new BitSet(new long[]{0x7F82000000000010L,0x0000000000000080L});
+    public static final BitSet FOLLOW_type_in_synpred184_Java2952 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_variableDeclarators_in_synpred184_Java2954 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_assignmentOperator_in_synpred187_Java3073 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_expression_in_synpred187_Java3075 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_35_in_synpred198_Java3193 = new BitSet(new long[]{0x0000000800000000L});
+    public static final BitSet FOLLOW_35_in_synpred198_Java3195 = new BitSet(new long[]{0x0000100000000000L});
+    public static final BitSet FOLLOW_44_in_synpred198_Java3197 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_relationalOp_in_synpred208_Java3441 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_shiftExpression_in_synpred208_Java3443 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_shiftOp_in_synpred212_Java3496 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_additiveExpression_in_synpred212_Java3498 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_35_in_synpred214_Java3528 = new BitSet(new long[]{0x0000000800000000L});
+    public static final BitSet FOLLOW_35_in_synpred214_Java3530 = new BitSet(new long[]{0x0000000800000000L});
+    public static final BitSet FOLLOW_35_in_synpred214_Java3532 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_castExpression_in_synpred226_Java3713 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_65_in_synpred230_Java3751 = new BitSet(new long[]{0x7F80000000000010L});
+    public static final BitSet FOLLOW_primitiveType_in_synpred230_Java3753 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_66_in_synpred230_Java3755 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_unaryExpression_in_synpred230_Java3757 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_type_in_synpred231_Java3769 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_synpred235_Java3836 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_synpred235_Java3838 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifierSuffix_in_synpred236_Java3843 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_synpred241_Java3896 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_synpred241_Java3898 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifierSuffix_in_synpred242_Java3903 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_41_in_synpred248_Java3966 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_expression_in_synpred248_Java3968 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_synpred248_Java3970 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_41_in_synpred264_Java4190 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
+    public static final BitSet FOLLOW_expression_in_synpred264_Java4192 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_synpred264_Java4194 = new BitSet(new long[]{0x0000000000000002L});
 
 }
\ No newline at end of file

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

Modified: labs/jbossrules/branches/etirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g
===================================================================
--- labs/jbossrules/branches/etirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g	2008-11-13 00:09:49 UTC (rev 23848)
+++ labs/jbossrules/branches/etirelli/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g	2008-11-13 03:06:09 UTC (rev 23849)
@@ -106,11 +106,11 @@
 	public void reportError(RecognitionException ex) {
 	        // if we've already reported an error and have not matched a token
                 // yet successfully, don't report any errors.
-                if ( errorRecovery ) {
+                if ( state.errorRecovery ) {
                         //System.err.print("[SPURIOUS] ");
                         return;
                 }
-                errorRecovery = true;
+                state.errorRecovery = true;
 
 		errors.add( ex ); 
 	}

Modified: labs/jbossrules/branches/etirelli/drools-compiler/src/test/java/org/drools/lang/Tree2TestDRL.java
===================================================================
--- labs/jbossrules/branches/etirelli/drools-compiler/src/test/java/org/drools/lang/Tree2TestDRL.java	2008-11-13 00:09:49 UTC (rev 23848)
+++ labs/jbossrules/branches/etirelli/drools-compiler/src/test/java/org/drools/lang/Tree2TestDRL.java	2008-11-13 03:06:09 UTC (rev 23849)
@@ -1,170 +1,177 @@
-// $ANTLR 3.0.1 /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g 2008-08-26 16:10:09
+// $ANTLR 3.1.1 /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g 2008-11-13 00:21:41
 
 	package org.drools.lang;
 
 
-import org.antlr.runtime.BitSet;
-import org.antlr.runtime.EarlyExitException;
-import org.antlr.runtime.MismatchedSetException;
-import org.antlr.runtime.NoViableAltException;
-import org.antlr.runtime.RecognitionException;
-import org.antlr.runtime.Token;
-import org.antlr.runtime.tree.TreeNodeStream;
-import org.antlr.runtime.tree.TreeParser;
+import org.antlr.runtime.*;
+import org.antlr.runtime.tree.*;import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
 
 public class Tree2TestDRL extends TreeParser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "VT_COMPILATION_UNIT", "VT_FUNCTION_IMPORT", "VT_FACT", "VT_CONSTRAINTS", "VT_LABEL", "VT_QUERY_ID", "VT_TEMPLATE_ID", "VT_TYPE_DECLARE_ID", "VT_RULE_ID", "VT_ENTRYPOINT_ID", "VT_SLOT_ID", "VT_SLOT", "VT_RULE_ATTRIBUTES", "VT_RHS_CHUNK", "VT_CURLY_CHUNK", "VT_SQUARE_CHUNK", "VT_PAREN_CHUNK", "VT_BEHAVIOR", "VT_AND_IMPLICIT", "VT_AND_PREFIX", "VT_OR_PREFIX", "VT_AND_INFIX", "VT_OR_INFIX", "VT_ACCUMULATE_INIT_CLAUSE", "VT_ACCUMULATE_ID_CLAUSE", "VT_FROM_SOURCE", "VT_EXPRESSION_CHAIN", "VT_PATTERN", "VT_FACT_BINDING", "VT_FACT_OR", "VT_BIND_FIELD", "VT_FIELD", "VT_ACCESSOR_PATH", "VT_ACCESSOR_ELEMENT", "VT_DATA_TYPE", "VT_PATTERN_TYPE", "VT_PACKAGE_ID", "VT_IMPORT_ID", "VT_GLOBAL_ID", "VT_FUNCTION_ID", "VT_PARAM_LIST", "VK_DATE_EFFECTIVE", "VK_DATE_EXPIRES", "VK_LOCK_ON_ACTIVE", "VK_NO_LOOP", "VK_AUTO_FOCUS", "VK_ACTIVATION_GROUP", "VK_AGENDA_GROUP", "VK_RULEFLOW_GROUP", "VK_DURATION", "VK_DIALECT", "VK_SALIENCE", "VK_ENABLED", "!
 VK_ATTRIBUTES", "VK_RULE", "VK_IMPORT", "VK_PACKAGE", "VK_TEMPLATE", "VK_QUERY", "VK_DECLARE", "VK_FUNCTION", "VK_GLOBAL", "VK_EVAL", "VK_CONTAINS", "VK_MATCHES", "VK_EXCLUDES", "VK_SOUNDSLIKE", "VK_MEMBEROF", "VK_ENTRY_POINT", "VK_NOT", "VK_IN", "VK_OR", "VK_AND", "VK_EXISTS", "VK_FORALL", "VK_ACTION", "VK_REVERSE", "VK_RESULT", "SEMICOLON", "ID", "DOT", "DOT_STAR", "END", "STRING", "LEFT_PAREN", "COMMA", "RIGHT_PAREN", "AT", "COLON", "EQUALS", "WHEN", "BOOL", "INT", "DOUBLE_PIPE", "DOUBLE_AMPER", "FROM", "OVER", "ACCUMULATE", "INIT", "COLLECT", "ARROW", "EQUAL", "GREATER", "GREATER_EQUAL", "LESS", "LESS_EQUAL", "NOT_EQUAL", "GRAVE_ACCENT", "FLOAT", "NULL", "LEFT_SQUARE", "RIGHT_SQUARE", "THEN", "LEFT_CURLY", "RIGHT_CURLY", "MISC", "EOL", "WS", "EscapeSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "VT_COMPILATION_UNIT", "VT_FUNCTION_IMPORT", "VT_FACT", "VT_CONSTRAINTS", "VT_LABEL", "VT_QUERY_ID", "VT_TEMPLATE_ID", "VT_TYPE_DECLARE_ID", "VT_RULE_ID", "VT_ENTRYPOINT_ID", "VT_SLOT_ID", "VT_SLOT", "VT_RULE_ATTRIBUTES", "VT_RHS_CHUNK", "VT_CURLY_CHUNK", "VT_SQUARE_CHUNK", "VT_PAREN_CHUNK", "VT_BEHAVIOR", "VT_AND_IMPLICIT", "VT_AND_PREFIX", "VT_OR_PREFIX", "VT_AND_INFIX", "VT_OR_INFIX", "VT_ACCUMULATE_INIT_CLAUSE", "VT_ACCUMULATE_ID_CLAUSE", "VT_FROM_SOURCE", "VT_EXPRESSION_CHAIN", "VT_PATTERN", "VT_FACT_BINDING", "VT_FACT_OR", "VT_BIND_FIELD", "VT_FIELD", "VT_ACCESSOR_PATH", "VT_ACCESSOR_ELEMENT", "VT_DATA_TYPE", "VT_PATTERN_TYPE", "VT_PACKAGE_ID", "VT_IMPORT_ID", "VT_GLOBAL_ID", "VT_FUNCTION_ID", "VT_PARAM_LIST", "VK_DATE_EFFECTIVE", "VK_DATE_EXPIRES", "VK_LOCK_ON_ACTIVE", "VK_NO_LOOP", "VK_AUTO_FOCUS", "VK_ACTIVATION_GROUP", "VK_AGENDA_GROUP", "VK_RULEFLOW_GROUP", "VK_DURATION", "VK_DIALECT", "VK_SALIENCE", "VK_ENABLED", "!
 VK_ATTRIBUTES", "VK_RULE", "VK_EXTEND", "VK_IMPORT", "VK_PACKAGE", "VK_TEMPLATE", "VK_QUERY", "VK_DECLARE", "VK_FUNCTION", "VK_GLOBAL", "VK_EVAL", "VK_CONTAINS", "VK_MATCHES", "VK_EXCLUDES", "VK_SOUNDSLIKE", "VK_MEMBEROF", "VK_ENTRY_POINT", "VK_NOT", "VK_IN", "VK_OR", "VK_AND", "VK_EXISTS", "VK_FORALL", "VK_ACTION", "VK_REVERSE", "VK_RESULT", "VK_OPERATOR", "SEMICOLON", "ID", "DOT", "DOT_STAR", "END", "STRING", "LEFT_PAREN", "COMMA", "RIGHT_PAREN", "AT", "COLON", "EQUALS", "WHEN", "BOOL", "INT", "DOUBLE_PIPE", "DOUBLE_AMPER", "FROM", "OVER", "ACCUMULATE", "INIT", "COLLECT", "ARROW", "EQUAL", "GREATER", "GREATER_EQUAL", "LESS", "LESS_EQUAL", "NOT_EQUAL", "FLOAT", "NULL", "LEFT_SQUARE", "RIGHT_SQUARE", "THEN", "LEFT_CURLY", "RIGHT_CURLY", "MISC", "EOL", "WS", "EscapeSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "GRAVE_ACCENT", "TILDE", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT"
     };
-    public static final int COMMA=89;
+    public static final int COMMA=91;
     public static final int VT_PATTERN_TYPE=39;
     public static final int VT_ACCUMULATE_ID_CLAUSE=28;
     public static final int VK_DIALECT=54;
-    public static final int VK_FUNCTION=64;
-    public static final int END=86;
-    public static final int HexDigit=123;
+    public static final int VK_FUNCTION=65;
+    public static final int END=88;
+    public static final int HexDigit=124;
     public static final int VK_ATTRIBUTES=57;
     public static final int VT_EXPRESSION_CHAIN=30;
-    public static final int MISC=119;
+    public static final int MISC=120;
     public static final int VT_AND_PREFIX=23;
-    public static final int VK_QUERY=62;
-    public static final int THEN=116;
+    public static final int VK_QUERY=63;
+    public static final int THEN=117;
     public static final int VK_AUTO_FOCUS=49;
-    public static final int DOT=84;
-    public static final int VK_IMPORT=59;
+    public static final int TILDE=128;
+    public static final int DOT=86;
+    public static final int VK_IMPORT=60;
     public static final int VT_SLOT=15;
     public static final int VT_PACKAGE_ID=40;
-    public static final int LEFT_SQUARE=114;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=126;
+    public static final int LEFT_SQUARE=115;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=129;
     public static final int VT_DATA_TYPE=38;
-    public static final int VK_MATCHES=68;
+    public static final int VK_MATCHES=69;
     public static final int VT_FACT=6;
-    public static final int LEFT_CURLY=117;
-    public static final int AT=91;
-    public static final int LEFT_PAREN=88;
-    public static final int DOUBLE_AMPER=98;
+    public static final int LEFT_CURLY=118;
+    public static final int AT=93;
+    public static final int LEFT_PAREN=90;
+    public static final int DOUBLE_AMPER=100;
     public static final int VT_QUERY_ID=9;
     public static final int VT_ACCESSOR_PATH=36;
     public static final int VT_LABEL=8;
-    public static final int WHEN=94;
+    public static final int WHEN=96;
     public static final int VT_ENTRYPOINT_ID=13;
-    public static final int VK_SOUNDSLIKE=70;
+    public static final int VK_SOUNDSLIKE=71;
     public static final int VK_SALIENCE=55;
     public static final int VT_FIELD=35;
-    public static final int WS=121;
-    public static final int OVER=100;
-    public static final int STRING=87;
-    public static final int VK_AND=76;
+    public static final int WS=122;
+    public static final int OVER=102;
+    public static final int STRING=89;
+    public static final int VK_AND=77;
     public static final int VT_ACCESSOR_ELEMENT=37;
     public static final int VT_ACCUMULATE_INIT_CLAUSE=27;
-    public static final int VK_GLOBAL=65;
-    public static final int VK_REVERSE=80;
+    public static final int VK_GLOBAL=66;
+    public static final int VK_REVERSE=81;
     public static final int VT_BEHAVIOR=21;
-    public static final int GRAVE_ACCENT=111;
+    public static final int GRAVE_ACCENT=127;
     public static final int VK_DURATION=53;
     public static final int VT_SQUARE_CHUNK=19;
-    public static final int VK_FORALL=78;
+    public static final int VK_FORALL=79;
     public static final int VT_PAREN_CHUNK=20;
     public static final int VT_COMPILATION_UNIT=4;
-    public static final int COLLECT=103;
+    public static final int COLLECT=105;
     public static final int VK_ENABLED=56;
-    public static final int EQUALS=93;
-    public static final int VK_RESULT=81;
-    public static final int UnicodeEscape=124;
-    public static final int VK_PACKAGE=60;
+    public static final int EQUALS=95;
+    public static final int VK_RESULT=82;
+    public static final int UnicodeEscape=125;
+    public static final int VK_PACKAGE=61;
     public static final int VT_RULE_ID=12;
-    public static final int EQUAL=105;
+    public static final int EQUAL=107;
     public static final int VK_NO_LOOP=48;
-    public static final int SEMICOLON=82;
-    public static final int VK_TEMPLATE=61;
+    public static final int SEMICOLON=84;
+    public static final int VK_TEMPLATE=62;
     public static final int VT_AND_IMPLICIT=22;
-    public static final int NULL=113;
-    public static final int COLON=92;
-    public static final int MULTI_LINE_COMMENT=128;
+    public static final int NULL=114;
+    public static final int COLON=94;
+    public static final int MULTI_LINE_COMMENT=131;
     public static final int VT_RULE_ATTRIBUTES=16;
-    public static final int RIGHT_SQUARE=115;
+    public static final int RIGHT_SQUARE=116;
     public static final int VK_AGENDA_GROUP=51;
     public static final int VT_FACT_OR=33;
-    public static final int VK_NOT=73;
+    public static final int VK_NOT=74;
     public static final int VK_DATE_EXPIRES=46;
-    public static final int ARROW=104;
-    public static final int FLOAT=112;
-    public static final int INIT=102;
+    public static final int ARROW=106;
+    public static final int FLOAT=113;
+    public static final int INIT=104;
+    public static final int VK_EXTEND=59;
     public static final int VT_SLOT_ID=14;
     public static final int VT_CURLY_CHUNK=18;
     public static final int VT_OR_PREFIX=24;
-    public static final int DOUBLE_PIPE=97;
-    public static final int LESS=108;
+    public static final int DOUBLE_PIPE=99;
+    public static final int LESS=110;
     public static final int VT_TYPE_DECLARE_ID=11;
     public static final int VT_PATTERN=31;
     public static final int VK_DATE_EFFECTIVE=45;
-    public static final int EscapeSequence=122;
-    public static final int VK_EXISTS=77;
-    public static final int INT=96;
+    public static final int EscapeSequence=123;
+    public static final int VK_EXISTS=78;
+    public static final int INT=98;
     public static final int VT_BIND_FIELD=34;
     public static final int VK_RULE=58;
-    public static final int VK_EVAL=66;
-    public static final int GREATER=106;
+    public static final int VK_EVAL=67;
+    public static final int GREATER=108;
     public static final int VT_FACT_BINDING=32;
-    public static final int ID=83;
-    public static final int FROM=99;
-    public static final int NOT_EQUAL=110;
-    public static final int RIGHT_CURLY=118;
-    public static final int VK_ENTRY_POINT=72;
+    public static final int ID=85;
+    public static final int FROM=101;
+    public static final int NOT_EQUAL=112;
+    public static final int RIGHT_CURLY=119;
+    public static final int VK_OPERATOR=83;
+    public static final int VK_ENTRY_POINT=73;
     public static final int VT_PARAM_LIST=44;
     public static final int VT_AND_INFIX=25;
-    public static final int BOOL=95;
+    public static final int BOOL=97;
     public static final int VT_FROM_SOURCE=29;
-    public static final int VK_CONTAINS=67;
+    public static final int VK_CONTAINS=68;
     public static final int VK_LOCK_ON_ACTIVE=47;
     public static final int VT_FUNCTION_IMPORT=5;
-    public static final int VK_IN=74;
+    public static final int VK_IN=75;
     public static final int VT_RHS_CHUNK=17;
-    public static final int VK_MEMBEROF=71;
-    public static final int GREATER_EQUAL=107;
+    public static final int VK_MEMBEROF=72;
+    public static final int GREATER_EQUAL=109;
     public static final int VT_OR_INFIX=26;
-    public static final int DOT_STAR=85;
-    public static final int VK_OR=75;
+    public static final int DOT_STAR=87;
+    public static final int VK_OR=76;
     public static final int VT_GLOBAL_ID=42;
-    public static final int LESS_EQUAL=109;
-    public static final int ACCUMULATE=101;
+    public static final int LESS_EQUAL=111;
+    public static final int ACCUMULATE=103;
     public static final int VK_RULEFLOW_GROUP=52;
     public static final int VT_FUNCTION_ID=43;
     public static final int EOF=-1;
     public static final int VT_CONSTRAINTS=7;
     public static final int VT_IMPORT_ID=41;
-    public static final int EOL=120;
+    public static final int EOL=121;
     public static final int VK_ACTIVATION_GROUP=50;
-    public static final int OctalEscape=125;
-    public static final int VK_ACTION=79;
-    public static final int VK_EXCLUDES=69;
-    public static final int RIGHT_PAREN=90;
+    public static final int OctalEscape=126;
+    public static final int VK_ACTION=80;
+    public static final int VK_EXCLUDES=70;
+    public static final int RIGHT_PAREN=92;
     public static final int VT_TEMPLATE_ID=10;
-    public static final int VK_DECLARE=63;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=127;
+    public static final int VK_DECLARE=64;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=130;
 
+    // delegates
+    // delegators
+
+
         public Tree2TestDRL(TreeNodeStream input) {
-            super(input);
+            this(input, new RecognizerSharedState());
         }
+        public Tree2TestDRL(TreeNodeStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
         
 
-    public String[] getTokenNames() { return tokenNames; }
-    public String getGrammarFileName() { return "/Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g"; }
+    public String[] getTokenNames() { return Tree2TestDRL.tokenNames; }
+    public String getGrammarFileName() { return "/Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g"; }
 
 
 
-    // $ANTLR start compilation_unit
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:13:1: compilation_unit : ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) ;
+    // $ANTLR start "compilation_unit"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:13:1: compilation_unit : ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) ;
     public final void compilation_unit() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:14:2: ( ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:14:4: ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:14:2: ( ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:14:4: ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
             {
             match(input,VT_COMPILATION_UNIT,FOLLOW_VT_COMPILATION_UNIT_in_compilation_unit43); 
 
             if ( input.LA(1)==Token.DOWN ) {
                 match(input, Token.DOWN, null); 
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:14:26: ( package_statement )?
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:14:26: ( package_statement )?
                 int alt1=2;
                 int LA1_0 = input.LA(1);
 
@@ -173,38 +180,40 @@
                 }
                 switch (alt1) {
                     case 1 :
-                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:14:26: package_statement
+                        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:14:26: package_statement
                         {
                         pushFollow(FOLLOW_package_statement_in_compilation_unit45);
                         package_statement();
-                        _fsp--;
 
+                        state._fsp--;
 
+
                         }
                         break;
 
                 }
 
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:14:45: ( statement )*
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:14:45: ( statement )*
                 loop2:
                 do {
                     int alt2=2;
                     int LA2_0 = input.LA(1);
 
-                    if ( (LA2_0==VT_FUNCTION_IMPORT||(LA2_0>=VK_DATE_EFFECTIVE && LA2_0<=VK_ENABLED)||(LA2_0>=VK_RULE && LA2_0<=VK_IMPORT)||(LA2_0>=VK_TEMPLATE && LA2_0<=VK_GLOBAL)) ) {
+                    if ( (LA2_0==VT_FUNCTION_IMPORT||(LA2_0>=VK_DATE_EFFECTIVE && LA2_0<=VK_ENABLED)||LA2_0==VK_RULE||LA2_0==VK_IMPORT||(LA2_0>=VK_TEMPLATE && LA2_0<=VK_GLOBAL)) ) {
                         alt2=1;
                     }
 
 
                     switch (alt2) {
                 	case 1 :
-                	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:14:45: statement
+                	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:14:45: statement
                 	    {
                 	    pushFollow(FOLLOW_statement_in_compilation_unit48);
                 	    statement();
-                	    _fsp--;
 
+                	    state._fsp--;
 
+
                 	    }
                 	    break;
 
@@ -228,24 +237,25 @@
         }
         return ;
     }
-    // $ANTLR end compilation_unit
+    // $ANTLR end "compilation_unit"
 
 
-    // $ANTLR start package_statement
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:17:1: package_statement : ^( VK_PACKAGE package_id ) ;
+    // $ANTLR start "package_statement"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:17:1: package_statement : ^( VK_PACKAGE package_id ) ;
     public final void package_statement() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:18:2: ( ^( VK_PACKAGE package_id ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:18:4: ^( VK_PACKAGE package_id )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:18:2: ( ^( VK_PACKAGE package_id ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:18:4: ^( VK_PACKAGE package_id )
             {
             match(input,VK_PACKAGE,FOLLOW_VK_PACKAGE_in_package_statement63); 
 
             match(input, Token.DOWN, null); 
             pushFollow(FOLLOW_package_id_in_package_statement65);
             package_id();
-            _fsp--;
 
+            state._fsp--;
 
+
             match(input, Token.UP, null); 
 
             }
@@ -259,20 +269,20 @@
         }
         return ;
     }
-    // $ANTLR end package_statement
+    // $ANTLR end "package_statement"
 
 
-    // $ANTLR start package_id
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:21:1: package_id : ^( VT_PACKAGE_ID ( ID )+ ) ;
+    // $ANTLR start "package_id"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:21:1: package_id : ^( VT_PACKAGE_ID ( ID )+ ) ;
     public final void package_id() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:22:2: ( ^( VT_PACKAGE_ID ( ID )+ ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:22:4: ^( VT_PACKAGE_ID ( ID )+ )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:22:2: ( ^( VT_PACKAGE_ID ( ID )+ ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:22:4: ^( VT_PACKAGE_ID ( ID )+ )
             {
             match(input,VT_PACKAGE_ID,FOLLOW_VT_PACKAGE_ID_in_package_id78); 
 
             match(input, Token.DOWN, null); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:22:20: ( ID )+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:22:20: ( ID )+
             int cnt3=0;
             loop3:
             do {
@@ -286,7 +296,7 @@
 
                 switch (alt3) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:22:20: ID
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:22:20: ID
             	    {
             	    match(input,ID,FOLLOW_ID_in_package_id80); 
 
@@ -316,14 +326,14 @@
         }
         return ;
     }
-    // $ANTLR end package_id
+    // $ANTLR end "package_id"
 
 
-    // $ANTLR start statement
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:25:1: statement : ( rule_attribute | function_import_statement | import_statement | global | function | template | rule | query | type_declaration );
+    // $ANTLR start "statement"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:25:1: statement : ( rule_attribute | function_import_statement | import_statement | global | function | template | rule | query | type_declaration );
     public final void statement() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:26:2: ( rule_attribute | function_import_statement | import_statement | global | function | template | rule | query | type_declaration )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:26:2: ( rule_attribute | function_import_statement | import_statement | global | function | template | rule | query | type_declaration )
             int alt4=9;
             switch ( input.LA(1) ) {
             case VK_DATE_EFFECTIVE:
@@ -384,100 +394,109 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("25:1: statement : ( rule_attribute | function_import_statement | import_statement | global | function | template | rule | query | type_declaration );", 4, 0, input);
+                    new NoViableAltException("", 4, 0, input);
 
                 throw nvae;
             }
 
             switch (alt4) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:26:4: rule_attribute
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:26:4: rule_attribute
                     {
                     pushFollow(FOLLOW_rule_attribute_in_statement93);
                     rule_attribute();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:27:4: function_import_statement
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:27:4: function_import_statement
                     {
                     pushFollow(FOLLOW_function_import_statement_in_statement98);
                     function_import_statement();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:28:4: import_statement
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:28:4: import_statement
                     {
                     pushFollow(FOLLOW_import_statement_in_statement104);
                     import_statement();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
                 case 4 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:29:4: global
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:29:4: global
                     {
                     pushFollow(FOLLOW_global_in_statement110);
                     global();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
                 case 5 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:30:4: function
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:30:4: function
                     {
                     pushFollow(FOLLOW_function_in_statement116);
                     function();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
                 case 6 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:31:4: template
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:31:4: template
                     {
                     pushFollow(FOLLOW_template_in_statement121);
                     template();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
                 case 7 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:32:4: rule
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:32:4: rule
                     {
                     pushFollow(FOLLOW_rule_in_statement126);
                     rule();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
                 case 8 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:33:4: query
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:33:4: query
                     {
                     pushFollow(FOLLOW_query_in_statement131);
                     query();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
                 case 9 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:34:4: type_declaration
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:34:4: type_declaration
                     {
                     pushFollow(FOLLOW_type_declaration_in_statement136);
                     type_declaration();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
@@ -491,24 +510,25 @@
         }
         return ;
     }
-    // $ANTLR end statement
+    // $ANTLR end "statement"
 
 
-    // $ANTLR start import_statement
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:37:1: import_statement : ^( VK_IMPORT import_name ) ;
+    // $ANTLR start "import_statement"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:37:1: import_statement : ^( VK_IMPORT import_name ) ;
     public final void import_statement() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:38:2: ( ^( VK_IMPORT import_name ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:38:4: ^( VK_IMPORT import_name )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:38:2: ( ^( VK_IMPORT import_name ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:38:4: ^( VK_IMPORT import_name )
             {
             match(input,VK_IMPORT,FOLLOW_VK_IMPORT_in_import_statement148); 
 
             match(input, Token.DOWN, null); 
             pushFollow(FOLLOW_import_name_in_import_statement150);
             import_name();
-            _fsp--;
 
+            state._fsp--;
 
+
             match(input, Token.UP, null); 
 
             }
@@ -522,15 +542,15 @@
         }
         return ;
     }
-    // $ANTLR end import_statement
+    // $ANTLR end "import_statement"
 
 
-    // $ANTLR start function_import_statement
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:41:1: function_import_statement : ^( VT_FUNCTION_IMPORT VK_FUNCTION import_name ) ;
+    // $ANTLR start "function_import_statement"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:41:1: function_import_statement : ^( VT_FUNCTION_IMPORT VK_FUNCTION import_name ) ;
     public final void function_import_statement() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:42:2: ( ^( VT_FUNCTION_IMPORT VK_FUNCTION import_name ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:42:4: ^( VT_FUNCTION_IMPORT VK_FUNCTION import_name )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:42:2: ( ^( VT_FUNCTION_IMPORT VK_FUNCTION import_name ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:42:4: ^( VT_FUNCTION_IMPORT VK_FUNCTION import_name )
             {
             match(input,VT_FUNCTION_IMPORT,FOLLOW_VT_FUNCTION_IMPORT_in_function_import_statement163); 
 
@@ -538,9 +558,10 @@
             match(input,VK_FUNCTION,FOLLOW_VK_FUNCTION_in_function_import_statement165); 
             pushFollow(FOLLOW_import_name_in_function_import_statement167);
             import_name();
-            _fsp--;
 
+            state._fsp--;
 
+
             match(input, Token.UP, null); 
 
             }
@@ -554,20 +575,20 @@
         }
         return ;
     }
-    // $ANTLR end function_import_statement
+    // $ANTLR end "function_import_statement"
 
 
-    // $ANTLR start import_name
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:45:1: import_name : ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) ;
+    // $ANTLR start "import_name"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:45:1: import_name : ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) ;
     public final void import_name() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:46:2: ( ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:46:4: ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:46:2: ( ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:46:4: ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
             {
             match(input,VT_IMPORT_ID,FOLLOW_VT_IMPORT_ID_in_import_name180); 
 
             match(input, Token.DOWN, null); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:46:19: ( ID )+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:46:19: ( ID )+
             int cnt5=0;
             loop5:
             do {
@@ -581,7 +602,7 @@
 
                 switch (alt5) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:46:19: ID
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:46:19: ID
             	    {
             	    match(input,ID,FOLLOW_ID_in_import_name182); 
 
@@ -597,7 +618,7 @@
                 cnt5++;
             } while (true);
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:46:23: ( DOT_STAR )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:46:23: ( DOT_STAR )?
             int alt6=2;
             int LA6_0 = input.LA(1);
 
@@ -606,7 +627,7 @@
             }
             switch (alt6) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:46:23: DOT_STAR
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:46:23: DOT_STAR
                     {
                     match(input,DOT_STAR,FOLLOW_DOT_STAR_in_import_name185); 
 
@@ -629,23 +650,24 @@
         }
         return ;
     }
-    // $ANTLR end import_name
+    // $ANTLR end "import_name"
 
 
-    // $ANTLR start global
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:49:1: global : ^( VK_GLOBAL data_type VT_GLOBAL_ID ) ;
+    // $ANTLR start "global"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:49:1: global : ^( VK_GLOBAL data_type VT_GLOBAL_ID ) ;
     public final void global() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:50:2: ( ^( VK_GLOBAL data_type VT_GLOBAL_ID ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:50:4: ^( VK_GLOBAL data_type VT_GLOBAL_ID )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:50:2: ( ^( VK_GLOBAL data_type VT_GLOBAL_ID ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:50:4: ^( VK_GLOBAL data_type VT_GLOBAL_ID )
             {
             match(input,VK_GLOBAL,FOLLOW_VK_GLOBAL_in_global199); 
 
             match(input, Token.DOWN, null); 
             pushFollow(FOLLOW_data_type_in_global201);
             data_type();
-            _fsp--;
 
+            state._fsp--;
+
             match(input,VT_GLOBAL_ID,FOLLOW_VT_GLOBAL_ID_in_global203); 
 
             match(input, Token.UP, null); 
@@ -661,20 +683,20 @@
         }
         return ;
     }
-    // $ANTLR end global
+    // $ANTLR end "global"
 
 
-    // $ANTLR start function
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:53:1: function : ^( VK_FUNCTION ( data_type )? VT_FUNCTION_ID parameters curly_chunk ) ;
+    // $ANTLR start "function"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:53:1: function : ^( VK_FUNCTION ( data_type )? VT_FUNCTION_ID parameters curly_chunk ) ;
     public final void function() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:54:2: ( ^( VK_FUNCTION ( data_type )? VT_FUNCTION_ID parameters curly_chunk ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:54:4: ^( VK_FUNCTION ( data_type )? VT_FUNCTION_ID parameters curly_chunk )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:54:2: ( ^( VK_FUNCTION ( data_type )? VT_FUNCTION_ID parameters curly_chunk ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:54:4: ^( VK_FUNCTION ( data_type )? VT_FUNCTION_ID parameters curly_chunk )
             {
             match(input,VK_FUNCTION,FOLLOW_VK_FUNCTION_in_function216); 
 
             match(input, Token.DOWN, null); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:54:18: ( data_type )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:54:18: ( data_type )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -683,13 +705,14 @@
             }
             switch (alt7) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:54:18: data_type
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:54:18: data_type
                     {
                     pushFollow(FOLLOW_data_type_in_function218);
                     data_type();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
@@ -698,13 +721,15 @@
             match(input,VT_FUNCTION_ID,FOLLOW_VT_FUNCTION_ID_in_function221); 
             pushFollow(FOLLOW_parameters_in_function223);
             parameters();
-            _fsp--;
 
+            state._fsp--;
+
             pushFollow(FOLLOW_curly_chunk_in_function225);
             curly_chunk();
-            _fsp--;
 
+            state._fsp--;
 
+
             match(input, Token.UP, null); 
 
             }
@@ -718,21 +743,21 @@
         }
         return ;
     }
-    // $ANTLR end function
+    // $ANTLR end "function"
 
 
-    // $ANTLR start query
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:57:1: query : ^( VK_QUERY VT_QUERY_ID ( parameters )? lhs_block END ) ;
+    // $ANTLR start "query"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:57:1: query : ^( VK_QUERY VT_QUERY_ID ( parameters )? lhs_block END ) ;
     public final void query() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:58:2: ( ^( VK_QUERY VT_QUERY_ID ( parameters )? lhs_block END ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:58:4: ^( VK_QUERY VT_QUERY_ID ( parameters )? lhs_block END )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:58:2: ( ^( VK_QUERY VT_QUERY_ID ( parameters )? lhs_block END ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:58:4: ^( VK_QUERY VT_QUERY_ID ( parameters )? lhs_block END )
             {
             match(input,VK_QUERY,FOLLOW_VK_QUERY_in_query238); 
 
             match(input, Token.DOWN, null); 
             match(input,VT_QUERY_ID,FOLLOW_VT_QUERY_ID_in_query240); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:58:27: ( parameters )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:58:27: ( parameters )?
             int alt8=2;
             int LA8_0 = input.LA(1);
 
@@ -741,13 +766,14 @@
             }
             switch (alt8) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:58:27: parameters
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:58:27: parameters
                     {
                     pushFollow(FOLLOW_parameters_in_query242);
                     parameters();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
@@ -755,8 +781,9 @@
 
             pushFollow(FOLLOW_lhs_block_in_query245);
             lhs_block();
-            _fsp--;
 
+            state._fsp--;
+
             match(input,END,FOLLOW_END_in_query247); 
 
             match(input, Token.UP, null); 
@@ -772,21 +799,21 @@
         }
         return ;
     }
-    // $ANTLR end query
+    // $ANTLR end "query"
 
 
-    // $ANTLR start parameters
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:61:1: parameters : ^( VT_PARAM_LIST ( param_definition )* ) ;
+    // $ANTLR start "parameters"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:61:1: parameters : ^( VT_PARAM_LIST ( param_definition )* ) ;
     public final void parameters() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:62:2: ( ^( VT_PARAM_LIST ( param_definition )* ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:62:4: ^( VT_PARAM_LIST ( param_definition )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:62:2: ( ^( VT_PARAM_LIST ( param_definition )* ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:62:4: ^( VT_PARAM_LIST ( param_definition )* )
             {
             match(input,VT_PARAM_LIST,FOLLOW_VT_PARAM_LIST_in_parameters260); 
 
             if ( input.LA(1)==Token.DOWN ) {
                 match(input, Token.DOWN, null); 
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:62:20: ( param_definition )*
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:62:20: ( param_definition )*
                 loop9:
                 do {
                     int alt9=2;
@@ -799,13 +826,14 @@
 
                     switch (alt9) {
                 	case 1 :
-                	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:62:20: param_definition
+                	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:62:20: param_definition
                 	    {
                 	    pushFollow(FOLLOW_param_definition_in_parameters262);
                 	    param_definition();
-                	    _fsp--;
 
+                	    state._fsp--;
 
+
                 	    }
                 	    break;
 
@@ -829,17 +857,17 @@
         }
         return ;
     }
-    // $ANTLR end parameters
+    // $ANTLR end "parameters"
 
 
-    // $ANTLR start param_definition
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:65:1: param_definition : ( data_type )? argument ;
+    // $ANTLR start "param_definition"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:65:1: param_definition : ( data_type )? argument ;
     public final void param_definition() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:66:2: ( ( data_type )? argument )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:66:4: ( data_type )? argument
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:66:2: ( ( data_type )? argument )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:66:4: ( data_type )? argument
             {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:66:4: ( data_type )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:66:4: ( data_type )?
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -848,13 +876,14 @@
             }
             switch (alt10) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:66:4: data_type
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:66:4: data_type
                     {
                     pushFollow(FOLLOW_data_type_in_param_definition275);
                     data_type();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
@@ -862,9 +891,10 @@
 
             pushFollow(FOLLOW_argument_in_param_definition278);
             argument();
-            _fsp--;
 
+            state._fsp--;
 
+
             }
 
         }
@@ -876,18 +906,18 @@
         }
         return ;
     }
-    // $ANTLR end param_definition
+    // $ANTLR end "param_definition"
 
 
-    // $ANTLR start argument
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:69:1: argument : ID ( dimension_definition )* ;
+    // $ANTLR start "argument"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:69:1: argument : ID ( dimension_definition )* ;
     public final void argument() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:70:2: ( ID ( dimension_definition )* )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:70:4: ID ( dimension_definition )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:70:2: ( ID ( dimension_definition )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:70:4: ID ( dimension_definition )*
             {
             match(input,ID,FOLLOW_ID_in_argument289); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:70:7: ( dimension_definition )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:70:7: ( dimension_definition )*
             loop11:
             do {
                 int alt11=2;
@@ -900,13 +930,14 @@
 
                 switch (alt11) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:70:7: dimension_definition
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:70:7: dimension_definition
             	    {
             	    pushFollow(FOLLOW_dimension_definition_in_argument291);
             	    dimension_definition();
-            	    _fsp--;
 
+            	    state._fsp--;
 
+
             	    }
             	    break;
 
@@ -927,21 +958,21 @@
         }
         return ;
     }
-    // $ANTLR end argument
+    // $ANTLR end "argument"
 
 
-    // $ANTLR start type_declaration
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:73:1: type_declaration : ^( VK_DECLARE VT_TYPE_DECLARE_ID ( decl_metadata )* ( decl_field )* END ) ;
+    // $ANTLR start "type_declaration"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:73:1: type_declaration : ^( VK_DECLARE VT_TYPE_DECLARE_ID ( decl_metadata )* ( decl_field )* END ) ;
     public final void type_declaration() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:74:2: ( ^( VK_DECLARE VT_TYPE_DECLARE_ID ( decl_metadata )* ( decl_field )* END ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:74:4: ^( VK_DECLARE VT_TYPE_DECLARE_ID ( decl_metadata )* ( decl_field )* END )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:74:2: ( ^( VK_DECLARE VT_TYPE_DECLARE_ID ( decl_metadata )* ( decl_field )* END ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:74:4: ^( VK_DECLARE VT_TYPE_DECLARE_ID ( decl_metadata )* ( decl_field )* END )
             {
             match(input,VK_DECLARE,FOLLOW_VK_DECLARE_in_type_declaration304); 
 
             match(input, Token.DOWN, null); 
             match(input,VT_TYPE_DECLARE_ID,FOLLOW_VT_TYPE_DECLARE_ID_in_type_declaration306); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:74:36: ( decl_metadata )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:74:36: ( decl_metadata )*
             loop12:
             do {
                 int alt12=2;
@@ -954,13 +985,14 @@
 
                 switch (alt12) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:74:36: decl_metadata
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:74:36: decl_metadata
             	    {
             	    pushFollow(FOLLOW_decl_metadata_in_type_declaration308);
             	    decl_metadata();
-            	    _fsp--;
 
+            	    state._fsp--;
 
+
             	    }
             	    break;
 
@@ -969,7 +1001,7 @@
                 }
             } while (true);
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:74:51: ( decl_field )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:74:51: ( decl_field )*
             loop13:
             do {
                 int alt13=2;
@@ -982,13 +1014,14 @@
 
                 switch (alt13) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:74:51: decl_field
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:74:51: decl_field
             	    {
             	    pushFollow(FOLLOW_decl_field_in_type_declaration311);
             	    decl_field();
-            	    _fsp--;
 
+            	    state._fsp--;
 
+
             	    }
             	    break;
 
@@ -1012,15 +1045,15 @@
         }
         return ;
     }
-    // $ANTLR end type_declaration
+    // $ANTLR end "type_declaration"
 
 
-    // $ANTLR start decl_metadata
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:77:1: decl_metadata : ^( AT ID VT_PAREN_CHUNK ) ;
+    // $ANTLR start "decl_metadata"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:77:1: decl_metadata : ^( AT ID VT_PAREN_CHUNK ) ;
     public final void decl_metadata() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:78:2: ( ^( AT ID VT_PAREN_CHUNK ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:78:4: ^( AT ID VT_PAREN_CHUNK )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:78:2: ( ^( AT ID VT_PAREN_CHUNK ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:78:4: ^( AT ID VT_PAREN_CHUNK )
             {
             match(input,AT,FOLLOW_AT_in_decl_metadata327); 
 
@@ -1041,20 +1074,20 @@
         }
         return ;
     }
-    // $ANTLR end decl_metadata
+    // $ANTLR end "decl_metadata"
 
 
-    // $ANTLR start decl_field
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:81:1: decl_field : ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* ) ;
+    // $ANTLR start "decl_field"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:81:1: decl_field : ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* ) ;
     public final void decl_field() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:82:2: ( ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:82:4: ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:82:2: ( ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:82:4: ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* )
             {
             match(input,ID,FOLLOW_ID_in_decl_field344); 
 
             match(input, Token.DOWN, null); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:82:9: ( decl_field_initialization )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:82:9: ( decl_field_initialization )?
             int alt14=2;
             int LA14_0 = input.LA(1);
 
@@ -1063,13 +1096,14 @@
             }
             switch (alt14) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:82:9: decl_field_initialization
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:82:9: decl_field_initialization
                     {
                     pushFollow(FOLLOW_decl_field_initialization_in_decl_field346);
                     decl_field_initialization();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
@@ -1077,9 +1111,10 @@
 
             pushFollow(FOLLOW_data_type_in_decl_field349);
             data_type();
-            _fsp--;
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:82:46: ( decl_metadata )*
+            state._fsp--;
+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:82:46: ( decl_metadata )*
             loop15:
             do {
                 int alt15=2;
@@ -1092,13 +1127,14 @@
 
                 switch (alt15) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:82:46: decl_metadata
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:82:46: decl_metadata
             	    {
             	    pushFollow(FOLLOW_decl_metadata_in_decl_field351);
             	    decl_metadata();
-            	    _fsp--;
 
+            	    state._fsp--;
 
+
             	    }
             	    break;
 
@@ -1121,15 +1157,15 @@
         }
         return ;
     }
-    // $ANTLR end decl_field
+    // $ANTLR end "decl_field"
 
 
-    // $ANTLR start decl_field_initialization
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:85:1: decl_field_initialization : ^( EQUALS VT_PAREN_CHUNK ) ;
+    // $ANTLR start "decl_field_initialization"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:85:1: decl_field_initialization : ^( EQUALS VT_PAREN_CHUNK ) ;
     public final void decl_field_initialization() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:86:2: ( ^( EQUALS VT_PAREN_CHUNK ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:86:4: ^( EQUALS VT_PAREN_CHUNK )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:86:2: ( ^( EQUALS VT_PAREN_CHUNK ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:86:4: ^( EQUALS VT_PAREN_CHUNK )
             {
             match(input,EQUALS,FOLLOW_EQUALS_in_decl_field_initialization365); 
 
@@ -1149,21 +1185,21 @@
         }
         return ;
     }
-    // $ANTLR end decl_field_initialization
+    // $ANTLR end "decl_field_initialization"
 
 
-    // $ANTLR start template
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:89:1: template : ^( VK_TEMPLATE VT_TEMPLATE_ID ( template_slot )+ END ) ;
+    // $ANTLR start "template"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:89:1: template : ^( VK_TEMPLATE VT_TEMPLATE_ID ( template_slot )+ END ) ;
     public final void template() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:90:2: ( ^( VK_TEMPLATE VT_TEMPLATE_ID ( template_slot )+ END ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:90:4: ^( VK_TEMPLATE VT_TEMPLATE_ID ( template_slot )+ END )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:90:2: ( ^( VK_TEMPLATE VT_TEMPLATE_ID ( template_slot )+ END ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:90:4: ^( VK_TEMPLATE VT_TEMPLATE_ID ( template_slot )+ END )
             {
             match(input,VK_TEMPLATE,FOLLOW_VK_TEMPLATE_in_template380); 
 
             match(input, Token.DOWN, null); 
             match(input,VT_TEMPLATE_ID,FOLLOW_VT_TEMPLATE_ID_in_template382); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:90:33: ( template_slot )+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:90:33: ( template_slot )+
             int cnt16=0;
             loop16:
             do {
@@ -1177,13 +1213,14 @@
 
                 switch (alt16) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:90:33: template_slot
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:90:33: template_slot
             	    {
             	    pushFollow(FOLLOW_template_slot_in_template384);
             	    template_slot();
-            	    _fsp--;
 
+            	    state._fsp--;
 
+
             	    }
             	    break;
 
@@ -1211,23 +1248,24 @@
         }
         return ;
     }
-    // $ANTLR end template
+    // $ANTLR end "template"
 
 
-    // $ANTLR start template_slot
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:93:1: template_slot : ^( VT_SLOT data_type VT_SLOT_ID ) ;
+    // $ANTLR start "template_slot"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:93:1: template_slot : ^( VT_SLOT data_type VT_SLOT_ID ) ;
     public final void template_slot() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:94:2: ( ^( VT_SLOT data_type VT_SLOT_ID ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:94:4: ^( VT_SLOT data_type VT_SLOT_ID )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:94:2: ( ^( VT_SLOT data_type VT_SLOT_ID ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:94:4: ^( VT_SLOT data_type VT_SLOT_ID )
             {
             match(input,VT_SLOT,FOLLOW_VT_SLOT_in_template_slot400); 
 
             match(input, Token.DOWN, null); 
             pushFollow(FOLLOW_data_type_in_template_slot402);
             data_type();
-            _fsp--;
 
+            state._fsp--;
+
             match(input,VT_SLOT_ID,FOLLOW_VT_SLOT_ID_in_template_slot404); 
 
             match(input, Token.UP, null); 
@@ -1243,21 +1281,21 @@
         }
         return ;
     }
-    // $ANTLR end template_slot
+    // $ANTLR end "template_slot"
 
 
-    // $ANTLR start rule
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:97:1: rule : ^( VK_RULE VT_RULE_ID ( rule_attributes )? ( when_part )? VT_RHS_CHUNK ) ;
+    // $ANTLR start "rule"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:97:1: rule : ^( VK_RULE VT_RULE_ID ( rule_attributes )? ( when_part )? VT_RHS_CHUNK ) ;
     public final void rule() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:98:2: ( ^( VK_RULE VT_RULE_ID ( rule_attributes )? ( when_part )? VT_RHS_CHUNK ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:98:4: ^( VK_RULE VT_RULE_ID ( rule_attributes )? ( when_part )? VT_RHS_CHUNK )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:98:2: ( ^( VK_RULE VT_RULE_ID ( rule_attributes )? ( when_part )? VT_RHS_CHUNK ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:98:4: ^( VK_RULE VT_RULE_ID ( rule_attributes )? ( when_part )? VT_RHS_CHUNK )
             {
             match(input,VK_RULE,FOLLOW_VK_RULE_in_rule417); 
 
             match(input, Token.DOWN, null); 
             match(input,VT_RULE_ID,FOLLOW_VT_RULE_ID_in_rule419); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:98:25: ( rule_attributes )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:98:25: ( rule_attributes )?
             int alt17=2;
             int LA17_0 = input.LA(1);
 
@@ -1266,19 +1304,20 @@
             }
             switch (alt17) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:98:25: rule_attributes
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:98:25: rule_attributes
                     {
                     pushFollow(FOLLOW_rule_attributes_in_rule421);
                     rule_attributes();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
             }
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:98:42: ( when_part )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:98:42: ( when_part )?
             int alt18=2;
             int LA18_0 = input.LA(1);
 
@@ -1287,13 +1326,14 @@
             }
             switch (alt18) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:98:42: when_part
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:98:42: when_part
                     {
                     pushFollow(FOLLOW_when_part_in_rule424);
                     when_part();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
@@ -1314,22 +1354,23 @@
         }
         return ;
     }
-    // $ANTLR end rule
+    // $ANTLR end "rule"
 
 
-    // $ANTLR start when_part
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:101:1: when_part : WHEN lhs_block ;
+    // $ANTLR start "when_part"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:101:1: when_part : WHEN lhs_block ;
     public final void when_part() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:102:2: ( WHEN lhs_block )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:102:4: WHEN lhs_block
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:102:2: ( WHEN lhs_block )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:102:4: WHEN lhs_block
             {
             match(input,WHEN,FOLLOW_WHEN_in_when_part439); 
             pushFollow(FOLLOW_lhs_block_in_when_part441);
             lhs_block();
-            _fsp--;
 
+            state._fsp--;
 
+
             }
 
         }
@@ -1341,20 +1382,20 @@
         }
         return ;
     }
-    // $ANTLR end when_part
+    // $ANTLR end "when_part"
 
 
-    // $ANTLR start rule_attributes
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:105:1: rule_attributes : ^( VT_RULE_ATTRIBUTES ( VK_ATTRIBUTES )? ( rule_attribute )+ ) ;
+    // $ANTLR start "rule_attributes"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:105:1: rule_attributes : ^( VT_RULE_ATTRIBUTES ( VK_ATTRIBUTES )? ( rule_attribute )+ ) ;
     public final void rule_attributes() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:106:2: ( ^( VT_RULE_ATTRIBUTES ( VK_ATTRIBUTES )? ( rule_attribute )+ ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:106:4: ^( VT_RULE_ATTRIBUTES ( VK_ATTRIBUTES )? ( rule_attribute )+ )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:106:2: ( ^( VT_RULE_ATTRIBUTES ( VK_ATTRIBUTES )? ( rule_attribute )+ ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:106:4: ^( VT_RULE_ATTRIBUTES ( VK_ATTRIBUTES )? ( rule_attribute )+ )
             {
             match(input,VT_RULE_ATTRIBUTES,FOLLOW_VT_RULE_ATTRIBUTES_in_rule_attributes453); 
 
             match(input, Token.DOWN, null); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:106:25: ( VK_ATTRIBUTES )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:106:25: ( VK_ATTRIBUTES )?
             int alt19=2;
             int LA19_0 = input.LA(1);
 
@@ -1363,7 +1404,7 @@
             }
             switch (alt19) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:106:25: VK_ATTRIBUTES
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:106:25: VK_ATTRIBUTES
                     {
                     match(input,VK_ATTRIBUTES,FOLLOW_VK_ATTRIBUTES_in_rule_attributes455); 
 
@@ -1372,7 +1413,7 @@
 
             }
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:106:40: ( rule_attribute )+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:106:40: ( rule_attribute )+
             int cnt20=0;
             loop20:
             do {
@@ -1386,13 +1427,14 @@
 
                 switch (alt20) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:106:40: rule_attribute
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:106:40: rule_attribute
             	    {
             	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes458);
             	    rule_attribute();
-            	    _fsp--;
 
+            	    state._fsp--;
 
+
             	    }
             	    break;
 
@@ -1419,14 +1461,14 @@
         }
         return ;
     }
-    // $ANTLR end rule_attributes
+    // $ANTLR end "rule_attributes"
 
 
-    // $ANTLR start rule_attribute
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:109:1: rule_attribute : ( ^( VK_SALIENCE ( INT | VT_PAREN_CHUNK ) ) | ^( VK_NO_LOOP ( BOOL )? ) | ^( VK_AGENDA_GROUP STRING ) | ^( VK_DURATION INT ) | ^( VK_ACTIVATION_GROUP STRING ) | ^( VK_AUTO_FOCUS ( BOOL )? ) | ^( VK_DATE_EFFECTIVE STRING ) | ^( VK_DATE_EXPIRES STRING ) | ^( VK_ENABLED BOOL ) | ^( VK_RULEFLOW_GROUP STRING ) | ^( VK_LOCK_ON_ACTIVE ( BOOL )? ) | ^( VK_DIALECT STRING ) );
+    // $ANTLR start "rule_attribute"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:109:1: rule_attribute : ( ^( VK_SALIENCE ( INT | VT_PAREN_CHUNK ) ) | ^( VK_NO_LOOP ( BOOL )? ) | ^( VK_AGENDA_GROUP STRING ) | ^( VK_DURATION INT ) | ^( VK_ACTIVATION_GROUP STRING ) | ^( VK_AUTO_FOCUS ( BOOL )? ) | ^( VK_DATE_EFFECTIVE STRING ) | ^( VK_DATE_EXPIRES STRING ) | ^( VK_ENABLED BOOL ) | ^( VK_RULEFLOW_GROUP STRING ) | ^( VK_LOCK_ON_ACTIVE ( BOOL )? ) | ^( VK_DIALECT STRING ) );
     public final void rule_attribute() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:110:2: ( ^( VK_SALIENCE ( INT | VT_PAREN_CHUNK ) ) | ^( VK_NO_LOOP ( BOOL )? ) | ^( VK_AGENDA_GROUP STRING ) | ^( VK_DURATION INT ) | ^( VK_ACTIVATION_GROUP STRING ) | ^( VK_AUTO_FOCUS ( BOOL )? ) | ^( VK_DATE_EFFECTIVE STRING ) | ^( VK_DATE_EXPIRES STRING ) | ^( VK_ENABLED BOOL ) | ^( VK_RULEFLOW_GROUP STRING ) | ^( VK_LOCK_ON_ACTIVE ( BOOL )? ) | ^( VK_DIALECT STRING ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:110:2: ( ^( VK_SALIENCE ( INT | VT_PAREN_CHUNK ) ) | ^( VK_NO_LOOP ( BOOL )? ) | ^( VK_AGENDA_GROUP STRING ) | ^( VK_DURATION INT ) | ^( VK_ACTIVATION_GROUP STRING ) | ^( VK_AUTO_FOCUS ( BOOL )? ) | ^( VK_DATE_EFFECTIVE STRING ) | ^( VK_DATE_EXPIRES STRING ) | ^( VK_ENABLED BOOL ) | ^( VK_RULEFLOW_GROUP STRING ) | ^( VK_LOCK_ON_ACTIVE ( BOOL )? ) | ^( VK_DIALECT STRING ) )
             int alt24=12;
             switch ( input.LA(1) ) {
             case VK_SALIENCE:
@@ -1491,26 +1533,25 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("109:1: rule_attribute : ( ^( VK_SALIENCE ( INT | VT_PAREN_CHUNK ) ) | ^( VK_NO_LOOP ( BOOL )? ) | ^( VK_AGENDA_GROUP STRING ) | ^( VK_DURATION INT ) | ^( VK_ACTIVATION_GROUP STRING ) | ^( VK_AUTO_FOCUS ( BOOL )? ) | ^( VK_DATE_EFFECTIVE STRING ) | ^( VK_DATE_EXPIRES STRING ) | ^( VK_ENABLED BOOL ) | ^( VK_RULEFLOW_GROUP STRING ) | ^( VK_LOCK_ON_ACTIVE ( BOOL )? ) | ^( VK_DIALECT STRING ) );", 24, 0, input);
+                    new NoViableAltException("", 24, 0, input);
 
                 throw nvae;
             }
 
             switch (alt24) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:110:4: ^( VK_SALIENCE ( INT | VT_PAREN_CHUNK ) )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:110:4: ^( VK_SALIENCE ( INT | VT_PAREN_CHUNK ) )
                     {
                     match(input,VK_SALIENCE,FOLLOW_VK_SALIENCE_in_rule_attribute472); 
 
                     match(input, Token.DOWN, null); 
                     if ( input.LA(1)==VT_PAREN_CHUNK||input.LA(1)==INT ) {
                         input.consume();
-                        errorRecovery=false;
+                        state.errorRecovery=false;
                     }
                     else {
-                        MismatchedSetException mse =
-                            new MismatchedSetException(null,input);
-                        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_rule_attribute474);    throw mse;
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        throw mse;
                     }
 
 
@@ -1519,13 +1560,13 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:111:4: ^( VK_NO_LOOP ( BOOL )? )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:111:4: ^( VK_NO_LOOP ( BOOL )? )
                     {
                     match(input,VK_NO_LOOP,FOLLOW_VK_NO_LOOP_in_rule_attribute486); 
 
                     if ( input.LA(1)==Token.DOWN ) {
                         match(input, Token.DOWN, null); 
-                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:111:17: ( BOOL )?
+                        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:111:17: ( BOOL )?
                         int alt21=2;
                         int LA21_0 = input.LA(1);
 
@@ -1534,7 +1575,7 @@
                         }
                         switch (alt21) {
                             case 1 :
-                                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:111:17: BOOL
+                                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:111:17: BOOL
                                 {
                                 match(input,BOOL,FOLLOW_BOOL_in_rule_attribute488); 
 
@@ -1550,7 +1591,7 @@
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:112:4: ^( VK_AGENDA_GROUP STRING )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:112:4: ^( VK_AGENDA_GROUP STRING )
                     {
                     match(input,VK_AGENDA_GROUP,FOLLOW_VK_AGENDA_GROUP_in_rule_attribute498); 
 
@@ -1562,7 +1603,7 @@
                     }
                     break;
                 case 4 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:113:4: ^( VK_DURATION INT )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:113:4: ^( VK_DURATION INT )
                     {
                     match(input,VK_DURATION,FOLLOW_VK_DURATION_in_rule_attribute509); 
 
@@ -1574,7 +1615,7 @@
                     }
                     break;
                 case 5 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:114:4: ^( VK_ACTIVATION_GROUP STRING )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:114:4: ^( VK_ACTIVATION_GROUP STRING )
                     {
                     match(input,VK_ACTIVATION_GROUP,FOLLOW_VK_ACTIVATION_GROUP_in_rule_attribute521); 
 
@@ -1586,13 +1627,13 @@
                     }
                     break;
                 case 6 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:115:4: ^( VK_AUTO_FOCUS ( BOOL )? )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:115:4: ^( VK_AUTO_FOCUS ( BOOL )? )
                     {
                     match(input,VK_AUTO_FOCUS,FOLLOW_VK_AUTO_FOCUS_in_rule_attribute531); 
 
                     if ( input.LA(1)==Token.DOWN ) {
                         match(input, Token.DOWN, null); 
-                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:115:20: ( BOOL )?
+                        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:115:20: ( BOOL )?
                         int alt22=2;
                         int LA22_0 = input.LA(1);
 
@@ -1601,7 +1642,7 @@
                         }
                         switch (alt22) {
                             case 1 :
-                                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:115:20: BOOL
+                                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:115:20: BOOL
                                 {
                                 match(input,BOOL,FOLLOW_BOOL_in_rule_attribute533); 
 
@@ -1617,7 +1658,7 @@
                     }
                     break;
                 case 7 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:116:4: ^( VK_DATE_EFFECTIVE STRING )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:116:4: ^( VK_DATE_EFFECTIVE STRING )
                     {
                     match(input,VK_DATE_EFFECTIVE,FOLLOW_VK_DATE_EFFECTIVE_in_rule_attribute542); 
 
@@ -1629,7 +1670,7 @@
                     }
                     break;
                 case 8 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:117:4: ^( VK_DATE_EXPIRES STRING )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:117:4: ^( VK_DATE_EXPIRES STRING )
                     {
                     match(input,VK_DATE_EXPIRES,FOLLOW_VK_DATE_EXPIRES_in_rule_attribute552); 
 
@@ -1641,7 +1682,7 @@
                     }
                     break;
                 case 9 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:118:4: ^( VK_ENABLED BOOL )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:118:4: ^( VK_ENABLED BOOL )
                     {
                     match(input,VK_ENABLED,FOLLOW_VK_ENABLED_in_rule_attribute562); 
 
@@ -1653,7 +1694,7 @@
                     }
                     break;
                 case 10 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:119:4: ^( VK_RULEFLOW_GROUP STRING )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:119:4: ^( VK_RULEFLOW_GROUP STRING )
                     {
                     match(input,VK_RULEFLOW_GROUP,FOLLOW_VK_RULEFLOW_GROUP_in_rule_attribute572); 
 
@@ -1665,13 +1706,13 @@
                     }
                     break;
                 case 11 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:120:4: ^( VK_LOCK_ON_ACTIVE ( BOOL )? )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:120:4: ^( VK_LOCK_ON_ACTIVE ( BOOL )? )
                     {
                     match(input,VK_LOCK_ON_ACTIVE,FOLLOW_VK_LOCK_ON_ACTIVE_in_rule_attribute582); 
 
                     if ( input.LA(1)==Token.DOWN ) {
                         match(input, Token.DOWN, null); 
-                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:120:24: ( BOOL )?
+                        // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:120:24: ( BOOL )?
                         int alt23=2;
                         int LA23_0 = input.LA(1);
 
@@ -1680,7 +1721,7 @@
                         }
                         switch (alt23) {
                             case 1 :
-                                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:120:24: BOOL
+                                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:120:24: BOOL
                                 {
                                 match(input,BOOL,FOLLOW_BOOL_in_rule_attribute584); 
 
@@ -1696,7 +1737,7 @@
                     }
                     break;
                 case 12 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:121:4: ^( VK_DIALECT STRING )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:121:4: ^( VK_DIALECT STRING )
                     {
                     match(input,VK_DIALECT,FOLLOW_VK_DIALECT_in_rule_attribute592); 
 
@@ -1718,21 +1759,21 @@
         }
         return ;
     }
-    // $ANTLR end rule_attribute
+    // $ANTLR end "rule_attribute"
 
 
-    // $ANTLR start lhs_block
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:124:1: lhs_block : ^( VT_AND_IMPLICIT ( lhs )* ) ;
+    // $ANTLR start "lhs_block"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:124:1: lhs_block : ^( VT_AND_IMPLICIT ( lhs )* ) ;
     public final void lhs_block() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:125:2: ( ^( VT_AND_IMPLICIT ( lhs )* ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:125:4: ^( VT_AND_IMPLICIT ( lhs )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:125:2: ( ^( VT_AND_IMPLICIT ( lhs )* ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:125:4: ^( VT_AND_IMPLICIT ( lhs )* )
             {
             match(input,VT_AND_IMPLICIT,FOLLOW_VT_AND_IMPLICIT_in_lhs_block608); 
 
             if ( input.LA(1)==Token.DOWN ) {
                 match(input, Token.DOWN, null); 
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:125:22: ( lhs )*
+                // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:125:22: ( lhs )*
                 loop25:
                 do {
                     int alt25=2;
@@ -1745,13 +1786,14 @@
 
                     switch (alt25) {
                 	case 1 :
-                	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:125:22: lhs
+                	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:125:22: lhs
                 	    {
                 	    pushFollow(FOLLOW_lhs_in_lhs_block610);
                 	    lhs();
-                	    _fsp--;
 
+                	    state._fsp--;
 
+
                 	    }
                 	    break;
 
@@ -1775,14 +1817,14 @@
         }
         return ;
     }
-    // $ANTLR end lhs_block
+    // $ANTLR end "lhs_block"
 
 
-    // $ANTLR start lhs
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:128:1: lhs : ( ^( VT_OR_PREFIX ( lhs )+ ) | ^( VT_OR_INFIX lhs lhs ) | ^( VT_AND_PREFIX ( lhs )+ ) | ^( VT_AND_INFIX lhs lhs ) | ^( VK_EXISTS lhs ) | ^( VK_NOT lhs ) | ^( VK_EVAL VT_PAREN_CHUNK ) | ^( VK_FORALL ( lhs )+ ) | ^( FROM lhs_pattern from_elements ) | lhs_pattern );
+    // $ANTLR start "lhs"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:128:1: lhs : ( ^( VT_OR_PREFIX ( lhs )+ ) | ^( VT_OR_INFIX lhs lhs ) | ^( VT_AND_PREFIX ( lhs )+ ) | ^( VT_AND_INFIX lhs lhs ) | ^( VK_EXISTS lhs ) | ^( VK_NOT lhs ) | ^( VK_EVAL VT_PAREN_CHUNK ) | ^( VK_FORALL ( lhs )+ ) | ^( FROM lhs_pattern from_elements ) | lhs_pattern );
     public final void lhs() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:128:5: ( ^( VT_OR_PREFIX ( lhs )+ ) | ^( VT_OR_INFIX lhs lhs ) | ^( VT_AND_PREFIX ( lhs )+ ) | ^( VT_AND_INFIX lhs lhs ) | ^( VK_EXISTS lhs ) | ^( VK_NOT lhs ) | ^( VK_EVAL VT_PAREN_CHUNK ) | ^( VK_FORALL ( lhs )+ ) | ^( FROM lhs_pattern from_elements ) | lhs_pattern )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:128:5: ( ^( VT_OR_PREFIX ( lhs )+ ) | ^( VT_OR_INFIX lhs lhs ) | ^( VT_AND_PREFIX ( lhs )+ ) | ^( VT_AND_INFIX lhs lhs ) | ^( VK_EXISTS lhs ) | ^( VK_NOT lhs ) | ^( VK_EVAL VT_PAREN_CHUNK ) | ^( VK_FORALL ( lhs )+ ) | ^( FROM lhs_pattern from_elements ) | lhs_pattern )
             int alt29=10;
             switch ( input.LA(1) ) {
             case VT_OR_PREFIX:
@@ -1837,19 +1879,19 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("128:1: lhs : ( ^( VT_OR_PREFIX ( lhs )+ ) | ^( VT_OR_INFIX lhs lhs ) | ^( VT_AND_PREFIX ( lhs )+ ) | ^( VT_AND_INFIX lhs lhs ) | ^( VK_EXISTS lhs ) | ^( VK_NOT lhs ) | ^( VK_EVAL VT_PAREN_CHUNK ) | ^( VK_FORALL ( lhs )+ ) | ^( FROM lhs_pattern from_elements ) | lhs_pattern );", 29, 0, input);
+                    new NoViableAltException("", 29, 0, input);
 
                 throw nvae;
             }
 
             switch (alt29) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:128:7: ^( VT_OR_PREFIX ( lhs )+ )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:128:7: ^( VT_OR_PREFIX ( lhs )+ )
                     {
                     match(input,VT_OR_PREFIX,FOLLOW_VT_OR_PREFIX_in_lhs623); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:128:22: ( lhs )+
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:128:22: ( lhs )+
                     int cnt26=0;
                     loop26:
                     do {
@@ -1863,13 +1905,14 @@
 
                         switch (alt26) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:128:22: lhs
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:128:22: lhs
                     	    {
                     	    pushFollow(FOLLOW_lhs_in_lhs625);
                     	    lhs();
-                    	    _fsp--;
 
+                    	    state._fsp--;
 
+
                     	    }
                     	    break;
 
@@ -1888,31 +1931,33 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:129:4: ^( VT_OR_INFIX lhs lhs )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:129:4: ^( VT_OR_INFIX lhs lhs )
                     {
                     match(input,VT_OR_INFIX,FOLLOW_VT_OR_INFIX_in_lhs633); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_lhs_in_lhs635);
                     lhs();
-                    _fsp--;
 
+                    state._fsp--;
+
                     pushFollow(FOLLOW_lhs_in_lhs637);
                     lhs();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:130:4: ^( VT_AND_PREFIX ( lhs )+ )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:130:4: ^( VT_AND_PREFIX ( lhs )+ )
                     {
                     match(input,VT_AND_PREFIX,FOLLOW_VT_AND_PREFIX_in_lhs644); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:130:20: ( lhs )+
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:130:20: ( lhs )+
                     int cnt27=0;
                     loop27:
                     do {
@@ -1926,13 +1971,14 @@
 
                         switch (alt27) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:130:20: lhs
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:130:20: lhs
                     	    {
                     	    pushFollow(FOLLOW_lhs_in_lhs646);
                     	    lhs();
-                    	    _fsp--;
 
+                    	    state._fsp--;
 
+
                     	    }
                     	    break;
 
@@ -1951,56 +1997,60 @@
                     }
                     break;
                 case 4 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:131:4: ^( VT_AND_INFIX lhs lhs )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:131:4: ^( VT_AND_INFIX lhs lhs )
                     {
                     match(input,VT_AND_INFIX,FOLLOW_VT_AND_INFIX_in_lhs654); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_lhs_in_lhs656);
                     lhs();
-                    _fsp--;
 
+                    state._fsp--;
+
                     pushFollow(FOLLOW_lhs_in_lhs658);
                     lhs();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 5 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:132:4: ^( VK_EXISTS lhs )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:132:4: ^( VK_EXISTS lhs )
                     {
                     match(input,VK_EXISTS,FOLLOW_VK_EXISTS_in_lhs665); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_lhs_in_lhs667);
                     lhs();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 6 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:133:4: ^( VK_NOT lhs )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:133:4: ^( VK_NOT lhs )
                     {
                     match(input,VK_NOT,FOLLOW_VK_NOT_in_lhs674); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_lhs_in_lhs676);
                     lhs();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 7 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:134:4: ^( VK_EVAL VT_PAREN_CHUNK )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:134:4: ^( VK_EVAL VT_PAREN_CHUNK )
                     {
                     match(input,VK_EVAL,FOLLOW_VK_EVAL_in_lhs683); 
 
@@ -2012,12 +2062,12 @@
                     }
                     break;
                 case 8 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:135:4: ^( VK_FORALL ( lhs )+ )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:135:4: ^( VK_FORALL ( lhs )+ )
                     {
                     match(input,VK_FORALL,FOLLOW_VK_FORALL_in_lhs692); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:135:16: ( lhs )+
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:135:16: ( lhs )+
                     int cnt28=0;
                     loop28:
                     do {
@@ -2031,13 +2081,14 @@
 
                         switch (alt28) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:135:16: lhs
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:135:16: lhs
                     	    {
                     	    pushFollow(FOLLOW_lhs_in_lhs694);
                     	    lhs();
-                    	    _fsp--;
 
+                    	    state._fsp--;
 
+
                     	    }
                     	    break;
 
@@ -2056,32 +2107,35 @@
                     }
                     break;
                 case 9 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:136:4: ^( FROM lhs_pattern from_elements )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:136:4: ^( FROM lhs_pattern from_elements )
                     {
                     match(input,FROM,FOLLOW_FROM_in_lhs702); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_lhs_pattern_in_lhs704);
                     lhs_pattern();
-                    _fsp--;
 
+                    state._fsp--;
+
                     pushFollow(FOLLOW_from_elements_in_lhs706);
                     from_elements();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 10 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:137:4: lhs_pattern
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:137:4: lhs_pattern
                     {
                     pushFollow(FOLLOW_lhs_pattern_in_lhs712);
                     lhs_pattern();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
@@ -2095,14 +2149,14 @@
         }
         return ;
     }
-    // $ANTLR end lhs
+    // $ANTLR end "lhs"
 
 
-    // $ANTLR start from_elements
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:140:1: from_elements : ( ^( ACCUMULATE lhs ( accumulate_init_clause | accumulate_id_clause ) ) | ^( COLLECT lhs ) | ^( VK_ENTRY_POINT VT_ENTRYPOINT_ID ) | ^( VT_FROM_SOURCE ID ( VT_PAREN_CHUNK )? ( expression_chain )? ) );
+    // $ANTLR start "from_elements"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:140:1: from_elements : ( ^( ACCUMULATE lhs ( accumulate_init_clause | accumulate_id_clause ) ) | ^( COLLECT lhs ) | ^( VK_ENTRY_POINT VT_ENTRYPOINT_ID ) | ^( VT_FROM_SOURCE ID ( VT_PAREN_CHUNK )? ( expression_chain )? ) );
     public final void from_elements() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:141:2: ( ^( ACCUMULATE lhs ( accumulate_init_clause | accumulate_id_clause ) ) | ^( COLLECT lhs ) | ^( VK_ENTRY_POINT VT_ENTRYPOINT_ID ) | ^( VT_FROM_SOURCE ID ( VT_PAREN_CHUNK )? ( expression_chain )? ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:141:2: ( ^( ACCUMULATE lhs ( accumulate_init_clause | accumulate_id_clause ) ) | ^( COLLECT lhs ) | ^( VK_ENTRY_POINT VT_ENTRYPOINT_ID ) | ^( VT_FROM_SOURCE ID ( VT_PAREN_CHUNK )? ( expression_chain )? ) )
             int alt33=4;
             switch ( input.LA(1) ) {
             case ACCUMULATE:
@@ -2127,23 +2181,24 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("140:1: from_elements : ( ^( ACCUMULATE lhs ( accumulate_init_clause | accumulate_id_clause ) ) | ^( COLLECT lhs ) | ^( VK_ENTRY_POINT VT_ENTRYPOINT_ID ) | ^( VT_FROM_SOURCE ID ( VT_PAREN_CHUNK )? ( expression_chain )? ) );", 33, 0, input);
+                    new NoViableAltException("", 33, 0, input);
 
                 throw nvae;
             }
 
             switch (alt33) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:141:4: ^( ACCUMULATE lhs ( accumulate_init_clause | accumulate_id_clause ) )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:141:4: ^( ACCUMULATE lhs ( accumulate_init_clause | accumulate_id_clause ) )
                     {
                     match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_from_elements724); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_lhs_in_from_elements726);
                     lhs();
-                    _fsp--;
 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:141:21: ( accumulate_init_clause | accumulate_id_clause )
+                    state._fsp--;
+
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:141:21: ( accumulate_init_clause | accumulate_id_clause )
                     int alt30=2;
                     int LA30_0 = input.LA(1);
 
@@ -2155,29 +2210,31 @@
                     }
                     else {
                         NoViableAltException nvae =
-                            new NoViableAltException("141:21: ( accumulate_init_clause | accumulate_id_clause )", 30, 0, input);
+                            new NoViableAltException("", 30, 0, input);
 
                         throw nvae;
                     }
                     switch (alt30) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:141:22: accumulate_init_clause
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:141:22: accumulate_init_clause
                             {
                             pushFollow(FOLLOW_accumulate_init_clause_in_from_elements729);
                             accumulate_init_clause();
-                            _fsp--;
 
+                            state._fsp--;
 
+
                             }
                             break;
                         case 2 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:141:45: accumulate_id_clause
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:141:45: accumulate_id_clause
                             {
                             pushFollow(FOLLOW_accumulate_id_clause_in_from_elements731);
                             accumulate_id_clause();
-                            _fsp--;
 
+                            state._fsp--;
 
+
                             }
                             break;
 
@@ -2189,22 +2246,23 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:142:4: ^( COLLECT lhs )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:142:4: ^( COLLECT lhs )
                     {
                     match(input,COLLECT,FOLLOW_COLLECT_in_from_elements739); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_lhs_in_from_elements741);
                     lhs();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:143:4: ^( VK_ENTRY_POINT VT_ENTRYPOINT_ID )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:143:4: ^( VK_ENTRY_POINT VT_ENTRYPOINT_ID )
                     {
                     match(input,VK_ENTRY_POINT,FOLLOW_VK_ENTRY_POINT_in_from_elements748); 
 
@@ -2216,13 +2274,13 @@
                     }
                     break;
                 case 4 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:144:4: ^( VT_FROM_SOURCE ID ( VT_PAREN_CHUNK )? ( expression_chain )? )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:144:4: ^( VT_FROM_SOURCE ID ( VT_PAREN_CHUNK )? ( expression_chain )? )
                     {
                     match(input,VT_FROM_SOURCE,FOLLOW_VT_FROM_SOURCE_in_from_elements757); 
 
                     match(input, Token.DOWN, null); 
                     match(input,ID,FOLLOW_ID_in_from_elements759); 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:144:24: ( VT_PAREN_CHUNK )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:144:24: ( VT_PAREN_CHUNK )?
                     int alt31=2;
                     int LA31_0 = input.LA(1);
 
@@ -2231,7 +2289,7 @@
                     }
                     switch (alt31) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:144:24: VT_PAREN_CHUNK
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:144:24: VT_PAREN_CHUNK
                             {
                             match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_from_elements761); 
 
@@ -2240,7 +2298,7 @@
 
                     }
 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:144:40: ( expression_chain )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:144:40: ( expression_chain )?
                     int alt32=2;
                     int LA32_0 = input.LA(1);
 
@@ -2249,13 +2307,14 @@
                     }
                     switch (alt32) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:144:40: expression_chain
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:144:40: expression_chain
                             {
                             pushFollow(FOLLOW_expression_chain_in_from_elements764);
                             expression_chain();
-                            _fsp--;
 
+                            state._fsp--;
 
+
                             }
                             break;
 
@@ -2277,15 +2336,15 @@
         }
         return ;
     }
-    // $ANTLR end from_elements
+    // $ANTLR end "from_elements"
 
 
-    // $ANTLR start accumulate_init_clause
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:147:1: accumulate_init_clause : ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT VT_PAREN_CHUNK ) ^( VK_ACTION VT_PAREN_CHUNK ) ( accumulate_init_reverse_clause )? ^( VK_RESULT VT_PAREN_CHUNK ) ) ;
+    // $ANTLR start "accumulate_init_clause"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:147:1: accumulate_init_clause : ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT VT_PAREN_CHUNK ) ^( VK_ACTION VT_PAREN_CHUNK ) ( accumulate_init_reverse_clause )? ^( VK_RESULT VT_PAREN_CHUNK ) ) ;
     public final void accumulate_init_clause() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:148:2: ( ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT VT_PAREN_CHUNK ) ^( VK_ACTION VT_PAREN_CHUNK ) ( accumulate_init_reverse_clause )? ^( VK_RESULT VT_PAREN_CHUNK ) ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:148:4: ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT VT_PAREN_CHUNK ) ^( VK_ACTION VT_PAREN_CHUNK ) ( accumulate_init_reverse_clause )? ^( VK_RESULT VT_PAREN_CHUNK ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:148:2: ( ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT VT_PAREN_CHUNK ) ^( VK_ACTION VT_PAREN_CHUNK ) ( accumulate_init_reverse_clause )? ^( VK_RESULT VT_PAREN_CHUNK ) ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:148:4: ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT VT_PAREN_CHUNK ) ^( VK_ACTION VT_PAREN_CHUNK ) ( accumulate_init_reverse_clause )? ^( VK_RESULT VT_PAREN_CHUNK ) )
             {
             match(input,VT_ACCUMULATE_INIT_CLAUSE,FOLLOW_VT_ACCUMULATE_INIT_CLAUSE_in_accumulate_init_clause778); 
 
@@ -2302,7 +2361,7 @@
             match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause797); 
 
             match(input, Token.UP, null); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:151:4: ( accumulate_init_reverse_clause )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:151:4: ( accumulate_init_reverse_clause )?
             int alt34=2;
             int LA34_0 = input.LA(1);
 
@@ -2311,13 +2370,14 @@
             }
             switch (alt34) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:151:4: accumulate_init_reverse_clause
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:151:4: accumulate_init_reverse_clause
                     {
                     pushFollow(FOLLOW_accumulate_init_reverse_clause_in_accumulate_init_clause804);
                     accumulate_init_reverse_clause();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
@@ -2343,15 +2403,15 @@
         }
         return ;
     }
-    // $ANTLR end accumulate_init_clause
+    // $ANTLR end "accumulate_init_clause"
 
 
-    // $ANTLR start accumulate_init_reverse_clause
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:155:1: accumulate_init_reverse_clause : ^( VK_REVERSE VT_PAREN_CHUNK ) ;
+    // $ANTLR start "accumulate_init_reverse_clause"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:155:1: accumulate_init_reverse_clause : ^( VK_REVERSE VT_PAREN_CHUNK ) ;
     public final void accumulate_init_reverse_clause() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:156:2: ( ^( VK_REVERSE VT_PAREN_CHUNK ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:156:4: ^( VK_REVERSE VT_PAREN_CHUNK )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:156:2: ( ^( VK_REVERSE VT_PAREN_CHUNK ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:156:4: ^( VK_REVERSE VT_PAREN_CHUNK )
             {
             match(input,VK_REVERSE,FOLLOW_VK_REVERSE_in_accumulate_init_reverse_clause827); 
 
@@ -2371,15 +2431,15 @@
         }
         return ;
     }
-    // $ANTLR end accumulate_init_reverse_clause
+    // $ANTLR end "accumulate_init_reverse_clause"
 
 
-    // $ANTLR start accumulate_id_clause
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:160:1: accumulate_id_clause : ^( VT_ACCUMULATE_ID_CLAUSE ID VT_PAREN_CHUNK ) ;
+    // $ANTLR start "accumulate_id_clause"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:160:1: accumulate_id_clause : ^( VT_ACCUMULATE_ID_CLAUSE ID VT_PAREN_CHUNK ) ;
     public final void accumulate_id_clause() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:161:2: ( ^( VT_ACCUMULATE_ID_CLAUSE ID VT_PAREN_CHUNK ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:161:4: ^( VT_ACCUMULATE_ID_CLAUSE ID VT_PAREN_CHUNK )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:161:2: ( ^( VT_ACCUMULATE_ID_CLAUSE ID VT_PAREN_CHUNK ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:161:4: ^( VT_ACCUMULATE_ID_CLAUSE ID VT_PAREN_CHUNK )
             {
             match(input,VT_ACCUMULATE_ID_CLAUSE,FOLLOW_VT_ACCUMULATE_ID_CLAUSE_in_accumulate_id_clause843); 
 
@@ -2400,26 +2460,27 @@
         }
         return ;
     }
-    // $ANTLR end accumulate_id_clause
+    // $ANTLR end "accumulate_id_clause"
 
 
-    // $ANTLR start lhs_pattern
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:164:1: lhs_pattern : ^( VT_PATTERN fact_expression ) ( over_clause )? ;
+    // $ANTLR start "lhs_pattern"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:164:1: lhs_pattern : ^( VT_PATTERN fact_expression ) ( over_clause )? ;
     public final void lhs_pattern() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:165:2: ( ^( VT_PATTERN fact_expression ) ( over_clause )? )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:165:4: ^( VT_PATTERN fact_expression ) ( over_clause )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:165:2: ( ^( VT_PATTERN fact_expression ) ( over_clause )? )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:165:4: ^( VT_PATTERN fact_expression ) ( over_clause )?
             {
             match(input,VT_PATTERN,FOLLOW_VT_PATTERN_in_lhs_pattern860); 
 
             match(input, Token.DOWN, null); 
             pushFollow(FOLLOW_fact_expression_in_lhs_pattern862);
             fact_expression();
-            _fsp--;
 
+            state._fsp--;
 
+
             match(input, Token.UP, null); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:165:34: ( over_clause )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:165:34: ( over_clause )?
             int alt35=2;
             int LA35_0 = input.LA(1);
 
@@ -2428,13 +2489,14 @@
             }
             switch (alt35) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:165:34: over_clause
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:165:34: over_clause
                     {
                     pushFollow(FOLLOW_over_clause_in_lhs_pattern865);
                     over_clause();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
@@ -2452,20 +2514,20 @@
         }
         return ;
     }
-    // $ANTLR end lhs_pattern
+    // $ANTLR end "lhs_pattern"
 
 
-    // $ANTLR start over_clause
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:168:1: over_clause : ^( OVER ( over_element )+ ) ;
+    // $ANTLR start "over_clause"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:168:1: over_clause : ^( OVER ( over_element )+ ) ;
     public final void over_clause() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:169:2: ( ^( OVER ( over_element )+ ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:169:4: ^( OVER ( over_element )+ )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:169:2: ( ^( OVER ( over_element )+ ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:169:4: ^( OVER ( over_element )+ )
             {
             match(input,OVER,FOLLOW_OVER_in_over_clause878); 
 
             match(input, Token.DOWN, null); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:169:11: ( over_element )+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:169:11: ( over_element )+
             int cnt36=0;
             loop36:
             do {
@@ -2479,13 +2541,14 @@
 
                 switch (alt36) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:169:11: over_element
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:169:11: over_element
             	    {
             	    pushFollow(FOLLOW_over_element_in_over_clause880);
             	    over_element();
-            	    _fsp--;
 
+            	    state._fsp--;
 
+
             	    }
             	    break;
 
@@ -2512,15 +2575,15 @@
         }
         return ;
     }
-    // $ANTLR end over_clause
+    // $ANTLR end "over_clause"
 
 
-    // $ANTLR start over_element
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:172:1: over_element : ^( VT_BEHAVIOR ID ID VT_PAREN_CHUNK ) ;
+    // $ANTLR start "over_element"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:172:1: over_element : ^( VT_BEHAVIOR ID ID VT_PAREN_CHUNK ) ;
     public final void over_element() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:173:2: ( ^( VT_BEHAVIOR ID ID VT_PAREN_CHUNK ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:173:4: ^( VT_BEHAVIOR ID ID VT_PAREN_CHUNK )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:173:2: ( ^( VT_BEHAVIOR ID ID VT_PAREN_CHUNK ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:173:4: ^( VT_BEHAVIOR ID ID VT_PAREN_CHUNK )
             {
             match(input,VT_BEHAVIOR,FOLLOW_VT_BEHAVIOR_in_over_element894); 
 
@@ -2542,14 +2605,14 @@
         }
         return ;
     }
-    // $ANTLR end over_element
+    // $ANTLR end "over_element"
 
 
-    // $ANTLR start fact_expression
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:176:1: fact_expression : ( ^( DOUBLE_PIPE fact_expression fact_expression ) | ^( DOUBLE_AMPER fact_expression fact_expression ) | ^( VT_FACT_BINDING VT_LABEL fact_expression ) | ^( VT_FACT pattern_type ( fact_expression )* ) | ^( VT_FACT_OR fact_expression fact_expression ) | ^( VK_EVAL VT_PAREN_CHUNK ) | ^( VK_IN ( VK_NOT )? ( fact_expression )+ ) | ^( EQUAL fact_expression ) | ^( GREATER fact_expression ) | ^( GREATER_EQUAL fact_expression ) | ^( LESS fact_expression ) | ^( LESS_EQUAL fact_expression ) | ^( NOT_EQUAL fact_expression ) | ^( VK_CONTAINS ( VK_NOT )? fact_expression ) | ^( VK_EXCLUDES ( VK_NOT )? fact_expression ) | ^( VK_MATCHES ( VK_NOT )? fact_expression ) | ^( VK_SOUNDSLIKE ( VK_NOT )? fact_expression ) | ^( VK_MEMBEROF ( VK_NOT )? fact_expression ) | ^( ID ( VK_NOT )? ( VT_SQUARE_CHUNK )? fact_expression ) | ^( VT_BIND_FIELD VT_LABEL fact_e!
 xpression ) | ^( VT_FIELD fact_expression ( fact_expression )? ) | ^( VT_ACCESSOR_PATH ( accessor_element )+ ) | STRING | INT | FLOAT | BOOL | NULL | VT_PAREN_CHUNK );
+    // $ANTLR start "fact_expression"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:176:1: fact_expression : ( ^( DOUBLE_PIPE fact_expression fact_expression ) | ^( DOUBLE_AMPER fact_expression fact_expression ) | ^( VT_FACT_BINDING VT_LABEL fact_expression ) | ^( VT_FACT pattern_type ( fact_expression )* ) | ^( VT_FACT_OR fact_expression fact_expression ) | ^( VK_EVAL VT_PAREN_CHUNK ) | ^( VK_IN ( VK_NOT )? ( fact_expression )+ ) | ^( EQUAL fact_expression ) | ^( GREATER fact_expression ) | ^( GREATER_EQUAL fact_expression ) | ^( LESS fact_expression ) | ^( LESS_EQUAL fact_expression ) | ^( NOT_EQUAL fact_expression ) | ^( VK_CONTAINS ( VK_NOT )? fact_expression ) | ^( VK_EXCLUDES ( VK_NOT )? fact_expression ) | ^( VK_MATCHES ( VK_NOT )? fact_expression ) | ^( VK_SOUNDSLIKE ( VK_NOT )? fact_expression ) | ^( VK_MEMBEROF ( VK_NOT )? fact_expression ) | ^( ID ( VK_NOT )? ( VT_SQUARE_CHUNK )? fact_expression ) | ^( VT_BIND_FIELD VT_LABEL !
 fact_expression ) | ^( VT_FIELD fact_expression ( fact_expression )? ) | ^( VT_ACCESSOR_PATH ( accessor_element )+ ) | STRING | INT | FLOAT | BOOL | NULL | VT_PAREN_CHUNK );
     public final void fact_expression() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:177:2: ( ^( DOUBLE_PIPE fact_expression fact_expression ) | ^( DOUBLE_AMPER fact_expression fact_expression ) | ^( VT_FACT_BINDING VT_LABEL fact_expression ) | ^( VT_FACT pattern_type ( fact_expression )* ) | ^( VT_FACT_OR fact_expression fact_expression ) | ^( VK_EVAL VT_PAREN_CHUNK ) | ^( VK_IN ( VK_NOT )? ( fact_expression )+ ) | ^( EQUAL fact_expression ) | ^( GREATER fact_expression ) | ^( GREATER_EQUAL fact_expression ) | ^( LESS fact_expression ) | ^( LESS_EQUAL fact_expression ) | ^( NOT_EQUAL fact_expression ) | ^( VK_CONTAINS ( VK_NOT )? fact_expression ) | ^( VK_EXCLUDES ( VK_NOT )? fact_expression ) | ^( VK_MATCHES ( VK_NOT )? fact_expression ) | ^( VK_SOUNDSLIKE ( VK_NOT )? fact_expression ) | ^( VK_MEMBEROF ( VK_NOT )? fact_expression ) | ^( ID ( VK_NOT )? ( VT_SQUARE_CHUNK )? fact_expression ) | ^( VT_BIND_FIELD VT_LABEL fact_expression !
 ) | ^( VT_FIELD fact_expression ( fact_expression )? ) | ^( VT_ACCESSOR_PATH ( accessor_element )+ ) | STRING | INT | FLOAT | BOOL | NULL | VT_PAREN_CHUNK )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:177:2: ( ^( DOUBLE_PIPE fact_expression fact_expression ) | ^( DOUBLE_AMPER fact_expression fact_expression ) | ^( VT_FACT_BINDING VT_LABEL fact_expression ) | ^( VT_FACT pattern_type ( fact_expression )* ) | ^( VT_FACT_OR fact_expression fact_expression ) | ^( VK_EVAL VT_PAREN_CHUNK ) | ^( VK_IN ( VK_NOT )? ( fact_expression )+ ) | ^( EQUAL fact_expression ) | ^( GREATER fact_expression ) | ^( GREATER_EQUAL fact_expression ) | ^( LESS fact_expression ) | ^( LESS_EQUAL fact_expression ) | ^( NOT_EQUAL fact_expression ) | ^( VK_CONTAINS ( VK_NOT )? fact_expression ) | ^( VK_EXCLUDES ( VK_NOT )? fact_expression ) | ^( VK_MATCHES ( VK_NOT )? fact_expression ) | ^( VK_SOUNDSLIKE ( VK_NOT )? fact_expression ) | ^( VK_MEMBEROF ( VK_NOT )? fact_expression ) | ^( ID ( VK_NOT )? ( VT_SQUARE_CHUNK )? fact_expression ) | ^( VT_BIND_FIELD VT_LABEL fact_expre!
 ssion ) | ^( VT_FIELD fact_expression ( fact_expression )? ) | ^( VT_ACCESSOR_PATH ( accessor_element )+ ) | STRING | INT | FLOAT | BOOL | NULL | VT_PAREN_CHUNK )
             int alt49=28;
             switch ( input.LA(1) ) {
             case DOUBLE_PIPE:
@@ -2694,52 +2757,56 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("176:1: fact_expression : ( ^( DOUBLE_PIPE fact_expression fact_expression ) | ^( DOUBLE_AMPER fact_expression fact_expression ) | ^( VT_FACT_BINDING VT_LABEL fact_expression ) | ^( VT_FACT pattern_type ( fact_expression )* ) | ^( VT_FACT_OR fact_expression fact_expression ) | ^( VK_EVAL VT_PAREN_CHUNK ) | ^( VK_IN ( VK_NOT )? ( fact_expression )+ ) | ^( EQUAL fact_expression ) | ^( GREATER fact_expression ) | ^( GREATER_EQUAL fact_expression ) | ^( LESS fact_expression ) | ^( LESS_EQUAL fact_expression ) | ^( NOT_EQUAL fact_expression ) | ^( VK_CONTAINS ( VK_NOT )? fact_expression ) | ^( VK_EXCLUDES ( VK_NOT )? fact_expression ) | ^( VK_MATCHES ( VK_NOT )? fact_expression ) | ^( VK_SOUNDSLIKE ( VK_NOT )? fact_expression ) | ^( VK_MEMBEROF ( VK_NOT )? fact_expression ) | ^( ID ( VK_NOT )? ( VT_SQUARE_CHUNK )? fact_expression ) | ^( VT_BIND_FIELD VT_LABEL fact_expression ) | ^( VT_FIELD fact_expression ( fact_expression )? ) | ^( !
 VT_ACCESSOR_PATH ( accessor_element )+ ) | STRING | INT | FLOAT | BOOL | NULL | VT_PAREN_CHUNK );", 49, 0, input);
+                    new NoViableAltException("", 49, 0, input);
 
                 throw nvae;
             }
 
             switch (alt49) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:177:4: ^( DOUBLE_PIPE fact_expression fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:177:4: ^( DOUBLE_PIPE fact_expression fact_expression )
                     {
                     match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_fact_expression913); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression915);
                     fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
+
                     pushFollow(FOLLOW_fact_expression_in_fact_expression917);
                     fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:178:4: ^( DOUBLE_AMPER fact_expression fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:178:4: ^( DOUBLE_AMPER fact_expression fact_expression )
                     {
                     match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_fact_expression924); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression926);
                     fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
+
                     pushFollow(FOLLOW_fact_expression_in_fact_expression928);
                     fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:179:4: ^( VT_FACT_BINDING VT_LABEL fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:179:4: ^( VT_FACT_BINDING VT_LABEL fact_expression )
                     {
                     match(input,VT_FACT_BINDING,FOLLOW_VT_FACT_BINDING_in_fact_expression935); 
 
@@ -2747,43 +2814,46 @@
                     match(input,VT_LABEL,FOLLOW_VT_LABEL_in_fact_expression937); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression939);
                     fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 4 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:180:4: ^( VT_FACT pattern_type ( fact_expression )* )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:180:4: ^( VT_FACT pattern_type ( fact_expression )* )
                     {
                     match(input,VT_FACT,FOLLOW_VT_FACT_in_fact_expression946); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_pattern_type_in_fact_expression948);
                     pattern_type();
-                    _fsp--;
 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:180:27: ( fact_expression )*
+                    state._fsp--;
+
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:180:27: ( fact_expression )*
                     loop37:
                     do {
                         int alt37=2;
                         int LA37_0 = input.LA(1);
 
-                        if ( (LA37_0==VT_FACT||LA37_0==VT_PAREN_CHUNK||(LA37_0>=VT_FACT_BINDING && LA37_0<=VT_ACCESSOR_PATH)||(LA37_0>=VK_EVAL && LA37_0<=VK_MEMBEROF)||LA37_0==VK_IN||LA37_0==ID||LA37_0==STRING||(LA37_0>=BOOL && LA37_0<=DOUBLE_AMPER)||(LA37_0>=EQUAL && LA37_0<=NOT_EQUAL)||(LA37_0>=FLOAT && LA37_0<=NULL)) ) {
+                        if ( (LA37_0==VT_FACT||LA37_0==VT_PAREN_CHUNK||(LA37_0>=VT_FACT_BINDING && LA37_0<=VT_ACCESSOR_PATH)||(LA37_0>=VK_EVAL && LA37_0<=VK_MEMBEROF)||LA37_0==VK_IN||LA37_0==ID||LA37_0==STRING||(LA37_0>=BOOL && LA37_0<=DOUBLE_AMPER)||(LA37_0>=EQUAL && LA37_0<=NULL)) ) {
                             alt37=1;
                         }
 
 
                         switch (alt37) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:180:27: fact_expression
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:180:27: fact_expression
                     	    {
                     	    pushFollow(FOLLOW_fact_expression_in_fact_expression950);
                     	    fact_expression();
-                    	    _fsp--;
 
+                    	    state._fsp--;
 
+
                     	    }
                     	    break;
 
@@ -2798,26 +2868,28 @@
                     }
                     break;
                 case 5 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:181:4: ^( VT_FACT_OR fact_expression fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:181:4: ^( VT_FACT_OR fact_expression fact_expression )
                     {
                     match(input,VT_FACT_OR,FOLLOW_VT_FACT_OR_in_fact_expression958); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression960);
                     fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
+
                     pushFollow(FOLLOW_fact_expression_in_fact_expression962);
                     fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 6 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:182:4: ^( VK_EVAL VT_PAREN_CHUNK )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:182:4: ^( VK_EVAL VT_PAREN_CHUNK )
                     {
                     match(input,VK_EVAL,FOLLOW_VK_EVAL_in_fact_expression969); 
 
@@ -2829,12 +2901,12 @@
                     }
                     break;
                 case 7 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:183:4: ^( VK_IN ( VK_NOT )? ( fact_expression )+ )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:183:4: ^( VK_IN ( VK_NOT )? ( fact_expression )+ )
                     {
                     match(input,VK_IN,FOLLOW_VK_IN_in_fact_expression978); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:183:12: ( VK_NOT )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:183:12: ( VK_NOT )?
                     int alt38=2;
                     int LA38_0 = input.LA(1);
 
@@ -2843,7 +2915,7 @@
                     }
                     switch (alt38) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:183:12: VK_NOT
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:183:12: VK_NOT
                             {
                             match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression980); 
 
@@ -2852,27 +2924,28 @@
 
                     }
 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:183:20: ( fact_expression )+
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:183:20: ( fact_expression )+
                     int cnt39=0;
                     loop39:
                     do {
                         int alt39=2;
                         int LA39_0 = input.LA(1);
 
-                        if ( (LA39_0==VT_FACT||LA39_0==VT_PAREN_CHUNK||(LA39_0>=VT_FACT_BINDING && LA39_0<=VT_ACCESSOR_PATH)||(LA39_0>=VK_EVAL && LA39_0<=VK_MEMBEROF)||LA39_0==VK_IN||LA39_0==ID||LA39_0==STRING||(LA39_0>=BOOL && LA39_0<=DOUBLE_AMPER)||(LA39_0>=EQUAL && LA39_0<=NOT_EQUAL)||(LA39_0>=FLOAT && LA39_0<=NULL)) ) {
+                        if ( (LA39_0==VT_FACT||LA39_0==VT_PAREN_CHUNK||(LA39_0>=VT_FACT_BINDING && LA39_0<=VT_ACCESSOR_PATH)||(LA39_0>=VK_EVAL && LA39_0<=VK_MEMBEROF)||LA39_0==VK_IN||LA39_0==ID||LA39_0==STRING||(LA39_0>=BOOL && LA39_0<=DOUBLE_AMPER)||(LA39_0>=EQUAL && LA39_0<=NULL)) ) {
                             alt39=1;
                         }
 
 
                         switch (alt39) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:183:20: fact_expression
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:183:20: fact_expression
                     	    {
                     	    pushFollow(FOLLOW_fact_expression_in_fact_expression983);
                     	    fact_expression();
-                    	    _fsp--;
 
+                    	    state._fsp--;
 
+
                     	    }
                     	    break;
 
@@ -2891,102 +2964,108 @@
                     }
                     break;
                 case 8 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:184:4: ^( EQUAL fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:184:4: ^( EQUAL fact_expression )
                     {
                     match(input,EQUAL,FOLLOW_EQUAL_in_fact_expression991); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression993);
                     fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 9 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:185:4: ^( GREATER fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:185:4: ^( GREATER fact_expression )
                     {
                     match(input,GREATER,FOLLOW_GREATER_in_fact_expression1000); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1002);
                     fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 10 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:186:4: ^( GREATER_EQUAL fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:186:4: ^( GREATER_EQUAL fact_expression )
                     {
                     match(input,GREATER_EQUAL,FOLLOW_GREATER_EQUAL_in_fact_expression1009); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1011);
                     fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 11 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:187:4: ^( LESS fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:187:4: ^( LESS fact_expression )
                     {
                     match(input,LESS,FOLLOW_LESS_in_fact_expression1018); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1020);
                     fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 12 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:188:4: ^( LESS_EQUAL fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:188:4: ^( LESS_EQUAL fact_expression )
                     {
                     match(input,LESS_EQUAL,FOLLOW_LESS_EQUAL_in_fact_expression1027); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1029);
                     fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 13 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:189:4: ^( NOT_EQUAL fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:189:4: ^( NOT_EQUAL fact_expression )
                     {
                     match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_fact_expression1036); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1038);
                     fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 14 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:190:4: ^( VK_CONTAINS ( VK_NOT )? fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:190:4: ^( VK_CONTAINS ( VK_NOT )? fact_expression )
                     {
                     match(input,VK_CONTAINS,FOLLOW_VK_CONTAINS_in_fact_expression1045); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:190:18: ( VK_NOT )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:190:18: ( VK_NOT )?
                     int alt40=2;
                     int LA40_0 = input.LA(1);
 
@@ -2995,7 +3074,7 @@
                     }
                     switch (alt40) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:190:18: VK_NOT
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:190:18: VK_NOT
                             {
                             match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1047); 
 
@@ -3006,20 +3085,21 @@
 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1050);
                     fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 15 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:191:4: ^( VK_EXCLUDES ( VK_NOT )? fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:191:4: ^( VK_EXCLUDES ( VK_NOT )? fact_expression )
                     {
                     match(input,VK_EXCLUDES,FOLLOW_VK_EXCLUDES_in_fact_expression1057); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:191:18: ( VK_NOT )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:191:18: ( VK_NOT )?
                     int alt41=2;
                     int LA41_0 = input.LA(1);
 
@@ -3028,7 +3108,7 @@
                     }
                     switch (alt41) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:191:18: VK_NOT
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:191:18: VK_NOT
                             {
                             match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1059); 
 
@@ -3039,20 +3119,21 @@
 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1062);
                     fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 16 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:192:4: ^( VK_MATCHES ( VK_NOT )? fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:192:4: ^( VK_MATCHES ( VK_NOT )? fact_expression )
                     {
                     match(input,VK_MATCHES,FOLLOW_VK_MATCHES_in_fact_expression1069); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:192:17: ( VK_NOT )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:192:17: ( VK_NOT )?
                     int alt42=2;
                     int LA42_0 = input.LA(1);
 
@@ -3061,7 +3142,7 @@
                     }
                     switch (alt42) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:192:17: VK_NOT
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:192:17: VK_NOT
                             {
                             match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1071); 
 
@@ -3072,20 +3153,21 @@
 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1074);
                     fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 17 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:193:4: ^( VK_SOUNDSLIKE ( VK_NOT )? fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:193:4: ^( VK_SOUNDSLIKE ( VK_NOT )? fact_expression )
                     {
                     match(input,VK_SOUNDSLIKE,FOLLOW_VK_SOUNDSLIKE_in_fact_expression1081); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:193:20: ( VK_NOT )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:193:20: ( VK_NOT )?
                     int alt43=2;
                     int LA43_0 = input.LA(1);
 
@@ -3094,7 +3176,7 @@
                     }
                     switch (alt43) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:193:20: VK_NOT
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:193:20: VK_NOT
                             {
                             match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1083); 
 
@@ -3105,20 +3187,21 @@
 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1086);
                     fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 18 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:194:4: ^( VK_MEMBEROF ( VK_NOT )? fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:194:4: ^( VK_MEMBEROF ( VK_NOT )? fact_expression )
                     {
                     match(input,VK_MEMBEROF,FOLLOW_VK_MEMBEROF_in_fact_expression1093); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:194:18: ( VK_NOT )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:194:18: ( VK_NOT )?
                     int alt44=2;
                     int LA44_0 = input.LA(1);
 
@@ -3127,7 +3210,7 @@
                     }
                     switch (alt44) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:194:18: VK_NOT
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:194:18: VK_NOT
                             {
                             match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1095); 
 
@@ -3138,20 +3221,21 @@
 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1098);
                     fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 19 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:195:4: ^( ID ( VK_NOT )? ( VT_SQUARE_CHUNK )? fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:195:4: ^( ID ( VK_NOT )? ( VT_SQUARE_CHUNK )? fact_expression )
                     {
                     match(input,ID,FOLLOW_ID_in_fact_expression1105); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:195:9: ( VK_NOT )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:195:9: ( VK_NOT )?
                     int alt45=2;
                     int LA45_0 = input.LA(1);
 
@@ -3160,7 +3244,7 @@
                     }
                     switch (alt45) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:195:9: VK_NOT
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:195:9: VK_NOT
                             {
                             match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1107); 
 
@@ -3169,7 +3253,7 @@
 
                     }
 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:195:17: ( VT_SQUARE_CHUNK )?
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:195:17: ( VT_SQUARE_CHUNK )?
                     int alt46=2;
                     int LA46_0 = input.LA(1);
 
@@ -3178,7 +3262,7 @@
                     }
                     switch (alt46) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:195:17: VT_SQUARE_CHUNK
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:195:17: VT_SQUARE_CHUNK
                             {
                             match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_fact_expression1110); 
 
@@ -3189,15 +3273,16 @@
 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1113);
                     fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 20 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:196:4: ^( VT_BIND_FIELD VT_LABEL fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:196:4: ^( VT_BIND_FIELD VT_LABEL fact_expression )
                     {
                     match(input,VT_BIND_FIELD,FOLLOW_VT_BIND_FIELD_in_fact_expression1120); 
 
@@ -3205,39 +3290,42 @@
                     match(input,VT_LABEL,FOLLOW_VT_LABEL_in_fact_expression1122); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1124);
                     fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 21 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:197:4: ^( VT_FIELD fact_expression ( fact_expression )? )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:197:4: ^( VT_FIELD fact_expression ( fact_expression )? )
                     {
                     match(input,VT_FIELD,FOLLOW_VT_FIELD_in_fact_expression1131); 
 
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1133);
                     fact_expression();
-                    _fsp--;
 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:197:31: ( fact_expression )?
+                    state._fsp--;
+
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:197:31: ( fact_expression )?
                     int alt47=2;
                     int LA47_0 = input.LA(1);
 
-                    if ( (LA47_0==VT_FACT||LA47_0==VT_PAREN_CHUNK||(LA47_0>=VT_FACT_BINDING && LA47_0<=VT_ACCESSOR_PATH)||(LA47_0>=VK_EVAL && LA47_0<=VK_MEMBEROF)||LA47_0==VK_IN||LA47_0==ID||LA47_0==STRING||(LA47_0>=BOOL && LA47_0<=DOUBLE_AMPER)||(LA47_0>=EQUAL && LA47_0<=NOT_EQUAL)||(LA47_0>=FLOAT && LA47_0<=NULL)) ) {
+                    if ( (LA47_0==VT_FACT||LA47_0==VT_PAREN_CHUNK||(LA47_0>=VT_FACT_BINDING && LA47_0<=VT_ACCESSOR_PATH)||(LA47_0>=VK_EVAL && LA47_0<=VK_MEMBEROF)||LA47_0==VK_IN||LA47_0==ID||LA47_0==STRING||(LA47_0>=BOOL && LA47_0<=DOUBLE_AMPER)||(LA47_0>=EQUAL && LA47_0<=NULL)) ) {
                         alt47=1;
                     }
                     switch (alt47) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:197:31: fact_expression
+                            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:197:31: fact_expression
                             {
                             pushFollow(FOLLOW_fact_expression_in_fact_expression1135);
                             fact_expression();
-                            _fsp--;
 
+                            state._fsp--;
 
+
                             }
                             break;
 
@@ -3249,12 +3337,12 @@
                     }
                     break;
                 case 22 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:198:4: ^( VT_ACCESSOR_PATH ( accessor_element )+ )
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:198:4: ^( VT_ACCESSOR_PATH ( accessor_element )+ )
                     {
                     match(input,VT_ACCESSOR_PATH,FOLLOW_VT_ACCESSOR_PATH_in_fact_expression1143); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:198:23: ( accessor_element )+
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:198:23: ( accessor_element )+
                     int cnt48=0;
                     loop48:
                     do {
@@ -3268,13 +3356,14 @@
 
                         switch (alt48) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:198:23: accessor_element
+                    	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:198:23: accessor_element
                     	    {
                     	    pushFollow(FOLLOW_accessor_element_in_fact_expression1145);
                     	    accessor_element();
-                    	    _fsp--;
 
+                    	    state._fsp--;
 
+
                     	    }
                     	    break;
 
@@ -3293,42 +3382,42 @@
                     }
                     break;
                 case 23 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:199:4: STRING
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:199:4: STRING
                     {
                     match(input,STRING,FOLLOW_STRING_in_fact_expression1152); 
 
                     }
                     break;
                 case 24 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:200:4: INT
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:200:4: INT
                     {
                     match(input,INT,FOLLOW_INT_in_fact_expression1157); 
 
                     }
                     break;
                 case 25 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:201:4: FLOAT
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:201:4: FLOAT
                     {
                     match(input,FLOAT,FOLLOW_FLOAT_in_fact_expression1162); 
 
                     }
                     break;
                 case 26 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:202:4: BOOL
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:202:4: BOOL
                     {
                     match(input,BOOL,FOLLOW_BOOL_in_fact_expression1167); 
 
                     }
                     break;
                 case 27 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:203:4: NULL
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:203:4: NULL
                     {
                     match(input,NULL,FOLLOW_NULL_in_fact_expression1172); 
 
                     }
                     break;
                 case 28 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:204:4: VT_PAREN_CHUNK
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:204:4: VT_PAREN_CHUNK
                     {
                     match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_fact_expression1177); 
 
@@ -3345,20 +3434,20 @@
         }
         return ;
     }
-    // $ANTLR end fact_expression
+    // $ANTLR end "fact_expression"
 
 
-    // $ANTLR start pattern_type
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:207:1: pattern_type : ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) ;
+    // $ANTLR start "pattern_type"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:207:1: pattern_type : ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) ;
     public final void pattern_type() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:208:2: ( ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:208:4: ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:208:2: ( ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:208:4: ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
             {
             match(input,VT_PATTERN_TYPE,FOLLOW_VT_PATTERN_TYPE_in_pattern_type1189); 
 
             match(input, Token.DOWN, null); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:208:22: ( ID )+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:208:22: ( ID )+
             int cnt50=0;
             loop50:
             do {
@@ -3372,7 +3461,7 @@
 
                 switch (alt50) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:208:22: ID
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:208:22: ID
             	    {
             	    match(input,ID,FOLLOW_ID_in_pattern_type1191); 
 
@@ -3388,7 +3477,7 @@
                 cnt50++;
             } while (true);
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:208:26: ( dimension_definition )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:208:26: ( dimension_definition )*
             loop51:
             do {
                 int alt51=2;
@@ -3401,13 +3490,14 @@
 
                 switch (alt51) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:208:26: dimension_definition
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:208:26: dimension_definition
             	    {
             	    pushFollow(FOLLOW_dimension_definition_in_pattern_type1194);
             	    dimension_definition();
-            	    _fsp--;
 
+            	    state._fsp--;
 
+
             	    }
             	    break;
 
@@ -3430,20 +3520,20 @@
         }
         return ;
     }
-    // $ANTLR end pattern_type
+    // $ANTLR end "pattern_type"
 
 
-    // $ANTLR start data_type
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:211:1: data_type : ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) ;
+    // $ANTLR start "data_type"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:211:1: data_type : ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) ;
     public final void data_type() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:212:2: ( ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:212:4: ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:212:2: ( ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:212:4: ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
             {
             match(input,VT_DATA_TYPE,FOLLOW_VT_DATA_TYPE_in_data_type1208); 
 
             match(input, Token.DOWN, null); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:212:19: ( ID )+
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:212:19: ( ID )+
             int cnt52=0;
             loop52:
             do {
@@ -3457,7 +3547,7 @@
 
                 switch (alt52) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:212:19: ID
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:212:19: ID
             	    {
             	    match(input,ID,FOLLOW_ID_in_data_type1210); 
 
@@ -3473,7 +3563,7 @@
                 cnt52++;
             } while (true);
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:212:23: ( dimension_definition )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:212:23: ( dimension_definition )*
             loop53:
             do {
                 int alt53=2;
@@ -3486,13 +3576,14 @@
 
                 switch (alt53) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:212:23: dimension_definition
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:212:23: dimension_definition
             	    {
             	    pushFollow(FOLLOW_dimension_definition_in_data_type1213);
             	    dimension_definition();
-            	    _fsp--;
 
+            	    state._fsp--;
 
+
             	    }
             	    break;
 
@@ -3515,15 +3606,15 @@
         }
         return ;
     }
-    // $ANTLR end data_type
+    // $ANTLR end "data_type"
 
 
-    // $ANTLR start dimension_definition
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:215:1: dimension_definition : LEFT_SQUARE RIGHT_SQUARE ;
+    // $ANTLR start "dimension_definition"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:215:1: dimension_definition : LEFT_SQUARE RIGHT_SQUARE ;
     public final void dimension_definition() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:216:2: ( LEFT_SQUARE RIGHT_SQUARE )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:216:4: LEFT_SQUARE RIGHT_SQUARE
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:216:2: ( LEFT_SQUARE RIGHT_SQUARE )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:216:4: LEFT_SQUARE RIGHT_SQUARE
             {
             match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dimension_definition1226); 
             match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dimension_definition1228); 
@@ -3539,21 +3630,21 @@
         }
         return ;
     }
-    // $ANTLR end dimension_definition
+    // $ANTLR end "dimension_definition"
 
 
-    // $ANTLR start accessor_element
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:219:1: accessor_element : ^( VT_ACCESSOR_ELEMENT ID ( VT_SQUARE_CHUNK )* ) ;
+    // $ANTLR start "accessor_element"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:219:1: accessor_element : ^( VT_ACCESSOR_ELEMENT ID ( VT_SQUARE_CHUNK )* ) ;
     public final void accessor_element() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:220:2: ( ^( VT_ACCESSOR_ELEMENT ID ( VT_SQUARE_CHUNK )* ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:220:4: ^( VT_ACCESSOR_ELEMENT ID ( VT_SQUARE_CHUNK )* )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:220:2: ( ^( VT_ACCESSOR_ELEMENT ID ( VT_SQUARE_CHUNK )* ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:220:4: ^( VT_ACCESSOR_ELEMENT ID ( VT_SQUARE_CHUNK )* )
             {
             match(input,VT_ACCESSOR_ELEMENT,FOLLOW_VT_ACCESSOR_ELEMENT_in_accessor_element1240); 
 
             match(input, Token.DOWN, null); 
             match(input,ID,FOLLOW_ID_in_accessor_element1242); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:220:29: ( VT_SQUARE_CHUNK )*
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:220:29: ( VT_SQUARE_CHUNK )*
             loop54:
             do {
                 int alt54=2;
@@ -3566,7 +3657,7 @@
 
                 switch (alt54) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:220:29: VT_SQUARE_CHUNK
+            	    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:220:29: VT_SQUARE_CHUNK
             	    {
             	    match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_accessor_element1244); 
 
@@ -3592,21 +3683,21 @@
         }
         return ;
     }
-    // $ANTLR end accessor_element
+    // $ANTLR end "accessor_element"
 
 
-    // $ANTLR start expression_chain
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:223:1: expression_chain : ^( VT_EXPRESSION_CHAIN ID ( VT_SQUARE_CHUNK )? ( VT_PAREN_CHUNK )? ( expression_chain )? ) ;
+    // $ANTLR start "expression_chain"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:223:1: expression_chain : ^( VT_EXPRESSION_CHAIN ID ( VT_SQUARE_CHUNK )? ( VT_PAREN_CHUNK )? ( expression_chain )? ) ;
     public final void expression_chain() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:224:2: ( ^( VT_EXPRESSION_CHAIN ID ( VT_SQUARE_CHUNK )? ( VT_PAREN_CHUNK )? ( expression_chain )? ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:224:4: ^( VT_EXPRESSION_CHAIN ID ( VT_SQUARE_CHUNK )? ( VT_PAREN_CHUNK )? ( expression_chain )? )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:224:2: ( ^( VT_EXPRESSION_CHAIN ID ( VT_SQUARE_CHUNK )? ( VT_PAREN_CHUNK )? ( expression_chain )? ) )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:224:4: ^( VT_EXPRESSION_CHAIN ID ( VT_SQUARE_CHUNK )? ( VT_PAREN_CHUNK )? ( expression_chain )? )
             {
             match(input,VT_EXPRESSION_CHAIN,FOLLOW_VT_EXPRESSION_CHAIN_in_expression_chain1258); 
 
             match(input, Token.DOWN, null); 
             match(input,ID,FOLLOW_ID_in_expression_chain1260); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:224:29: ( VT_SQUARE_CHUNK )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:224:29: ( VT_SQUARE_CHUNK )?
             int alt55=2;
             int LA55_0 = input.LA(1);
 
@@ -3615,7 +3706,7 @@
             }
             switch (alt55) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:224:29: VT_SQUARE_CHUNK
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:224:29: VT_SQUARE_CHUNK
                     {
                     match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_expression_chain1262); 
 
@@ -3624,7 +3715,7 @@
 
             }
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:224:46: ( VT_PAREN_CHUNK )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:224:46: ( VT_PAREN_CHUNK )?
             int alt56=2;
             int LA56_0 = input.LA(1);
 
@@ -3633,7 +3724,7 @@
             }
             switch (alt56) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:224:46: VT_PAREN_CHUNK
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:224:46: VT_PAREN_CHUNK
                     {
                     match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_expression_chain1265); 
 
@@ -3642,7 +3733,7 @@
 
             }
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:224:62: ( expression_chain )?
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:224:62: ( expression_chain )?
             int alt57=2;
             int LA57_0 = input.LA(1);
 
@@ -3651,13 +3742,14 @@
             }
             switch (alt57) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:224:62: expression_chain
+                    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:224:62: expression_chain
                     {
                     pushFollow(FOLLOW_expression_chain_in_expression_chain1268);
                     expression_chain();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
@@ -3677,15 +3769,15 @@
         }
         return ;
     }
-    // $ANTLR end expression_chain
+    // $ANTLR end "expression_chain"
 
 
-    // $ANTLR start curly_chunk
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:227:1: curly_chunk : VT_CURLY_CHUNK ;
+    // $ANTLR start "curly_chunk"
+    // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:227:1: curly_chunk : VT_CURLY_CHUNK ;
     public final void curly_chunk() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:228:2: ( VT_CURLY_CHUNK )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:228:4: VT_CURLY_CHUNK
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:228:2: ( VT_CURLY_CHUNK )
+            // /Users/porcelli/Documents/dev/drools-new-tirelli/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:228:4: VT_CURLY_CHUNK
             {
             match(input,VT_CURLY_CHUNK,FOLLOW_VT_CURLY_CHUNK_in_curly_chunk1282); 
 
@@ -3700,18 +3792,20 @@
         }
         return ;
     }
-    // $ANTLR end curly_chunk
+    // $ANTLR end "curly_chunk"
 
+    // Delegated rules
 
+
  
 
     public static final BitSet FOLLOW_VT_COMPILATION_UNIT_in_compilation_unit43 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_package_statement_in_compilation_unit45 = new BitSet(new long[]{0xEDFFE00000000028L,0x0000000000000003L});
-    public static final BitSet FOLLOW_statement_in_compilation_unit48 = new BitSet(new long[]{0xEDFFE00000000028L,0x0000000000000003L});
+    public static final BitSet FOLLOW_package_statement_in_compilation_unit45 = new BitSet(new long[]{0xD5FFE00000000028L,0x0000000000000007L});
+    public static final BitSet FOLLOW_statement_in_compilation_unit48 = new BitSet(new long[]{0xD5FFE00000000028L,0x0000000000000007L});
     public static final BitSet FOLLOW_VK_PACKAGE_in_package_statement63 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_package_id_in_package_statement65 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_PACKAGE_ID_in_package_id78 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_package_id80 = new BitSet(new long[]{0x0000000000000008L,0x0000000000080000L});
+    public static final BitSet FOLLOW_ID_in_package_id80 = new BitSet(new long[]{0x0000000000000008L,0x0000000000200000L});
     public static final BitSet FOLLOW_rule_attribute_in_statement93 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_function_import_statement_in_statement98 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_import_statement_in_statement104 = new BitSet(new long[]{0x0000000000000002L});
@@ -3727,7 +3821,7 @@
     public static final BitSet FOLLOW_VK_FUNCTION_in_function_import_statement165 = new BitSet(new long[]{0x0000020000000000L});
     public static final BitSet FOLLOW_import_name_in_function_import_statement167 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_IMPORT_ID_in_import_name180 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_import_name182 = new BitSet(new long[]{0x0000000000000008L,0x0000000000280000L});
+    public static final BitSet FOLLOW_ID_in_import_name182 = new BitSet(new long[]{0x0000000000000008L,0x0000000000A00000L});
     public static final BitSet FOLLOW_DOT_STAR_in_import_name185 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_GLOBAL_in_global199 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_data_type_in_global201 = new BitSet(new long[]{0x0000040000000000L});
@@ -3739,42 +3833,42 @@
     public static final BitSet FOLLOW_curly_chunk_in_function225 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_QUERY_in_query238 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_QUERY_ID_in_query240 = new BitSet(new long[]{0x0000100000400000L});
-    public static final BitSet FOLLOW_parameters_in_query242 = new BitSet(new long[]{0x0000000000400000L});
-    public static final BitSet FOLLOW_lhs_block_in_query245 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_parameters_in_query242 = new BitSet(new long[]{0x0000100000400000L});
+    public static final BitSet FOLLOW_lhs_block_in_query245 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
     public static final BitSet FOLLOW_END_in_query247 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_PARAM_LIST_in_parameters260 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_param_definition_in_parameters262 = new BitSet(new long[]{0x0000004000000008L,0x0000000000080000L});
-    public static final BitSet FOLLOW_data_type_in_param_definition275 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_param_definition_in_parameters262 = new BitSet(new long[]{0x0000004000000008L,0x0000000000200000L});
+    public static final BitSet FOLLOW_data_type_in_param_definition275 = new BitSet(new long[]{0x0000004000000008L,0x0000000000200000L});
     public static final BitSet FOLLOW_argument_in_param_definition278 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_argument289 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
-    public static final BitSet FOLLOW_dimension_definition_in_argument291 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
+    public static final BitSet FOLLOW_ID_in_argument289 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
+    public static final BitSet FOLLOW_dimension_definition_in_argument291 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
     public static final BitSet FOLLOW_VK_DECLARE_in_type_declaration304 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_TYPE_DECLARE_ID_in_type_declaration306 = new BitSet(new long[]{0x0000000000000000L,0x0000000008480000L});
-    public static final BitSet FOLLOW_decl_metadata_in_type_declaration308 = new BitSet(new long[]{0x0000000000000000L,0x0000000008480000L});
-    public static final BitSet FOLLOW_decl_field_in_type_declaration311 = new BitSet(new long[]{0x0000000000000000L,0x0000000000480000L});
+    public static final BitSet FOLLOW_VT_TYPE_DECLARE_ID_in_type_declaration306 = new BitSet(new long[]{0x0000000000000000L,0x0000000021200000L});
+    public static final BitSet FOLLOW_decl_metadata_in_type_declaration308 = new BitSet(new long[]{0x0000000000000000L,0x0000000021200000L});
+    public static final BitSet FOLLOW_decl_field_in_type_declaration311 = new BitSet(new long[]{0x0000000000000000L,0x0000000001200000L});
     public static final BitSet FOLLOW_END_in_type_declaration314 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_AT_in_decl_metadata327 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_ID_in_decl_metadata329 = new BitSet(new long[]{0x0000000000100000L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_decl_metadata331 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_ID_in_decl_field344 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_decl_field_initialization_in_decl_field346 = new BitSet(new long[]{0x0000004000000000L});
-    public static final BitSet FOLLOW_data_type_in_decl_field349 = new BitSet(new long[]{0x0000000000000008L,0x0000000008000000L});
-    public static final BitSet FOLLOW_decl_metadata_in_decl_field351 = new BitSet(new long[]{0x0000000000000008L,0x0000000008000000L});
+    public static final BitSet FOLLOW_data_type_in_decl_field349 = new BitSet(new long[]{0x0000000000000008L,0x0000000020000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_decl_field351 = new BitSet(new long[]{0x0000000000000008L,0x0000000020000000L});
     public static final BitSet FOLLOW_EQUALS_in_decl_field_initialization365 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_decl_field_initialization367 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_TEMPLATE_in_template380 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_TEMPLATE_ID_in_template382 = new BitSet(new long[]{0x0000000000008000L});
-    public static final BitSet FOLLOW_template_slot_in_template384 = new BitSet(new long[]{0x0000000000008000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_template_slot_in_template384 = new BitSet(new long[]{0x0000000000008000L,0x0000000001000000L});
     public static final BitSet FOLLOW_END_in_template387 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_SLOT_in_template_slot400 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_data_type_in_template_slot402 = new BitSet(new long[]{0x0000000000004000L});
     public static final BitSet FOLLOW_VT_SLOT_ID_in_template_slot404 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_RULE_in_rule417 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_RULE_ID_in_rule419 = new BitSet(new long[]{0x0000000000030000L,0x0000000040000000L});
-    public static final BitSet FOLLOW_rule_attributes_in_rule421 = new BitSet(new long[]{0x0000000000020000L,0x0000000040000000L});
+    public static final BitSet FOLLOW_VT_RULE_ID_in_rule419 = new BitSet(new long[]{0x0000000000030000L,0x0000000100000000L});
+    public static final BitSet FOLLOW_rule_attributes_in_rule421 = new BitSet(new long[]{0x0000000000020000L,0x0000000100000000L});
     public static final BitSet FOLLOW_when_part_in_rule424 = new BitSet(new long[]{0x0000000000020000L});
     public static final BitSet FOLLOW_VT_RHS_CHUNK_in_rule427 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_WHEN_in_when_part439 = new BitSet(new long[]{0x0000000000400000L});
+    public static final BitSet FOLLOW_WHEN_in_when_part439 = new BitSet(new long[]{0x0000100000400000L});
     public static final BitSet FOLLOW_lhs_block_in_when_part441 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_VT_RULE_ATTRIBUTES_in_rule_attributes453 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VK_ATTRIBUTES_in_rule_attributes455 = new BitSet(new long[]{0x01FFE00000000000L});
@@ -3804,16 +3898,16 @@
     public static final BitSet FOLLOW_VK_DIALECT_in_rule_attribute592 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_STRING_in_rule_attribute594 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_AND_IMPLICIT_in_lhs_block608 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs_block610 = new BitSet(new long[]{0x0000000087800008L,0x0000000800006204L});
+    public static final BitSet FOLLOW_lhs_in_lhs_block610 = new BitSet(new long[]{0x0000000087800008L,0x000000200000C408L});
     public static final BitSet FOLLOW_VT_OR_PREFIX_in_lhs623 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs625 = new BitSet(new long[]{0x0000000087800008L,0x0000000800006204L});
+    public static final BitSet FOLLOW_lhs_in_lhs625 = new BitSet(new long[]{0x0000000087800008L,0x000000200000C408L});
     public static final BitSet FOLLOW_VT_OR_INFIX_in_lhs633 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs635 = new BitSet(new long[]{0x0000000087800000L,0x0000000800006204L});
+    public static final BitSet FOLLOW_lhs_in_lhs635 = new BitSet(new long[]{0x0000000087800008L,0x000000200000C408L});
     public static final BitSet FOLLOW_lhs_in_lhs637 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_AND_PREFIX_in_lhs644 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs646 = new BitSet(new long[]{0x0000000087800008L,0x0000000800006204L});
+    public static final BitSet FOLLOW_lhs_in_lhs646 = new BitSet(new long[]{0x0000000087800008L,0x000000200000C408L});
     public static final BitSet FOLLOW_VT_AND_INFIX_in_lhs654 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs656 = new BitSet(new long[]{0x0000000087800000L,0x0000000800006204L});
+    public static final BitSet FOLLOW_lhs_in_lhs656 = new BitSet(new long[]{0x0000000087800008L,0x000000200000C408L});
     public static final BitSet FOLLOW_lhs_in_lhs658 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_EXISTS_in_lhs665 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_lhs_in_lhs667 = new BitSet(new long[]{0x0000000000000008L});
@@ -3822,9 +3916,9 @@
     public static final BitSet FOLLOW_VK_EVAL_in_lhs683 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_lhs685 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_FORALL_in_lhs692 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs694 = new BitSet(new long[]{0x0000000087800008L,0x0000000800006204L});
+    public static final BitSet FOLLOW_lhs_in_lhs694 = new BitSet(new long[]{0x0000000087800008L,0x000000200000C408L});
     public static final BitSet FOLLOW_FROM_in_lhs702 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs704 = new BitSet(new long[]{0x0000000020000000L,0x000000A000000100L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs704 = new BitSet(new long[]{0x0000000020000000L,0x0000028000000200L});
     public static final BitSet FOLLOW_from_elements_in_lhs706 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_lhs_pattern_in_lhs712 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_ACCUMULATE_in_from_elements724 = new BitSet(new long[]{0x0000000000000004L});
@@ -3844,7 +3938,7 @@
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause787 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_ACTION_in_accumulate_init_clause795 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause797 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_accumulate_init_reverse_clause_in_accumulate_init_clause804 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+    public static final BitSet FOLLOW_accumulate_init_reverse_clause_in_accumulate_init_clause804 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
     public static final BitSet FOLLOW_VK_RESULT_in_accumulate_init_clause811 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause813 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_REVERSE_in_accumulate_init_reverse_clause827 = new BitSet(new long[]{0x0000000000000004L});
@@ -3858,29 +3952,29 @@
     public static final BitSet FOLLOW_OVER_in_over_clause878 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_over_element_in_over_clause880 = new BitSet(new long[]{0x0000000000200008L});
     public static final BitSet FOLLOW_VT_BEHAVIOR_in_over_element894 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_over_element896 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_ID_in_over_element896 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
     public static final BitSet FOLLOW_ID_in_over_element898 = new BitSet(new long[]{0x0000000000100000L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_over_element900 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_DOUBLE_PIPE_in_fact_expression913 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression915 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression915 = new BitSet(new long[]{0x0000001F00100040L,0x0007F81E022009F8L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression917 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_DOUBLE_AMPER_in_fact_expression924 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression926 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression926 = new BitSet(new long[]{0x0000001F00100040L,0x0007F81E022009F8L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression928 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_FACT_BINDING_in_fact_expression935 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression937 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression937 = new BitSet(new long[]{0x0000001F00100040L,0x0007F81E022009F8L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression939 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_FACT_in_fact_expression946 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_pattern_type_in_fact_expression948 = new BitSet(new long[]{0x0000001F00100048L,0x00037E07808804FCL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression950 = new BitSet(new long[]{0x0000001F00100048L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_pattern_type_in_fact_expression948 = new BitSet(new long[]{0x0000001F00100048L,0x0007F81E022009F8L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression950 = new BitSet(new long[]{0x0000001F00100048L,0x0007F81E022009F8L});
     public static final BitSet FOLLOW_VT_FACT_OR_in_fact_expression958 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression960 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression960 = new BitSet(new long[]{0x0000001F00100040L,0x0007F81E022009F8L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression962 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_EVAL_in_fact_expression969 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_fact_expression971 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_IN_in_fact_expression978 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression980 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression983 = new BitSet(new long[]{0x0000001F00100048L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression980 = new BitSet(new long[]{0x0000001F00100040L,0x0007F81E022009F8L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression983 = new BitSet(new long[]{0x0000001F00100048L,0x0007F81E022009F8L});
     public static final BitSet FOLLOW_EQUAL_in_fact_expression991 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression993 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_GREATER_in_fact_expression1000 = new BitSet(new long[]{0x0000000000000004L});
@@ -3894,29 +3988,29 @@
     public static final BitSet FOLLOW_NOT_EQUAL_in_fact_expression1036 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1038 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_CONTAINS_in_fact_expression1045 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1047 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1047 = new BitSet(new long[]{0x0000001F00100040L,0x0007F81E022009F8L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1050 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_EXCLUDES_in_fact_expression1057 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1059 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1059 = new BitSet(new long[]{0x0000001F00100040L,0x0007F81E022009F8L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1062 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_MATCHES_in_fact_expression1069 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1071 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1071 = new BitSet(new long[]{0x0000001F00100040L,0x0007F81E022009F8L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1074 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_SOUNDSLIKE_in_fact_expression1081 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1083 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1083 = new BitSet(new long[]{0x0000001F00100040L,0x0007F81E022009F8L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1086 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_MEMBEROF_in_fact_expression1093 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1095 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1095 = new BitSet(new long[]{0x0000001F00100040L,0x0007F81E022009F8L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1098 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_ID_in_fact_expression1105 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1107 = new BitSet(new long[]{0x0000001F00180040L,0x00037E07808804FCL});
-    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_fact_expression1110 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1107 = new BitSet(new long[]{0x0000001F00180040L,0x0007F81E022009F8L});
+    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_fact_expression1110 = new BitSet(new long[]{0x0000001F00100040L,0x0007F81E022009F8L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1113 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_BIND_FIELD_in_fact_expression1120 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression1122 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression1122 = new BitSet(new long[]{0x0000001F00100040L,0x0007F81E022009F8L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1124 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_FIELD_in_fact_expression1131 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1133 = new BitSet(new long[]{0x0000001F00100048L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1133 = new BitSet(new long[]{0x0000001F00100048L,0x0007F81E022009F8L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1135 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_ACCESSOR_PATH_in_fact_expression1143 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_accessor_element_in_fact_expression1145 = new BitSet(new long[]{0x0000002000000008L});
@@ -3927,12 +4021,12 @@
     public static final BitSet FOLLOW_NULL_in_fact_expression1172 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_fact_expression1177 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_VT_PATTERN_TYPE_in_pattern_type1189 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_pattern_type1191 = new BitSet(new long[]{0x0000000000000008L,0x0004000000080000L});
-    public static final BitSet FOLLOW_dimension_definition_in_pattern_type1194 = new BitSet(new long[]{0x0000000000000008L,0x0004000000000000L});
+    public static final BitSet FOLLOW_ID_in_pattern_type1191 = new BitSet(new long[]{0x0000000000000008L,0x0008000000200000L});
+    public static final BitSet FOLLOW_dimension_definition_in_pattern_type1194 = new BitSet(new long[]{0x0000000000000008L,0x0008000000000000L});
     public static final BitSet FOLLOW_VT_DATA_TYPE_in_data_type1208 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_data_type1210 = new BitSet(new long[]{0x0000000000000008L,0x0004000000080000L});
-    public static final BitSet FOLLOW_dimension_definition_in_data_type1213 = new BitSet(new long[]{0x0000000000000008L,0x0004000000000000L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_dimension_definition1226 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_ID_in_data_type1210 = new BitSet(new long[]{0x0000000000000008L,0x0008000000200000L});
+    public static final BitSet FOLLOW_dimension_definition_in_data_type1213 = new BitSet(new long[]{0x0000000000000008L,0x0008000000000000L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_dimension_definition1226 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
     public static final BitSet FOLLOW_RIGHT_SQUARE_in_dimension_definition1228 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_VT_ACCESSOR_ELEMENT_in_accessor_element1240 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_ID_in_accessor_element1242 = new BitSet(new long[]{0x0000000000080008L});

Modified: labs/jbossrules/branches/etirelli/pom.xml
===================================================================
--- labs/jbossrules/branches/etirelli/pom.xml	2008-11-13 00:09:49 UTC (rev 23848)
+++ labs/jbossrules/branches/etirelli/pom.xml	2008-11-13 03:06:09 UTC (rev 23849)
@@ -911,7 +911,7 @@
             <dependency>
                 <groupId>org.antlr</groupId>
                 <artifactId>antlr-runtime</artifactId>
-                <version>3.0.1</version>        
+                <version>3.1.1</version>        
                 <exclusions>
                   <exclusion>
                     <groupId>org.antlr</groupId>
@@ -922,7 +922,7 @@
             <dependency>
 			    <groupId>org.antlr</groupId>
 			    <artifactId>gunit</artifactId>
-                <version>1.0.1</version>
+                <version>1.0.3b</version>
                 <exclusions>
                   <exclusion>
                     <groupId>org.antlr</groupId>




More information about the jboss-svn-commits mailing list