[jboss-svn-commits] JBL Code SVN: r24099 - in labs/jbossrules/trunk: drools-compiler and 10 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Nov 25 13:08:52 EST 2008


Author: tirelli
Date: 2008-11-25 13:08:44 -0500 (Tue, 25 Nov 2008)
New Revision: 24099

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/DroolsSoftKeywordsTest.java
Modified:
   labs/jbossrules/trunk/drools-compiler/pom.xml
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsParserExceptionFactory.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsSentenceType.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsSoftKeywords.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsTreeAdaptor.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapLexer.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapParser.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapWalker.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaLexer.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaParser.java
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/DRLContextTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/DRLIncompleteCodeTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/ErrorsParserTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/TestDRL.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/TestTree2TestDRL.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/Tree2TestDRL.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/gUnitTest.testsuite
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/gUnitTreeWalkerTest.testsuite
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_TimeRelationalOperators.drl
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/pluggable_operators.drl
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/EvaluatorRegistry.java
   labs/jbossrules/trunk/pom.xml
Log:
JBRULES-1869: Upgrading to ANTLR 3.1.1. Removing the need of an escape character for pluggable operators with parameters in the parser.

Modified: labs/jbossrules/trunk/drools-compiler/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/pom.xml	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/pom.xml	2008-11-25 18:08:44 UTC (rev 24099)
@@ -28,7 +28,7 @@
     </dependency>
     <dependency>
       <groupId>org.antlr</groupId>
-      <artifactId>gunit</artifactId>             
+      <artifactId>antlr</artifactId>             
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -44,7 +44,11 @@
       <artifactId>xstream</artifactId>
       <optional>true</optional>
     </dependency>      
-    
+    <dependency>
+        <groupId>org.mvel</groupId>
+        <artifactId>mvel2</artifactId>
+    </dependency>
+
     <!--
     <dependency>
       <groupId>javax.mail</groupId>

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java	2008-11-25 18:08:44 UTC (rev 24099)
@@ -51,7 +51,8 @@
 	private final List results = new ArrayList();
 	private List<DroolsSentence> editorSentences = null;
 	private Location location = new Location(Location.LOCATION_UNKNOWN);
-	DescrBuilderTree walker = null;
+	private DescrBuilderTree walker = null;
+	private DRLLexer lexer = null;
 
 	public DrlParser() {
 	}
@@ -207,18 +208,16 @@
 				return null;
 			}
 		} catch (Exception e) {
-			final ParserError err = new ParserError(GENERIC_ERROR_MESSAGE,
-					-1, 0);
+			final ParserError err = new ParserError(GENERIC_ERROR_MESSAGE, -1,
+					0);
 			this.results.add(err);
 			if (isEditor) {
-				if (walker == null){
+				if (walker == null) {
 					return null;
 				}
 				return walker.getPackageDescr();
 			} else {
-				throw new DroolsParserException(
-						GENERIC_ERROR_MESSAGE,
-						e);
+				throw new DroolsParserException(GENERIC_ERROR_MESSAGE, e);
 			}
 		}
 	}
@@ -236,6 +235,13 @@
 
 	/** Convert the antlr exceptions to drools parser exceptions */
 	private void makeErrorList(final DRLParser parser) {
+		for (final Iterator iter = lexer.getErrors().iterator(); iter.hasNext();) {
+			final DroolsParserException recogErr = (DroolsParserException) iter
+					.next();
+			final ParserError err = new ParserError(recogErr.getMessage(),
+					recogErr.getLineNumber(), recogErr.getColumn());
+			this.results.add(err);
+		}
 		for (final Iterator iter = parser.getErrors().iterator(); iter
 				.hasNext();) {
 			final DroolsParserException recogErr = (DroolsParserException) iter
@@ -251,16 +257,16 @@
 	 *         not).
 	 */
 	private DRLParser getParser(final String text) {
-		DRLParser parser = new DRLParser(new CommonTokenStream(new DRLLexer(
-				new ANTLRStringStream(text))));
+		lexer = new DRLLexer(new ANTLRStringStream(text));
+		DRLParser parser = new DRLParser(new CommonTokenStream(lexer));
 		parser.setTreeAdaptor(new DroolsTreeAdaptor());
 		return parser;
 	}
 
 	private DRLParser getParser(final Reader reader) {
 		try {
-			DRLParser parser = new DRLParser(new CommonTokenStream(
-					new DRLLexer(new ANTLRReaderStream(reader))));
+			lexer = new DRLLexer(new ANTLRReaderStream(reader));
+			DRLParser parser = new DRLParser(new CommonTokenStream(lexer));
 			parser.setTreeAdaptor(new DroolsTreeAdaptor());
 			return parser;
 		} catch (final Exception e) {

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2008-11-25 18:08:44 UTC (rev 24099)
@@ -1,8 +1,10 @@
-// $ANTLR 3.0.1 src/main/resources/org/drools/lang/DRL.g 2008-11-13 19:22:17
+// $ANTLR 3.1.1 /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2008-11-24 22:04:05
 
 	package org.drools.lang;
 
+	import org.drools.compiler.DroolsParserException;
 
+
 import org.antlr.runtime.*;
 import java.util.Stack;
 import java.util.List;
@@ -10,136 +12,133 @@
 import java.util.Map;
 import java.util.HashMap;
 public class DRLLexer extends Lexer {
-    public static final int COMMA=90;
+    public static final int COMMA=86;
     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=65;
-    public static final int END=87;
-    public static final int HexDigit=124;
+    public static final int END=83;
+    public static final int HexDigit=119;
     public static final int VK_ATTRIBUTES=57;
     public static final int VT_EXPRESSION_CHAIN=30;
-    public static final int MISC=120;
+    public static final int MISC=115;
     public static final int VT_AND_PREFIX=23;
     public static final int VK_QUERY=63;
-    public static final int THEN=117;
+    public static final int THEN=112;
     public static final int VK_AUTO_FOCUS=49;
-    public static final int TILDE=112;
-    public static final int DOT=85;
+    public static final int DOT=81;
     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=115;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=128;
+    public static final int LEFT_SQUARE=110;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=123;
     public static final int VT_DATA_TYPE=38;
-    public static final int VK_MATCHES=69;
     public static final int VT_FACT=6;
-    public static final int LEFT_CURLY=118;
-    public static final int AT=92;
-    public static final int LEFT_PAREN=89;
-    public static final int DOUBLE_AMPER=99;
+    public static final int LEFT_CURLY=113;
+    public static final int AT=88;
+    public static final int LEFT_PAREN=85;
+    public static final int DOUBLE_AMPER=95;
     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=95;
+    public static final int WHEN=91;
     public static final int VT_ENTRYPOINT_ID=13;
-    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=122;
-    public static final int OVER=101;
-    public static final int STRING=88;
-    public static final int VK_AND=77;
+    public static final int WS=117;
+    public static final int OVER=97;
+    public static final int STRING=84;
+    public static final int VK_AND=72;
     public static final int VT_ACCESSOR_ELEMENT=37;
+    public static final int VK_GLOBAL=66;
     public static final int VT_ACCUMULATE_INIT_CLAUSE=27;
-    public static final int VK_GLOBAL=66;
-    public static final int VK_REVERSE=81;
+    public static final int VK_REVERSE=76;
     public static final int VT_BEHAVIOR=21;
-    public static final int GRAVE_ACCENT=127;
+    public static final int GRAVE_ACCENT=122;
     public static final int VK_DURATION=53;
     public static final int VT_SQUARE_CHUNK=19;
-    public static final int VK_FORALL=79;
+    public static final int VK_FORALL=74;
     public static final int VT_PAREN_CHUNK=20;
     public static final int VT_COMPILATION_UNIT=4;
-    public static final int COLLECT=104;
+    public static final int COLLECT=100;
     public static final int VK_ENABLED=56;
-    public static final int EQUALS=94;
-    public static final int VK_RESULT=82;
-    public static final int UnicodeEscape=125;
+    public static final int VK_RESULT=77;
+    public static final int EQUALS=90;
+    public static final int UnicodeEscape=120;
     public static final int VK_PACKAGE=61;
     public static final int VT_RULE_ID=12;
-    public static final int EQUAL=106;
+    public static final int EQUAL=102;
     public static final int VK_NO_LOOP=48;
-    public static final int SEMICOLON=83;
+    public static final int SEMICOLON=79;
     public static final int VK_TEMPLATE=62;
     public static final int VT_AND_IMPLICIT=22;
-    public static final int NULL=114;
-    public static final int COLON=93;
-    public static final int MULTI_LINE_COMMENT=130;
+    public static final int NULL=109;
+    public static final int COLON=89;
+    public static final int MULTI_LINE_COMMENT=125;
     public static final int VT_RULE_ATTRIBUTES=16;
-    public static final int RIGHT_SQUARE=116;
+    public static final int RIGHT_SQUARE=111;
     public static final int VK_AGENDA_GROUP=51;
     public static final int VT_FACT_OR=33;
-    public static final int VK_NOT=74;
+    public static final int VK_NOT=69;
     public static final int VK_DATE_EXPIRES=46;
-    public static final int ARROW=105;
-    public static final int FLOAT=113;
-    public static final int INIT=103;
+    public static final int ARROW=101;
+    public static final int FLOAT=108;
+    public static final int INIT=99;
     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=98;
-    public static final int LESS=109;
+    public static final int DOUBLE_PIPE=94;
+    public static final int LESS=105;
     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=123;
-    public static final int VK_EXISTS=78;
-    public static final int INT=97;
+    public static final int EscapeSequence=118;
+    public static final int VK_EXISTS=73;
+    public static final int INT=93;
     public static final int VT_BIND_FIELD=34;
     public static final int VK_RULE=58;
     public static final int VK_EVAL=67;
-    public static final int GREATER=107;
+    public static final int GREATER=103;
     public static final int VT_FACT_BINDING=32;
-    public static final int ID=84;
-    public static final int FROM=100;
-    public static final int NOT_EQUAL=111;
-    public static final int RIGHT_CURLY=119;
-    public static final int VK_ENTRY_POINT=73;
+    public static final int ID=80;
+    public static final int FROM=96;
+    public static final int NOT_EQUAL=107;
+    public static final int RIGHT_CURLY=114;
+    public static final int VK_OPERATOR=78;
+    public static final int VK_ENTRY_POINT=68;
     public static final int VT_PARAM_LIST=44;
     public static final int VT_AND_INFIX=25;
-    public static final int BOOL=96;
+    public static final int BOOL=92;
     public static final int VT_FROM_SOURCE=29;
-    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=75;
+    public static final int VK_IN=70;
     public static final int VT_RHS_CHUNK=17;
-    public static final int VK_MEMBEROF=72;
-    public static final int GREATER_EQUAL=108;
+    public static final int GREATER_EQUAL=104;
     public static final int VT_OR_INFIX=26;
-    public static final int DOT_STAR=86;
-    public static final int VK_OR=76;
+    public static final int DOT_STAR=82;
+    public static final int VK_OR=71;
     public static final int VT_GLOBAL_ID=42;
-    public static final int LESS_EQUAL=110;
-    public static final int ACCUMULATE=102;
+    public static final int LESS_EQUAL=106;
+    public static final int ACCUMULATE=98;
     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=121;
+    public static final int EOL=116;
     public static final int VK_ACTIVATION_GROUP=50;
-    public static final int Tokens=131;
-    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=91;
+    public static final int OctalEscape=121;
+    public static final int VK_ACTION=75;
+    public static final int RIGHT_PAREN=87;
     public static final int VT_TEMPLATE_ID=10;
     public static final int VK_DECLARE=64;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=129;
-    
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=124;
+
+    	private List<DroolsParserException> errors = new ArrayList<DroolsParserException>();
+    	private DroolsParserExceptionFactory errorMessageFactory = new DroolsParserExceptionFactory(null, null);
+
     	/** 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',
@@ -147,33 +146,50 @@
     	 *  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;
     	}
-    
+
+    	public void reportError(RecognitionException ex) {
+    		errors.add(errorMessageFactory.createDroolsException(ex));
+    	}
+
+    	/** return the raw DroolsParserException errors */
+    	public List<DroolsParserException> getErrors() {
+    		return errors;
+    	}
+
     	/** 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-trunk/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:1693:9: ( ( ' ' | '\\t' | '\\f' | EOL )+ )
-            // src/main/resources/org/drools/lang/DRL.g:1693:17: ( ' ' | '\\t' | '\\f' | EOL )+
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1684:9: ( ( ' ' | '\\t' | '\\f' | EOL )+ )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1684:17: ( ' ' | '\\t' | '\\f' | EOL )+
             {
-            // src/main/resources/org/drools/lang/DRL.g:1693:17: ( ' ' | '\\t' | '\\f' | EOL )+
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1684:17: ( ' ' | '\\t' | '\\f' | EOL )+
             int cnt1=0;
             loop1:
             do {
@@ -205,37 +221,37 @@
 
                 switch (alt1) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1693:19: ' '
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1684:19: ' '
             	    {
-            	    match(' '); if (failed) return ;
+            	    match(' '); if (state.failed) return ;
 
             	    }
             	    break;
             	case 2 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1694:19: '\\t'
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1685:19: '\\t'
             	    {
-            	    match('\t'); if (failed) return ;
+            	    match('\t'); if (state.failed) return ;
 
             	    }
             	    break;
             	case 3 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1695:19: '\\f'
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1686:19: '\\f'
             	    {
-            	    match('\f'); if (failed) return ;
+            	    match('\f'); if (state.failed) return ;
 
             	    }
             	    break;
             	case 4 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1696:19: EOL
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1687: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;
@@ -243,33 +259,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:1702:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
-            // src/main/resources/org/drools/lang/DRL.g:1703:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1693:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1694:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             {
-            // src/main/resources/org/drools/lang/DRL.g:1703:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1694:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             int alt2=3;
             int LA2_0 = input.LA(1);
 
             if ( (LA2_0=='\r') ) {
                 int LA2_1 = input.LA(2);
 
-                if ( (LA2_1=='\n') && (synpred1())) {
+                if ( (LA2_1=='\n') && (synpred1_DRL())) {
                     alt2=1;
                 }
                 else {
@@ -279,32 +296,32 @@
                 alt2=3;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1703: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:1703:14: ( '\\r\\n' )=> '\\r\\n'
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1694:14: ( '\\r\\n' )=> '\\r\\n'
                     {
-                    match("\r\n"); if (failed) return ;
+                    match("\r\n"); if (state.failed) return ;
 
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1704:25: '\\r'
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1695:25: '\\r'
                     {
-                    match('\r'); if (failed) return ;
+                    match('\r'); if (state.failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1705:25: '\\n'
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1696:25: '\\n'
                     {
-                    match('\n'); if (failed) return ;
+                    match('\n'); if (state.failed) return ;
 
                     }
                     break;
@@ -318,16 +335,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:1710:2: ( ( '-' )? ( '0' .. '9' )+ )
-            // src/main/resources/org/drools/lang/DRL.g:1710:4: ( '-' )? ( '0' .. '9' )+
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1701:2: ( ( '-' )? ( '0' .. '9' )+ )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1701:4: ( '-' )? ( '0' .. '9' )+
             {
-            // src/main/resources/org/drools/lang/DRL.g:1710:4: ( '-' )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1701:4: ( '-' )?
             int alt3=2;
             int LA3_0 = input.LA(1);
 
@@ -336,16 +354,16 @@
             }
             switch (alt3) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1710:5: '-'
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1701:5: '-'
                     {
-                    match('-'); if (failed) return ;
+                    match('-'); if (state.failed) return ;
 
                     }
                     break;
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:1710:10: ( '0' .. '9' )+
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1701:10: ( '0' .. '9' )+
             int cnt4=0;
             loop4:
             do {
@@ -359,16 +377,16 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1710:11: '0' .. '9'
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1701:11: '0' .. '9'
             	    {
-            	    matchRange('0','9'); if (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;
@@ -379,21 +397,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:1714:2: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
-            // src/main/resources/org/drools/lang/DRL.g:1714:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1705:2: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1705:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
             {
-            // src/main/resources/org/drools/lang/DRL.g:1714:4: ( '-' )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1705:4: ( '-' )?
             int alt5=2;
             int LA5_0 = input.LA(1);
 
@@ -402,16 +422,16 @@
             }
             switch (alt5) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1714:5: '-'
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1705:5: '-'
                     {
-                    match('-'); if (failed) return ;
+                    match('-'); if (state.failed) return ;
 
                     }
                     break;
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:1714:10: ( '0' .. '9' )+
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1705:10: ( '0' .. '9' )+
             int cnt6=0;
             loop6:
             do {
@@ -425,16 +445,16 @@
 
                 switch (alt6) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1714:11: '0' .. '9'
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1705:11: '0' .. '9'
             	    {
-            	    matchRange('0','9'); if (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;
@@ -442,8 +462,8 @@
                 cnt6++;
             } while (true);
 
-            match('.'); if (failed) return ;
-            // src/main/resources/org/drools/lang/DRL.g:1714:26: ( '0' .. '9' )+
+            match('.'); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1705:26: ( '0' .. '9' )+
             int cnt7=0;
             loop7:
             do {
@@ -457,16 +477,16 @@
 
                 switch (alt7) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1714:27: '0' .. '9'
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1705:27: '0' .. '9'
             	    {
-            	    matchRange('0','9'); if (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;
@@ -477,18 +497,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:1718:5: ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) )
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1709:5: ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) )
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -499,21 +521,21 @@
                 alt10=2;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1717: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:1718:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1709:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
                     {
-                    // src/main/resources/org/drools/lang/DRL.g:1718:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
-                    // src/main/resources/org/drools/lang/DRL.g:1718:9: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1709:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1709:9: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
                     {
-                    match('\"'); if (failed) return ;
-                    // src/main/resources/org/drools/lang/DRL.g:1718:13: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
+                    match('\"'); if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1709:13: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
                     loop8:
                     do {
                         int alt8=3;
@@ -522,32 +544,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:1718:15: EscapeSequence
+                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1709:15: EscapeSequence
                     	    {
-                    	    mEscapeSequence(); if (failed) return ;
+                    	    mEscapeSequence(); if (state.failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:1718:32: ~ ( '\\\\' | '\"' )
+                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1709:32: ~ ( '\\\\' | '\"' )
                     	    {
-                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\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;}
 
 
                     	    }
@@ -558,7 +579,7 @@
                         }
                     } while (true);
 
-                    match('\"'); if (failed) return ;
+                    match('\"'); if (state.failed) return ;
 
                     }
 
@@ -566,13 +587,13 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1719:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1710:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
                     {
-                    // src/main/resources/org/drools/lang/DRL.g:1719:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
-                    // src/main/resources/org/drools/lang/DRL.g:1719:9: '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\''
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1710:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1710:9: '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\''
                     {
-                    match('\''); if (failed) return ;
-                    // src/main/resources/org/drools/lang/DRL.g:1719:14: ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )*
+                    match('\''); if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1710:14: ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )*
                     loop9:
                     do {
                         int alt9=3;
@@ -581,32 +602,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:1719:16: EscapeSequence
+                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1710:16: EscapeSequence
                     	    {
-                    	    mEscapeSequence(); if (failed) return ;
+                    	    mEscapeSequence(); if (state.failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:1719:33: ~ ( '\\\\' | '\\'' )
+                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1710:33: ~ ( '\\\\' | '\\'' )
                     	    {
-                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\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;}
 
 
                     	    }
@@ -617,7 +637,7 @@
                         }
                     } while (true);
 
-                    match('\''); if (failed) return ;
+                    match('\''); if (state.failed) return ;
 
                     }
 
@@ -626,29 +646,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:1723:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
-            // src/main/resources/org/drools/lang/DRL.g:1723:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1714:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1714:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
             {
             if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='F')||(input.LA(1)>='a' && input.LA(1)<='f') ) {
                 input.consume();
-            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;}
 
 
             }
@@ -657,12 +677,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:1727:5: ( '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' ) | UnicodeEscape | OctalEscape )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1718:5: ( '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' ) | UnicodeEscape | OctalEscape )
             int alt11=3;
             int LA11_0 = input.LA(1);
 
@@ -732,51 +752,50 @@
                     }
                     break;
                 default:
-                    if (backtracking>0) {failed=true; return ;}
+                    if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1725: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("1725: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:1727:9: '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1718:9: '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' )
                     {
-                    match('\\'); if (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:1731:9: UnicodeEscape
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1722:9: UnicodeEscape
                     {
-                    mUnicodeEscape(); if (failed) return ;
+                    mUnicodeEscape(); if (state.failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1732:9: OctalEscape
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1723:9: OctalEscape
                     {
-                    mOctalEscape(); if (failed) return ;
+                    mOctalEscape(); if (state.failed) return ;
 
                     }
                     break;
@@ -786,12 +805,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:1737:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1728:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
             int alt12=3;
             int LA12_0 = input.LA(1);
 
@@ -823,43 +842,43 @@
                         alt12=3;}
                 }
                 else {
-                    if (backtracking>0) {failed=true; return ;}
+                    if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1735: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("1735: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:1737:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1728:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
                     {
-                    match('\\'); if (failed) return ;
-                    // src/main/resources/org/drools/lang/DRL.g:1737:14: ( '0' .. '3' )
-                    // src/main/resources/org/drools/lang/DRL.g:1737:15: '0' .. '3'
+                    match('\\'); if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1728:14: ( '0' .. '3' )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1728:15: '0' .. '3'
                     {
-                    matchRange('0','3'); if (failed) return ;
+                    matchRange('0','3'); if (state.failed) return ;
 
                     }
 
-                    // src/main/resources/org/drools/lang/DRL.g:1737:25: ( '0' .. '7' )
-                    // src/main/resources/org/drools/lang/DRL.g:1737:26: '0' .. '7'
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1728:25: ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1728:26: '0' .. '7'
                     {
-                    matchRange('0','7'); if (failed) return ;
+                    matchRange('0','7'); if (state.failed) return ;
 
                     }
 
-                    // src/main/resources/org/drools/lang/DRL.g:1737:36: ( '0' .. '7' )
-                    // src/main/resources/org/drools/lang/DRL.g:1737:37: '0' .. '7'
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1728:36: ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1728:37: '0' .. '7'
                     {
-                    matchRange('0','7'); if (failed) return ;
+                    matchRange('0','7'); if (state.failed) return ;
 
                     }
 
@@ -867,20 +886,20 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1738:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1729:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
                     {
-                    match('\\'); if (failed) return ;
-                    // src/main/resources/org/drools/lang/DRL.g:1738:14: ( '0' .. '7' )
-                    // src/main/resources/org/drools/lang/DRL.g:1738:15: '0' .. '7'
+                    match('\\'); if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1729:14: ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1729:15: '0' .. '7'
                     {
-                    matchRange('0','7'); if (failed) return ;
+                    matchRange('0','7'); if (state.failed) return ;
 
                     }
 
-                    // src/main/resources/org/drools/lang/DRL.g:1738:25: ( '0' .. '7' )
-                    // src/main/resources/org/drools/lang/DRL.g:1738:26: '0' .. '7'
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1729:25: ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1729:26: '0' .. '7'
                     {
-                    matchRange('0','7'); if (failed) return ;
+                    matchRange('0','7'); if (state.failed) return ;
 
                     }
 
@@ -888,13 +907,13 @@
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1739:9: '\\\\' ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1730:9: '\\\\' ( '0' .. '7' )
                     {
-                    match('\\'); if (failed) return ;
-                    // src/main/resources/org/drools/lang/DRL.g:1739:14: ( '0' .. '7' )
-                    // src/main/resources/org/drools/lang/DRL.g:1739:15: '0' .. '7'
+                    match('\\'); if (state.failed) return ;
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1730:14: ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1730:15: '0' .. '7'
                     {
-                    matchRange('0','7'); if (failed) return ;
+                    matchRange('0','7'); if (state.failed) return ;
 
                     }
 
@@ -907,20 +926,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:1744:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
-            // src/main/resources/org/drools/lang/DRL.g:1744:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1735:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1735:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
             {
-            match('\\'); if (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 ;
 
             }
 
@@ -928,16 +947,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:1748:2: ( ( 'true' | 'false' ) )
-            // src/main/resources/org/drools/lang/DRL.g:1748:4: ( 'true' | 'false' )
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1739:2: ( ( 'true' | 'false' ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1739:4: ( 'true' | 'false' )
             {
-            // src/main/resources/org/drools/lang/DRL.g:1748:4: ( 'true' | 'false' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1739:4: ( 'true' | 'false' )
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -948,25 +968,25 @@
                 alt13=2;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1748: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:1748:5: 'true'
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1739:5: 'true'
                     {
-                    match("true"); if (failed) return ;
+                    match("true"); if (state.failed) return ;
 
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1748:12: 'false'
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1739:12: 'false'
                     {
-                    match("false"); if (failed) return ;
+                    match("false"); if (state.failed) return ;
 
 
                     }
@@ -977,447 +997,475 @@
 
             }
 
-            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:1752:2: ( 'accumulate' )
-            // src/main/resources/org/drools/lang/DRL.g:1752:4: 'accumulate'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1743:2: ( 'accumulate' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1743:4: 'accumulate'
             {
-            match("accumulate"); if (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:1756:2: ( 'collect' )
-            // src/main/resources/org/drools/lang/DRL.g:1756:4: 'collect'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1747:2: ( 'collect' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1747:4: 'collect'
             {
-            match("collect"); if (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:1759:5: ( 'end' )
-            // src/main/resources/org/drools/lang/DRL.g:1759:7: 'end'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1750:5: ( 'end' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1750:7: 'end'
             {
-            match("end"); if (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:1763:2: ( 'from' )
-            // src/main/resources/org/drools/lang/DRL.g:1763:4: 'from'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1754:2: ( 'from' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1754:4: 'from'
             {
-            match("from"); if (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:1767:2: ( 'init' )
-            // src/main/resources/org/drools/lang/DRL.g:1767:4: 'init'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1758:2: ( 'init' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1758:4: 'init'
             {
-            match("init"); if (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:1771:2: ( 'null' )
-            // src/main/resources/org/drools/lang/DRL.g:1771:4: 'null'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1762:2: ( 'null' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1762:4: 'null'
             {
-            match("null"); if (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:1775:2: ( 'over' )
-            // src/main/resources/org/drools/lang/DRL.g:1775:4: 'over'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1766:2: ( 'over' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1766:4: 'over'
             {
-            match("over"); if (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:1779:2: ( 'then' )
-            // src/main/resources/org/drools/lang/DRL.g:1779:4: 'then'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1770:2: ( 'then' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1770:4: 'then'
             {
-            match("then"); if (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:1783:2: ( 'when' )
-            // src/main/resources/org/drools/lang/DRL.g:1783:4: 'when'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1774:2: ( 'when' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1774:4: 'when'
             {
-            match("when"); if (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:1787:2: ( '`' )
-            // src/main/resources/org/drools/lang/DRL.g:1787:4: '`'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1778:2: ( '`' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1778:4: '`'
             {
-            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
-    public final void mTILDE() throws RecognitionException {
-        try {
-            int _type = TILDE;
-            // src/main/resources/org/drools/lang/DRL.g:1791:2: ( '~' )
-            // src/main/resources/org/drools/lang/DRL.g:1791:4: '~'
-            {
-            match('~'); if (failed) return ;
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $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:1794:4: ( '@' )
-            // src/main/resources/org/drools/lang/DRL.g:1794:6: '@'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1781:4: ( '@' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1781:6: '@'
             {
-            match('@'); if (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:1798:2: ( '=' )
-            // src/main/resources/org/drools/lang/DRL.g:1798:4: '='
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1785:2: ( '=' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1785:4: '='
             {
-            match('='); if (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:1802:2: ( ';' )
-            // src/main/resources/org/drools/lang/DRL.g:1802:4: ';'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1789:2: ( ';' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1789:4: ';'
             {
-            match(';'); if (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:1806:2: ( '.*' )
-            // src/main/resources/org/drools/lang/DRL.g:1806:4: '.*'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1793:2: ( '.*' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1793:4: '.*'
             {
-            match(".*"); if (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:1810:2: ( ':' )
-            // src/main/resources/org/drools/lang/DRL.g:1810:4: ':'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1797:2: ( ':' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1797:4: ':'
             {
-            match(':'); if (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:1814:2: ( '==' )
-            // src/main/resources/org/drools/lang/DRL.g:1814:4: '=='
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1801:2: ( '==' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1801:4: '=='
             {
-            match("=="); if (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:1818:2: ( '!=' )
-            // src/main/resources/org/drools/lang/DRL.g:1818:4: '!='
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1805:2: ( '!=' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1805:4: '!='
             {
-            match("!="); if (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:1822:2: ( '>' )
-            // src/main/resources/org/drools/lang/DRL.g:1822:4: '>'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1809:2: ( '>' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1809:4: '>'
             {
-            match('>'); if (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:1826:2: ( '>=' )
-            // src/main/resources/org/drools/lang/DRL.g:1826:4: '>='
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1813:2: ( '>=' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1813:4: '>='
             {
-            match(">="); if (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:1830:2: ( '<' )
-            // src/main/resources/org/drools/lang/DRL.g:1830:4: '<'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1817:2: ( '<' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1817:4: '<'
             {
-            match('<'); if (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:1834:2: ( '<=' )
-            // src/main/resources/org/drools/lang/DRL.g:1834:4: '<='
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1821:2: ( '<=' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1821:4: '<='
             {
-            match("<="); if (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:1838:2: ( '->' )
-            // src/main/resources/org/drools/lang/DRL.g:1838:4: '->'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1825:2: ( '->' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1825:4: '->'
             {
-            match("->"); if (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:1842: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1829:2: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )* | '%' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+ '%' )
             int alt16=2;
             int LA16_0 = input.LA(1);
 
@@ -1428,28 +1476,27 @@
                 alt16=2;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1841: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:1842:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1829:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
                     {
                     if ( input.LA(1)=='$'||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z')||(input.LA(1)>='\u00C0' && input.LA(1)<='\u00FF') ) {
                         input.consume();
-                    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:1842:50: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1829:50: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
                     loop14:
                     do {
                         int alt14=2;
@@ -1462,18 +1509,17 @@
 
                         switch (alt14) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:
+                    	    // /Users/porcelli/Documents/dev/drools-trunk/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;}
 
 
                     	    }
@@ -1488,21 +1534,20 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1843:4: '%' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+ '%'
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1830:4: '%' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+ '%'
                     {
-                    match('%'); if (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:1843:54: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1830:54: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+
                     int cnt15=0;
                     loop15:
                     do {
@@ -1516,18 +1561,17 @@
 
                         switch (alt15) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:
+                    	    // /Users/porcelli/Documents/dev/drools-trunk/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;}
 
 
                     	    }
@@ -1535,7 +1579,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;
@@ -1543,213 +1587,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:1848:9: ( '(' )
-            // src/main/resources/org/drools/lang/DRL.g:1848:11: '('
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1835:9: ( '(' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1835:11: '('
             {
-            match('('); if (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:1852:9: ( ')' )
-            // src/main/resources/org/drools/lang/DRL.g:1852:11: ')'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1839:9: ( ')' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1839:11: ')'
             {
-            match(')'); if (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:1856:9: ( '[' )
-            // src/main/resources/org/drools/lang/DRL.g:1856:11: '['
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1843:9: ( '[' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1843:11: '['
             {
-            match('['); if (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:1860:9: ( ']' )
-            // src/main/resources/org/drools/lang/DRL.g:1860:11: ']'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1847:9: ( ']' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1847:11: ']'
             {
-            match(']'); if (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:1864:9: ( '{' )
-            // src/main/resources/org/drools/lang/DRL.g:1864:11: '{'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1851:9: ( '{' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1851:11: '{'
             {
-            match('{'); if (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:1868:9: ( '}' )
-            // src/main/resources/org/drools/lang/DRL.g:1868:11: '}'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1855:9: ( '}' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1855:11: '}'
             {
-            match('}'); if (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:1871:7: ( ',' )
-            // src/main/resources/org/drools/lang/DRL.g:1871:9: ','
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1858:7: ( ',' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1858:9: ','
             {
-            match(','); if (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:1874:5: ( '.' )
-            // src/main/resources/org/drools/lang/DRL.g:1874:7: '.'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1861:5: ( '.' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1861:7: '.'
             {
-            match('.'); if (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:1878:2: ( '&&' )
-            // src/main/resources/org/drools/lang/DRL.g:1878:4: '&&'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1865:2: ( '&&' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1865:4: '&&'
             {
-            match("&&"); if (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:1882:2: ( '||' )
-            // src/main/resources/org/drools/lang/DRL.g:1882:4: '||'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1869:2: ( '||' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1869:4: '||'
             {
-            match("||"); if (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:1886:2: ( '#' ( options {greedy=false; } : . )* EOL )
-            // src/main/resources/org/drools/lang/DRL.g:1886:4: '#' ( options {greedy=false; } : . )* EOL
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1873:2: ( '#' ( options {greedy=false; } : . )* EOL )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1873:4: '#' ( options {greedy=false; } : . )* EOL
             {
-            match('#'); if (failed) return ;
-            // src/main/resources/org/drools/lang/DRL.g:1886:8: ( options {greedy=false; } : . )*
+            match('#'); if (state.failed) return ;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1873:8: ( options {greedy=false; } : . )*
             loop17:
             do {
                 int alt17=2;
@@ -1761,16 +1827,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:1886:35: .
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1873:35: .
             	    {
-            	    matchAny(); if (failed) return ;
+            	    matchAny(); if (state.failed) return ;
 
             	    }
             	    break;
@@ -1780,30 +1846,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:1892:2: ( '//' ( options {greedy=false; } : . )* EOL )
-            // src/main/resources/org/drools/lang/DRL.g:1892:4: '//' ( options {greedy=false; } : . )* EOL
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1879:2: ( '//' ( options {greedy=false; } : . )* EOL )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1879:4: '//' ( options {greedy=false; } : . )* EOL
             {
-            match("//"); if (failed) return ;
+            match("//"); if (state.failed) return ;
 
-            // src/main/resources/org/drools/lang/DRL.g:1892:9: ( options {greedy=false; } : . )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1879:9: ( options {greedy=false; } : . )*
             loop18:
             do {
                 int alt18=2;
@@ -1815,16 +1883,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:1892:36: .
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1879:36: .
             	    {
-            	    matchAny(); if (failed) return ;
+            	    matchAny(); if (state.failed) return ;
 
             	    }
             	    break;
@@ -1834,30 +1902,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:1897:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // src/main/resources/org/drools/lang/DRL.g:1897:4: '/*' ( options {greedy=false; } : . )* '*/'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1884:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1884:4: '/*' ( options {greedy=false; } : . )* '*/'
             {
-            match("/*"); if (failed) return ;
+            match("/*"); if (state.failed) return ;
 
-            // src/main/resources/org/drools/lang/DRL.g:1897:9: ( options {greedy=false; } : . )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1884:9: ( options {greedy=false; } : . )*
             loop19:
             do {
                 int alt19=2;
@@ -1869,22 +1939,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:1897:35: .
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1884:35: .
             	    {
-            	    matchAny(); if (failed) return ;
+            	    matchAny(); if (state.failed) return ;
 
             	    }
             	    break;
@@ -1894,455 +1964,450 @@
                 }
             } 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:1901:7: ( '!' | '$' | '%' | '^' | '*' | '_' | '-' | '+' | '?' | '/' | '\\'' | '\\\\' | '|' | '&' )
-            // src/main/resources/org/drools/lang/DRL.g:
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1888:7: ( '!' | '$' | '%' | '^' | '*' | '_' | '-' | '+' | '?' | '/' | '\\'' | '\\\\' | '|' | '&' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:
             {
             if ( input.LA(1)=='!'||(input.LA(1)>='$' && input.LA(1)<='\'')||(input.LA(1)>='*' && input.LA(1)<='+')||input.LA(1)=='-'||input.LA(1)=='/'||input.LA(1)=='?'||input.LA(1)=='\\'||(input.LA(1)>='^' && input.LA(1)<='_')||input.LA(1)=='|' ) {
                 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 )
-        int alt20=43;
+        // /Users/porcelli/Documents/dev/drools-trunk/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 | 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=42;
         alt20 = dfa20.predict(input);
         switch (alt20) {
             case 1 :
-                // src/main/resources/org/drools/lang/DRL.g:1:10: WS
+                // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:101: AT
                 {
-                mTILDE(); if (failed) return ;
+                mAT(); if (state.failed) return ;
 
                 }
                 break;
             case 17 :
-                // src/main/resources/org/drools/lang/DRL.g:1:107: AT
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:104: EQUALS
                 {
-                mAT(); if (failed) return ;
+                mEQUALS(); if (state.failed) return ;
 
                 }
                 break;
             case 18 :
-                // src/main/resources/org/drools/lang/DRL.g:1:110: EQUALS
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:111: SEMICOLON
                 {
-                mEQUALS(); if (failed) return ;
+                mSEMICOLON(); if (state.failed) return ;
 
                 }
                 break;
             case 19 :
-                // src/main/resources/org/drools/lang/DRL.g:1:117: SEMICOLON
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:121: DOT_STAR
                 {
-                mSEMICOLON(); if (failed) return ;
+                mDOT_STAR(); if (state.failed) return ;
 
                 }
                 break;
             case 20 :
-                // src/main/resources/org/drools/lang/DRL.g:1:127: DOT_STAR
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:130: COLON
                 {
-                mDOT_STAR(); if (failed) return ;
+                mCOLON(); if (state.failed) return ;
 
                 }
                 break;
             case 21 :
-                // src/main/resources/org/drools/lang/DRL.g:1:136: COLON
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:136: EQUAL
                 {
-                mCOLON(); if (failed) return ;
+                mEQUAL(); if (state.failed) return ;
 
                 }
                 break;
             case 22 :
-                // src/main/resources/org/drools/lang/DRL.g:1:142: EQUAL
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:142: NOT_EQUAL
                 {
-                mEQUAL(); if (failed) return ;
+                mNOT_EQUAL(); if (state.failed) return ;
 
                 }
                 break;
             case 23 :
-                // src/main/resources/org/drools/lang/DRL.g:1:148: NOT_EQUAL
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:152: GREATER
                 {
-                mNOT_EQUAL(); if (failed) return ;
+                mGREATER(); if (state.failed) return ;
 
                 }
                 break;
             case 24 :
-                // src/main/resources/org/drools/lang/DRL.g:1:158: GREATER
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:160: GREATER_EQUAL
                 {
-                mGREATER(); if (failed) return ;
+                mGREATER_EQUAL(); if (state.failed) return ;
 
                 }
                 break;
             case 25 :
-                // src/main/resources/org/drools/lang/DRL.g:1:166: GREATER_EQUAL
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:174: LESS
                 {
-                mGREATER_EQUAL(); if (failed) return ;
+                mLESS(); if (state.failed) return ;
 
                 }
                 break;
             case 26 :
-                // src/main/resources/org/drools/lang/DRL.g:1:180: LESS
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:179: LESS_EQUAL
                 {
-                mLESS(); if (failed) return ;
+                mLESS_EQUAL(); if (state.failed) return ;
 
                 }
                 break;
             case 27 :
-                // src/main/resources/org/drools/lang/DRL.g:1:185: LESS_EQUAL
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:190: ARROW
                 {
-                mLESS_EQUAL(); if (failed) return ;
+                mARROW(); if (state.failed) return ;
 
                 }
                 break;
             case 28 :
-                // src/main/resources/org/drools/lang/DRL.g:1:196: ARROW
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:196: ID
                 {
-                mARROW(); if (failed) return ;
+                mID(); if (state.failed) return ;
 
                 }
                 break;
             case 29 :
-                // src/main/resources/org/drools/lang/DRL.g:1:202: ID
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:199: LEFT_PAREN
                 {
-                mID(); if (failed) return ;
+                mLEFT_PAREN(); if (state.failed) return ;
 
                 }
                 break;
             case 30 :
-                // src/main/resources/org/drools/lang/DRL.g:1:205: LEFT_PAREN
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:210: RIGHT_PAREN
                 {
-                mLEFT_PAREN(); if (failed) return ;
+                mRIGHT_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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:222: LEFT_SQUARE
                 {
-                mRIGHT_PAREN(); if (failed) return ;
+                mLEFT_SQUARE(); if (state.failed) return ;
 
                 }
                 break;
             case 32 :
-                // src/main/resources/org/drools/lang/DRL.g:1:228: LEFT_SQUARE
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:234: RIGHT_SQUARE
                 {
-                mLEFT_SQUARE(); if (failed) return ;
+                mRIGHT_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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:247: LEFT_CURLY
                 {
-                mRIGHT_SQUARE(); if (failed) return ;
+                mLEFT_CURLY(); if (state.failed) return ;
 
                 }
                 break;
             case 34 :
-                // src/main/resources/org/drools/lang/DRL.g:1:253: LEFT_CURLY
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:258: RIGHT_CURLY
                 {
-                mLEFT_CURLY(); if (failed) return ;
+                mRIGHT_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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:270: COMMA
                 {
-                mRIGHT_CURLY(); if (failed) return ;
+                mCOMMA(); if (state.failed) return ;
 
                 }
                 break;
             case 36 :
-                // src/main/resources/org/drools/lang/DRL.g:1:276: COMMA
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:276: DOT
                 {
-                mCOMMA(); if (failed) return ;
+                mDOT(); if (state.failed) return ;
 
                 }
                 break;
             case 37 :
-                // src/main/resources/org/drools/lang/DRL.g:1:282: DOT
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:280: DOUBLE_AMPER
                 {
-                mDOT(); if (failed) return ;
+                mDOUBLE_AMPER(); if (state.failed) return ;
 
                 }
                 break;
             case 38 :
-                // src/main/resources/org/drools/lang/DRL.g:1:286: DOUBLE_AMPER
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:293: DOUBLE_PIPE
                 {
-                mDOUBLE_AMPER(); if (failed) return ;
+                mDOUBLE_PIPE(); if (state.failed) return ;
 
                 }
                 break;
             case 39 :
-                // src/main/resources/org/drools/lang/DRL.g:1:299: DOUBLE_PIPE
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:305: SH_STYLE_SINGLE_LINE_COMMENT
                 {
-                mDOUBLE_PIPE(); if (failed) return ;
+                mSH_STYLE_SINGLE_LINE_COMMENT(); 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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:334: C_STYLE_SINGLE_LINE_COMMENT
                 {
-                mSH_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
+                mC_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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:362: MULTI_LINE_COMMENT
                 {
-                mC_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
+                mMULTI_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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:381: MISC
                 {
-                mMULTI_LINE_COMMENT(); if (failed) return ;
+                mMISC(); if (state.failed) return ;
 
                 }
                 break;
-            case 43 :
-                // src/main/resources/org/drools/lang/DRL.g:1:387: MISC
-                {
-                mMISC(); if (failed) return ;
 
-                }
-                break;
-
         }
 
     }
 
-    // $ANTLR start synpred1
-    public final void synpred1_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/DRL.g:1703:14: ( '\\r\\n' )
-        // src/main/resources/org/drools/lang/DRL.g:1703:16: '\\r\\n'
+    // $ANTLR start synpred1_DRL
+    public final void synpred1_DRL_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1694:14: ( '\\r\\n' )
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1694:16: '\\r\\n'
         {
-        match("\r\n"); if (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"+
-        "\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";
+        "\2\uffff\1\46\1\50\1\uffff\1\46\11\45\2\uffff\1\66\1\uffff\1\70"+
+        "\1\uffff\1\46\1\73\1\75\1\uffff\1\46\7\uffff\2\46\1\uffff\1\46\5"+
+        "\uffff\13\45\15\uffff\6\45\1\123\4\45\1\130\1\131\1\45\1\133\2\45"+
+        "\1\uffff\1\136\1\137\1\140\1\141\2\uffff\1\130\1\uffff\2\45\4\uffff"+
+        "\3\45\1\147\1\45\1\uffff\1\45\1\152\1\uffff";
     static final String DFA20_eofS =
-        "\154\uffff";
+        "\153\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\165\1\166\1\150\2\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\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\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\1\uffff\1\76\1\71\1\uffff\1\uffff\2\162\1\143\1\157\2\156"+
+        "\1\165\1\166\1\150\2\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\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";
+        "\1\uffff\1\1\2\uffff\1\4\12\uffff\1\17\1\20\1\uffff\1\22\1\uffff"+
+        "\1\24\3\uffff\1\34\1\uffff\1\35\1\36\1\37\1\40\1\41\1\42\1\43\2"+
+        "\uffff\1\47\1\uffff\1\34\1\52\1\33\1\2\1\3\13\uffff\1\25\1\21\1"+
+        "\23\1\44\1\26\1\30\1\27\1\32\1\31\1\45\1\46\1\50\1\51\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\145\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"+
-            "\1\27\1\47\1\21\32\46\1\35\1\47\1\36\1\47\1\31\1\17\1\10\1\46"+
-            "\1\11\1\46\1\12\1\7\2\46\1\13\4\46\1\14\1\15\4\46\1\6\2\46\1"+
-            "\16\3\46\1\37\1\43\1\40\1\20\101\uffff\100\46",
+            "\2\1\1\uffff\2\1\22\uffff\1\1\1\25\1\4\1\43\1\30\1\31\1\41\1"+
+            "\5\1\32\1\33\2\46\1\40\1\2\1\23\1\44\12\3\1\24\1\22\1\27\1\21"+
+            "\1\26\1\46\1\20\32\45\1\34\1\46\1\35\1\46\1\30\1\17\1\10\1\45"+
+            "\1\11\1\45\1\12\1\7\2\45\1\13\4\45\1\14\1\15\4\45\1\6\2\45\1"+
+            "\16\3\45\1\36\1\42\1\37\102\uffff\100\45",
             "",
-            "\12\3\4\uffff\1\50",
+            "\12\3\4\uffff\1\47",
             "\1\51\1\uffff\12\3",
             "",
-            "\uffff\4",
-            "\1\54\11\uffff\1\53",
-            "\1\56\20\uffff\1\55",
+            "\0\4",
+            "\1\53\11\uffff\1\52",
+            "\1\54\20\uffff\1\55",
+            "\1\56",
             "\1\57",
             "\1\60",
             "\1\61",
             "\1\62",
             "\1\63",
             "\1\64",
-            "\1\65",
             "",
             "",
+            "\1\65",
             "",
-            "\1\66",
+            "\1\67",
             "",
-            "\1\70",
-            "",
+            "\1\71",
             "\1\72",
-            "\1\73",
-            "\1\75",
+            "\1\74",
             "",
-            "\1\46\34\uffff\32\46\4\uffff\1\46\1\uffff\32\46\105\uffff\100"+
-            "\46",
+            "\1\45\34\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff\100"+
+            "\45",
             "",
             "",
             "",
@@ -2350,15 +2415,16 @@
             "",
             "",
             "",
+            "\1\76",
             "\1\77",
-            "\1\100",
             "",
-            "\1\101\4\uffff\1\102",
+            "\1\101\4\uffff\1\100",
             "",
             "",
             "",
             "",
             "",
+            "\1\102",
             "\1\103",
             "\1\104",
             "\1\105",
@@ -2369,7 +2435,6 @@
             "\1\112",
             "\1\113",
             "\1\114",
-            "\1\115",
             "",
             "",
             "",
@@ -2383,57 +2448,57 @@
             "",
             "",
             "",
+            "\1\115",
             "\1\116",
             "\1\117",
             "\1\120",
             "\1\121",
             "\1\122",
-            "\1\123",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46\105\uffff\100"+
-            "\46",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff\100"+
+            "\45",
+            "\1\124",
             "\1\125",
             "\1\126",
             "\1\127",
-            "\1\130",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46\105\uffff\100"+
-            "\46",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46\105\uffff\100"+
-            "\46",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46\105\uffff\100"+
-            "\46",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff\100"+
+            "\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff\100"+
+            "\45",
+            "\1\132",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff\100"+
+            "\45",
             "\1\134",
             "\1\135",
-            "\1\136",
             "",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46\105\uffff\100"+
-            "\46",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46\105\uffff\100"+
-            "\46",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46\105\uffff\100"+
-            "\46",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46\105\uffff\100"+
-            "\46",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff\100"+
+            "\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff\100"+
+            "\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff\100"+
+            "\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff\100"+
+            "\45",
             "",
             "",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff\100"+
+            "\45",
             "",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46\105\uffff\100"+
-            "\46",
+            "\1\142",
             "\1\143",
-            "\1\144",
             "",
             "",
             "",
             "",
+            "\1\144",
             "\1\145",
             "\1\146",
-            "\1\147",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46\105\uffff\100"+
-            "\46",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff\100"+
+            "\45",
+            "\1\150",
+            "",
             "\1\151",
-            "",
-            "\1\152",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46\105\uffff\100"+
-            "\46",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff\100"+
+            "\45",
             ""
     };
 
@@ -2467,9 +2532,30 @@
             this.transition = DFA20_transition;
         }
         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 );";
+            return "1:1: Tokens : ( WS | INT | FLOAT | STRING | BOOL | ACCUMULATE | COLLECT | END | FROM | INIT | NULL | OVER | THEN | WHEN | GRAVE_ACCENT | 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 = 38;
+
+                        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/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2008-11-25 18:08:44 UTC (rev 24099)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 src/main/resources/org/drools/lang/DRL.g 2008-11-13 19:22:16
+// $ANTLR 3.1.1 /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2008-11-24 22:04:04
 
 	package org.drools.lang;
 	
@@ -18,141 +18,143 @@
 
 public class DRLParser extends Parser {
     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_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", "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", "TILDE", "FLOAT", "NULL", "LEFT_SQUARE", "RIGHT_SQUARE", "THEN", "LEFT_CURLY", "RIGHT_CURLY", "MISC", "EOL", "WS", "EscapeSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "GRAVE_ACCENT", "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_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", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT"
     };
-    public static final int COMMA=90;
+    public static final int COMMA=86;
     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=65;
-    public static final int END=87;
-    public static final int HexDigit=124;
+    public static final int END=83;
+    public static final int HexDigit=119;
     public static final int VK_ATTRIBUTES=57;
     public static final int VT_EXPRESSION_CHAIN=30;
-    public static final int MISC=120;
+    public static final int MISC=115;
     public static final int VT_AND_PREFIX=23;
     public static final int VK_QUERY=63;
-    public static final int THEN=117;
+    public static final int THEN=112;
     public static final int VK_AUTO_FOCUS=49;
-    public static final int TILDE=112;
-    public static final int DOT=85;
+    public static final int DOT=81;
     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=115;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=128;
+    public static final int LEFT_SQUARE=110;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=123;
     public static final int VT_DATA_TYPE=38;
     public static final int VT_FACT=6;
-    public static final int VK_MATCHES=69;
-    public static final int LEFT_CURLY=118;
-    public static final int AT=92;
-    public static final int DOUBLE_AMPER=99;
-    public static final int LEFT_PAREN=89;
+    public static final int LEFT_CURLY=113;
+    public static final int AT=88;
+    public static final int DOUBLE_AMPER=95;
+    public static final int LEFT_PAREN=85;
     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=95;
+    public static final int WHEN=91;
     public static final int VT_ENTRYPOINT_ID=13;
-    public static final int WS=122;
+    public static final int WS=117;
     public static final int VT_FIELD=35;
     public static final int VK_SALIENCE=55;
-    public static final int VK_SOUNDSLIKE=71;
-    public static final int OVER=101;
-    public static final int VK_AND=77;
-    public static final int STRING=88;
+    public static final int OVER=97;
+    public static final int VK_AND=72;
+    public static final int STRING=84;
     public static final int VT_ACCESSOR_ELEMENT=37;
     public static final int VT_ACCUMULATE_INIT_CLAUSE=27;
     public static final int VK_GLOBAL=66;
-    public static final int VK_REVERSE=81;
+    public static final int VK_REVERSE=76;
     public static final int VT_BEHAVIOR=21;
-    public static final int GRAVE_ACCENT=127;
+    public static final int GRAVE_ACCENT=122;
     public static final int VK_DURATION=53;
     public static final int VT_SQUARE_CHUNK=19;
-    public static final int VK_FORALL=79;
+    public static final int VK_FORALL=74;
     public static final int VT_PAREN_CHUNK=20;
     public static final int VT_COMPILATION_UNIT=4;
-    public static final int COLLECT=104;
+    public static final int COLLECT=100;
     public static final int VK_ENABLED=56;
-    public static final int EQUALS=94;
-    public static final int VK_RESULT=82;
-    public static final int UnicodeEscape=125;
+    public static final int VK_RESULT=77;
+    public static final int EQUALS=90;
+    public static final int UnicodeEscape=120;
     public static final int VK_PACKAGE=61;
     public static final int VT_RULE_ID=12;
-    public static final int EQUAL=106;
+    public static final int EQUAL=102;
     public static final int VK_NO_LOOP=48;
-    public static final int SEMICOLON=83;
+    public static final int SEMICOLON=79;
     public static final int VK_TEMPLATE=62;
     public static final int VT_AND_IMPLICIT=22;
-    public static final int NULL=114;
-    public static final int COLON=93;
-    public static final int MULTI_LINE_COMMENT=130;
+    public static final int NULL=109;
+    public static final int COLON=89;
+    public static final int MULTI_LINE_COMMENT=125;
     public static final int VT_RULE_ATTRIBUTES=16;
-    public static final int RIGHT_SQUARE=116;
+    public static final int RIGHT_SQUARE=111;
     public static final int VK_AGENDA_GROUP=51;
     public static final int VT_FACT_OR=33;
-    public static final int VK_NOT=74;
+    public static final int VK_NOT=69;
     public static final int VK_DATE_EXPIRES=46;
-    public static final int ARROW=105;
-    public static final int FLOAT=113;
-    public static final int INIT=103;
+    public static final int ARROW=101;
+    public static final int FLOAT=108;
+    public static final int INIT=99;
     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=98;
-    public static final int LESS=109;
+    public static final int DOUBLE_PIPE=94;
+    public static final int LESS=105;
     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=123;
-    public static final int VK_EXISTS=78;
-    public static final int INT=97;
+    public static final int EscapeSequence=118;
+    public static final int VK_EXISTS=73;
+    public static final int INT=93;
     public static final int VT_BIND_FIELD=34;
     public static final int VK_RULE=58;
     public static final int VK_EVAL=67;
-    public static final int GREATER=107;
+    public static final int GREATER=103;
     public static final int VT_FACT_BINDING=32;
-    public static final int FROM=100;
-    public static final int ID=84;
-    public static final int NOT_EQUAL=111;
-    public static final int RIGHT_CURLY=119;
-    public static final int BOOL=96;
+    public static final int FROM=96;
+    public static final int ID=80;
+    public static final int NOT_EQUAL=107;
+    public static final int RIGHT_CURLY=114;
+    public static final int VK_OPERATOR=78;
+    public static final int BOOL=92;
     public static final int VT_AND_INFIX=25;
     public static final int VT_PARAM_LIST=44;
-    public static final int VK_ENTRY_POINT=73;
+    public static final int VK_ENTRY_POINT=68;
     public static final int VT_FROM_SOURCE=29;
     public static final int VK_LOCK_ON_ACTIVE=47;
-    public static final int VK_CONTAINS=68;
     public static final int VT_FUNCTION_IMPORT=5;
-    public static final int VK_IN=75;
+    public static final int VK_IN=70;
     public static final int VT_RHS_CHUNK=17;
-    public static final int GREATER_EQUAL=108;
-    public static final int VK_MEMBEROF=72;
+    public static final int GREATER_EQUAL=104;
     public static final int VT_OR_INFIX=26;
-    public static final int DOT_STAR=86;
-    public static final int VK_OR=76;
+    public static final int DOT_STAR=82;
+    public static final int VK_OR=71;
     public static final int VT_GLOBAL_ID=42;
-    public static final int LESS_EQUAL=110;
-    public static final int ACCUMULATE=102;
+    public static final int LESS_EQUAL=106;
+    public static final int ACCUMULATE=98;
     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 EOL=121;
+    public static final int EOL=116;
     public static final int VT_IMPORT_ID=41;
     public static final int VK_ACTIVATION_GROUP=50;
-    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=91;
+    public static final int OctalEscape=121;
+    public static final int VK_ACTION=75;
+    public static final int RIGHT_PAREN=87;
     public static final int VT_TEMPLATE_ID=10;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=129;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=124;
     public static final int VK_DECLARE=64;
 
+    // delegates
+    // delegators
+
+
         public DRLParser(TokenStream input) {
-            super(input);
-            ruleMemo = new HashMap[142+1];
-         }
+            this(input, new RecognizerSharedState());
+        }
+        public DRLParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
         
     protected TreeAdaptor adaptor = new CommonTreeAdaptor();
 
@@ -163,10 +165,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-trunk/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);
@@ -174,19 +176,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) {
@@ -197,11 +199,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){
@@ -209,14 +211,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);
@@ -228,7 +230,7 @@
     			emit(false, activeContext);
     		}
     	}
-    
+
     	private DroolsToken getLastTokenOnList(LinkedList list){
     		DroolsToken lastToken = null;
     		for (Object object : list) {
@@ -238,7 +240,7 @@
     		}
     		return lastToken;
     	}
-    
+
     	private int getLastIntegerValue(LinkedList list) {
     		int lastIntergerValue = -1;
     		for (Object object : list) {
@@ -248,19 +250,32 @@
     		}
     		return lastIntergerValue;
     	}
-    
-    	private boolean validateLT(int LTNumber, String text) {
-    		if (null == input)
-    			return false;
+
+    	private String retrieveLT(int LTNumber) {
+          		if (null == input)
+    			return null;
     		if (null == input.LT(LTNumber))
-    			return false;
+    			return null;
     		if (null == input.LT(LTNumber).getText())
-    			return false;
+    			return null;
     	
-    		String text2Validate = input.LT(LTNumber).getText();
-    		return text2Validate.equalsIgnoreCase(text);
+    		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);
     	}
@@ -281,11 +296,11 @@
     		}
     		return false;
     	}
-    
+
     	private boolean validateRestr() {
     		int lookahead = 2;
     		int countParen = 1;
-    
+
     		while (true) {
     			if (input.LA(lookahead) == COMMA) {
     				break;
@@ -314,7 +329,7 @@
     			input.seek(activeIndex);
     		}
     		lookaheadTest = false;
-    
+
     		return returnValue;
     	}
     	
@@ -326,10 +341,10 @@
     	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) {
     			return;
     		}
-    		errorRecovery = true;
+    		state.errorRecovery = true;
     	
     		errors.add(errorMessageFactory.createDroolsException(ex));
     	}
@@ -354,7 +369,7 @@
     	public boolean hasErrors() {
     		return !errors.isEmpty();
     	}
-    
+
     	/**
     	 * Method that adds a paraphrase type into paraphrases stack.
     	 * 
@@ -366,7 +381,7 @@
     		activeMap.put(type, "");
     		paraphrases.push(activeMap);
     	}
-    
+
     	/**
     	 * Method that sets paraphrase value for a type into paraphrases stack.
     	 * 
@@ -378,7 +393,7 @@
     	private void setParaphrasesValue(DroolsParaphraseTypes type, String value) {
     		paraphrases.peek().put(type, value);
     	}
-    
+
     	/**
     	 * Helper method that creates a string from a token list.
     	 * 
@@ -398,32 +413,6 @@
     		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) {
     	}
@@ -434,18 +423,18 @@
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start compilation_unit
-    // src/main/resources/org/drools/lang/DRL.g:396: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:393: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;
@@ -453,60 +442,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:397:2: ( ( package_statement )? ( statement )* EOF -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) )
-            // src/main/resources/org/drools/lang/DRL.g:397:4: ( package_statement )? ( statement )* EOF
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:394:2: ( ( package_statement )? ( statement )* EOF -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:394:4: ( package_statement )? ( statement )* EOF
             {
-            // src/main/resources/org/drools/lang/DRL.g:397:4: ( package_statement )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:394:4: ( package_statement )?
             int alt1=2;
-            int LA1_0 = input.LA(1);
-
-            if ( (LA1_0==ID) && ((((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.QUERY))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validat!
 eLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIden!
 tifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(Drool
sSoftKeywords.PACKAGE))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords!
 .IMPORT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(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.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))) {
-                int LA1_1 = input.LA(2);
-
-                if ( (LA1_1==ID) && ((((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.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.PACKAGE))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifier!
 Key(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.TEMPLATE)))||((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)))||(validateIdentifierKey(DroolsSoftKeywords.QUERY))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifie!
 rKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.
TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||((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.TEMPLAT!
 E)))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||((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.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||((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(Dro!
 olsSoftKeywords.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.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((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 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:397:4: package_statement
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:394:4: package_statement
                     {
-                    pushFollow(FOLLOW_package_statement_in_compilation_unit392);
+                    pushFollow(FOLLOW_package_statement_in_compilation_unit376);
                     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:398:3: ( statement )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:395:3: ( statement )*
             loop2:
             do {
                 int alt2=2;
                 int LA2_0 = input.LA(1);
 
-                if ( (LA2_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))||(validateIdentifierKe!
 y(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.ENABLED))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))))) {
+                if ( (LA2_0==ID) ) {
                     alt2=1;
                 }
 
 
                 switch (alt2) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:398:3: statement
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:395:3: statement
             	    {
-            	    pushFollow(FOLLOW_statement_in_compilation_unit397);
+            	    pushFollow(FOLLOW_statement_in_compilation_unit381);
             	    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;
 
@@ -515,38 +494,38 @@
                 }
             } while (true);
 
-            EOF3=(Token)input.LT(1);
-            match(input,EOF,FOLLOW_EOF_in_compilation_unit402); if (failed) return retval;
-            if ( backtracking==0 ) stream_EOF.add(EOF3);
+            EOF3=(Token)match(input,EOF,FOLLOW_EOF_in_compilation_unit386); 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();
-            // 400:3: -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
+            // 397:3: -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
             {
-                // src/main/resources/org/drools/lang/DRL.g:400:6: ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:397: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:400:28: ( package_statement )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:397: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:400:47: ( statement )*
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:397:47: ( statement )*
                 while ( stream_statement.hasNext() ) {
-                    adaptor.addChild(root_1, stream_statement.next());
+                    adaptor.addChild(root_1, stream_statement.nextTree());
 
                 }
                 stream_statement.reset();
@@ -556,28 +535,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();
@@ -585,10 +564,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);
@@ -597,62 +576,63 @@
             				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);
+            		Tree rootNode = (Tree) adaptor.becomeRoot(adaptor.create(
+            				VT_COMPILATION_UNIT, "VT_COMPILATION_UNIT"), adaptor.nil());
+            		for (int i = 0; i < ((Tree)retval.tree).getChildCount(); i++) {
+            			Tree childNode = (Tree) ((Tree)retval.tree).getChild(i);
+            			if (!(childNode instanceof CommonErrorNode)) {
+            				rootNode.addChild(childNode);
             			}
             		}
+            		retval.tree = rootNode; 
             	}
 
         }
         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:437: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:436: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:440:2: ( package_key package_id ( SEMICOLON )? -> ^( package_key package_id ) )
-            // src/main/resources/org/drools/lang/DRL.g:441:2: package_key package_id ( SEMICOLON )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:439:2: ( package_key package_id ( SEMICOLON )? -> ^( package_key package_id ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:439:4: package_key package_id ( SEMICOLON )?
             {
-            if ( backtracking==0 ) {
-              	beginSentence(DroolsSentenceType.PACKAGE);	
-            }
-            pushFollow(FOLLOW_package_key_in_package_statement462);
+            pushFollow(FOLLOW_package_key_in_package_statement441);
             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_statement466);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_package_key.add(package_key4.getTree());
+            pushFollow(FOLLOW_package_id_in_package_statement445);
             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:443: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:440:14: ( SEMICOLON )?
             int alt3=2;
             int LA3_0 = input.LA(1);
 
@@ -661,11 +641,10 @@
             }
             switch (alt3) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:443:14: SEMICOLON
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:440:14: SEMICOLON
                     {
-                    SEMICOLON6=(Token)input.LT(1);
-                    match(input,SEMICOLON,FOLLOW_SEMICOLON_in_package_statement468); if (failed) return retval;
-                    if ( backtracking==0 ) stream_SEMICOLON.add(SEMICOLON6);
+                    SEMICOLON6=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_package_statement447); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON6);
 
 
                     }
@@ -673,68 +652,71 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(SEMICOLON6, DroolsEditorType.SYMBOL);	
             }
 
+
             // AST REWRITE
-            // elements: package_id, package_key
+            // elements: package_key, package_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();
-            // 445:3: -> ^( package_key package_id )
+            // 442:3: -> ^( package_key package_id )
             {
-                // src/main/resources/org/drools/lang/DRL.g:445:6: ^( package_key package_id )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:442: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:448: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:445: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;
@@ -747,17 +729,16 @@
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:449:2: (id+= ID (id+= DOT id+= ID )* -> ^( VT_PACKAGE_ID ( ID )+ ) )
-            // src/main/resources/org/drools/lang/DRL.g:449:4: id+= ID (id+= DOT id+= ID )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:446:2: (id+= ID (id+= DOT id+= ID )* -> ^( VT_PACKAGE_ID ( ID )+ ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:446:4: id+= ID (id+= DOT id+= ID )*
             {
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_package_id495); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_package_id474); 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:449:11: (id+= DOT id+= ID )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:446:11: (id+= DOT id+= ID )*
             loop4:
             do {
                 int alt4=2;
@@ -770,18 +751,16 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:449:13: id+= DOT id+= ID
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:446:13: id+= DOT id+= ID
             	    {
-            	    id=(Token)input.LT(1);
-            	    match(input,DOT,FOLLOW_DOT_in_package_id501); if (failed) return retval;
-            	    if ( backtracking==0 ) stream_DOT.add(id);
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_package_id480); 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_id505); if (failed) return retval;
-            	    if ( backtracking==0 ) stream_ID.add(id);
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_package_id484); 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);
@@ -795,34 +774,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();
-            // 452:3: -> ^( VT_PACKAGE_ID ( ID )+ )
+            // 449:3: -> ^( VT_PACKAGE_ID ( ID )+ )
             {
-                // src/main/resources/org/drools/lang/DRL.g:452:6: ^( VT_PACKAGE_ID ( ID )+ )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:449: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();
@@ -832,347 +812,268 @@
 
             }
 
+            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:455: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:452: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;
 
 
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:458:3: ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:455:3: ( 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) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(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)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(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)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && !
 validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))||((vali
dateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((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)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeyw!
 ords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||(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)))))) {
-                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==BOOL) && ((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))) {
-                    alt5=1;
-                }
-                else if ( (LA5_1==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {
-                    alt5=1;
-                }
-                else if ( (LA5_1==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((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)))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, "import") && validat!
 eLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||((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, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(Drool!
 sSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)
)&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((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.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdenti!
 fierKey(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.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, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftK!
 eywords.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.TEMPLATE)))))) {
-                    int LA5_5 = 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("455:1: statement options {k=2; } : ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query );", 5, 5, input);
-
-                        throw nvae;
-                    }
-                }
-                else if ( (LA5_1==STRING) && ((((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.QUERY))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(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, Drool!
 sSoftKeywords.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))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))))) {
-                    int LA5_6 = 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("455:1: statement options {k=2; } : ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query );", 5, 6, input);
-
-                        throw nvae;
-                    }
-                }
-                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("455: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("455: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:459:2: rule_attribute
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:455:5: rule_attribute
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    if ( backtracking==0 ) {
-                      	beginSentence(DroolsSentenceType.RULE_ATTRIBUTE);	
-                    }
-                    pushFollow(FOLLOW_rule_attribute_in_statement549);
+                    pushFollow(FOLLOW_rule_attribute_in_statement522);
                     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:461:3: {...}? => function_import_statement
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:456: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_statement556);
+                    pushFollow(FOLLOW_function_import_statement_in_statement529);
                     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:462:4: import_statement
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:457:4: import_statement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_import_statement_in_statement562);
+                    pushFollow(FOLLOW_import_statement_in_statement535);
                     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:463:4: global
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:458:4: global
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_global_in_statement568);
+                    pushFollow(FOLLOW_global_in_statement541);
                     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:464:4: function
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:459:4: function
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_function_in_statement574);
+                    pushFollow(FOLLOW_function_in_statement547);
                     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:465:4: {...}? => template
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:460: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_statement582);
+                    pushFollow(FOLLOW_template_in_statement555);
                     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:466:4: {...}? => type_declaration
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:461: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_statement590);
+                    pushFollow(FOLLOW_type_declaration_in_statement563);
                     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:467:4: rule
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:462:4: rule
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_rule_in_statement595);
+                    pushFollow(FOLLOW_rule_in_statement568);
                     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:468:4: query
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:463:4: query
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_query_in_statement600);
+                    pushFollow(FOLLOW_query_in_statement573);
                     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:471: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:466: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:474:2: ( import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )? -> ^( import_key import_name ) )
-            // src/main/resources/org/drools/lang/DRL.g:475:2: import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:469:2: ( import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )? -> ^( import_key import_name ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:469:4: import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )?
             {
-            if ( backtracking==0 ) {
-              	beginSentence(DroolsSentenceType.IMPORT_STATEMENT);	
-            }
-            pushFollow(FOLLOW_import_key_in_import_statement627);
+            pushFollow(FOLLOW_import_key_in_import_statement595);
             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_statement629);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_import_key.add(import_key16.getTree());
+            pushFollow(FOLLOW_import_name_in_import_statement597);
             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:476: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:469:57: ( SEMICOLON )?
             int alt6=2;
             int LA6_0 = input.LA(1);
 
@@ -1181,11 +1082,10 @@
             }
             switch (alt6) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:476:56: SEMICOLON
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:469:57: SEMICOLON
                     {
-                    SEMICOLON18=(Token)input.LT(1);
-                    match(input,SEMICOLON,FOLLOW_SEMICOLON_in_import_statement632); if (failed) return retval;
-                    if ( backtracking==0 ) stream_SEMICOLON.add(SEMICOLON18);
+                    SEMICOLON18=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_import_statement600); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON18);
 
 
                     }
@@ -1193,78 +1093,81 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(SEMICOLON18, DroolsEditorType.SYMBOL);	
             }
 
+
             // AST REWRITE
             // elements: import_key, import_name
             // 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();
-            // 478:3: -> ^( import_key import_name )
+            // 471:3: -> ^( import_key import_name )
             {
-                // src/main/resources/org/drools/lang/DRL.g:478:6: ^( import_key import_name )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:471: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:481: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:474: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;
@@ -1272,30 +1175,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:484: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:485:2: imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:477: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:477: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_statement675);
+            pushFollow(FOLLOW_import_key_in_function_import_statement638);
             imp=import_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_import_key.add(imp.getTree());
-            pushFollow(FOLLOW_function_key_in_function_import_statement677);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_import_key.add(imp.getTree());
+            pushFollow(FOLLOW_function_key_in_function_import_statement640);
             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_statement679);
+
+            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_statement642);
             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:486: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:477:83: ( SEMICOLON )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -1304,11 +1207,10 @@
             }
             switch (alt7) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:486:82: SEMICOLON
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:477:83: SEMICOLON
                     {
-                    SEMICOLON21=(Token)input.LT(1);
-                    match(input,SEMICOLON,FOLLOW_SEMICOLON_in_function_import_statement682); if (failed) return retval;
-                    if ( backtracking==0 ) stream_SEMICOLON.add(SEMICOLON21);
+                    SEMICOLON21=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_function_import_statement645); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON21);
 
 
                     }
@@ -1316,69 +1218,72 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(SEMICOLON21, DroolsEditorType.SYMBOL);	
             }
 
+
             // AST REWRITE
-            // elements: import_name, function_key
+            // elements: function_key, import_name
             // 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();
-            // 488:3: -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name )
+            // 479:3: -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name )
             {
-                // src/main/resources/org/drools/lang/DRL.g:488:6: ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:479: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:491: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:482: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;
@@ -1392,17 +1297,16 @@
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:492:2: (id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )? -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) )
-            // src/main/resources/org/drools/lang/DRL.g:492:4: id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:483:2: (id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )? -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:483:4: id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )?
             {
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_import_name716); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_import_name679); 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:492:11: (id+= DOT id+= ID )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:483:11: (id+= DOT id+= ID )*
             loop8:
             do {
                 int alt8=2;
@@ -1415,18 +1319,16 @@
 
                 switch (alt8) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:492:13: id+= DOT id+= ID
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:483:13: id+= DOT id+= ID
             	    {
-            	    id=(Token)input.LT(1);
-            	    match(input,DOT,FOLLOW_DOT_in_import_name722); if (failed) return retval;
-            	    if ( backtracking==0 ) stream_DOT.add(id);
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_import_name685); 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_name726); if (failed) return retval;
-            	    if ( backtracking==0 ) stream_ID.add(id);
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_import_name689); 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);
@@ -1440,7 +1342,7 @@
                 }
             } while (true);
 
-            // src/main/resources/org/drools/lang/DRL.g:492:33: (id+= DOT_STAR )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:483:33: (id+= DOT_STAR )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -1449,11 +1351,10 @@
             }
             switch (alt9) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:492:33: id+= DOT_STAR
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:483:33: id+= DOT_STAR
                     {
-                    id=(Token)input.LT(1);
-                    match(input,DOT_STAR,FOLLOW_DOT_STAR_in_import_name733); if (failed) return retval;
-                    if ( backtracking==0 ) stream_DOT_STAR.add(id);
+                    id=(Token)match(input,DOT_STAR,FOLLOW_DOT_STAR_in_import_name696); 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);
@@ -1464,40 +1365,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();
-            // 495:3: -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
+            // 486:3: -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
             {
-                // src/main/resources/org/drools/lang/DRL.g:495:6: ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:486: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:495:25: ( DOT_STAR )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:486: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();
@@ -1507,46 +1409,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:498: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:489: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;
@@ -1554,30 +1458,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:501:2: ( global_key data_type global_id ( SEMICOLON )? -> ^( global_key data_type global_id ) )
-            // src/main/resources/org/drools/lang/DRL.g:502:2: global_key data_type global_id ( SEMICOLON )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:492:2: ( global_key data_type global_id ( SEMICOLON )? -> ^( global_key data_type global_id ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:492:4: global_key data_type global_id ( SEMICOLON )?
             {
-            if ( backtracking==0 ) {
-              	beginSentence(DroolsSentenceType.GLOBAL);	
-            }
-            pushFollow(FOLLOW_global_key_in_global778);
+            pushFollow(FOLLOW_global_key_in_global736);
             global_key22=global_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_global_key.add(global_key22.getTree());
-            pushFollow(FOLLOW_data_type_in_global780);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_global_key.add(global_key22.getTree());
+            pushFollow(FOLLOW_data_type_in_global738);
             data_type23=data_type();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_data_type.add(data_type23.getTree());
-            pushFollow(FOLLOW_global_id_in_global782);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_data_type.add(data_type23.getTree());
+            pushFollow(FOLLOW_global_id_in_global740);
             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:503: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:492:35: ( SEMICOLON )?
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -1586,11 +1490,10 @@
             }
             switch (alt10) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:503:34: SEMICOLON
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:492:35: SEMICOLON
                     {
-                    SEMICOLON25=(Token)input.LT(1);
-                    match(input,SEMICOLON,FOLLOW_SEMICOLON_in_global784); if (failed) return retval;
-                    if ( backtracking==0 ) stream_SEMICOLON.add(SEMICOLON25);
+                    SEMICOLON25=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_global742); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON25);
 
 
                     }
@@ -1598,69 +1501,72 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(SEMICOLON25, DroolsEditorType.SYMBOL);	
             }
 
+
             // AST REWRITE
-            // elements: data_type, global_key, global_id
+            // elements: global_id, data_type, global_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();
-            // 505:3: -> ^( global_key data_type global_id )
+            // 494:3: -> ^( global_key data_type global_id )
             {
-                // src/main/resources/org/drools/lang/DRL.g:505:6: ^( global_key data_type global_id )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:494: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:508: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:497: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;
@@ -1671,78 +1577,80 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:509:2: (id= ID -> VT_GLOBAL_ID[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:509:4: id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:498:2: (id= ID -> VT_GLOBAL_ID[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:498:4: id= ID
             {
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_global_id813); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_global_id771); 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();
-            // 512:3: -> VT_GLOBAL_ID[$id]
+            // 501: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:515: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:504: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");
@@ -1750,20 +1658,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:518: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:519:2: function_key ( data_type )? function_id parameters curly_chunk
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:507:2: ( function_key ( data_type )? function_id parameters curly_chunk -> ^( function_key ( data_type )? function_id parameters curly_chunk ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:507:4: function_key ( data_type )? function_id parameters curly_chunk
             {
-            if ( backtracking==0 ) {
-              	beginSentence(DroolsSentenceType.FUNCTION);	
-            }
-            pushFollow(FOLLOW_function_key_in_function850);
+            pushFollow(FOLLOW_function_key_in_function803);
             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:520: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:507:17: ( data_type )?
             int alt11=2;
             int LA11_0 = input.LA(1);
 
@@ -1776,101 +1682,108 @@
             }
             switch (alt11) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:520:16: data_type
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:507:17: data_type
                     {
-                    pushFollow(FOLLOW_data_type_in_function852);
+                    pushFollow(FOLLOW_data_type_in_function805);
                     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_function855);
+            pushFollow(FOLLOW_function_id_in_function808);
             function_id28=function_id();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_function_id.add(function_id28.getTree());
-            pushFollow(FOLLOW_parameters_in_function857);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_function_id.add(function_id28.getTree());
+            pushFollow(FOLLOW_parameters_in_function810);
             parameters29=parameters();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_parameters.add(parameters29.getTree());
-            pushFollow(FOLLOW_curly_chunk_in_function859);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_parameters.add(parameters29.getTree());
+            pushFollow(FOLLOW_curly_chunk_in_function812);
             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: function_key, data_type, curly_chunk, parameters, function_id
+            // elements: curly_chunk, function_id, data_type, 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();
-            // 521:3: -> ^( function_key ( data_type )? function_id parameters curly_chunk )
+            // 508:3: -> ^( function_key ( data_type )? function_id parameters curly_chunk )
             {
-                // src/main/resources/org/drools/lang/DRL.g:521:6: ^( function_key ( data_type )? function_id parameters curly_chunk )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:508: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:521:21: ( data_type )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:508: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:524: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:511: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;
@@ -1881,78 +1794,80 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:525:2: (id= ID -> VT_FUNCTION_ID[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:525:4: id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:512:2: (id= ID -> VT_FUNCTION_ID[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:512:4: id= ID
             {
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_function_id889); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_function_id842); 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();
-            // 528:3: -> VT_FUNCTION_ID[$id]
+            // 515: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:531: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:518: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;
@@ -1963,58 +1878,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:534: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:535:2: query_key query_id ( parameters )? normal_lhs_block END ( SEMICOLON )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:521: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:521:4: query_key query_id ( parameters )? normal_lhs_block END ( SEMICOLON )?
             {
-            if ( backtracking==0 ) {
-              	beginSentence(DroolsSentenceType.QUERY);	
-            }
-            pushFollow(FOLLOW_query_key_in_query926);
+            pushFollow(FOLLOW_query_key_in_query874);
             query_key31=query_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_query_key.add(query_key31.getTree());
-            pushFollow(FOLLOW_query_id_in_query928);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_query_key.add(query_key31.getTree());
+            pushFollow(FOLLOW_query_id_in_query876);
             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:538:3: ( parameters )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:523:3: ( parameters )?
             int alt12=2;
             alt12 = dfa12.predict(input);
             switch (alt12) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:538:3: parameters
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:523:3: parameters
                     {
-                    pushFollow(FOLLOW_parameters_in_query936);
+                    pushFollow(FOLLOW_parameters_in_query884);
                     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_query945);
+            pushFollow(FOLLOW_normal_lhs_block_in_query893);
             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_query950); if (failed) return retval;
-            if ( backtracking==0 ) stream_END.add(END35);
 
-            // src/main/resources/org/drools/lang/DRL.g:541: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_query898); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_END.add(END35);
+
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:526:7: ( SEMICOLON )?
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -2023,11 +1938,10 @@
             }
             switch (alt13) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:541:7: SEMICOLON
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:526:7: SEMICOLON
                     {
-                    SEMICOLON36=(Token)input.LT(1);
-                    match(input,SEMICOLON,FOLLOW_SEMICOLON_in_query952); if (failed) return retval;
-                    if ( backtracking==0 ) stream_SEMICOLON.add(SEMICOLON36);
+                    SEMICOLON36=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_query900); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON36);
 
 
                     }
@@ -2035,77 +1949,80 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(END35, DroolsEditorType.KEYWORD);
               		emit(SEMICOLON36, DroolsEditorType.SYMBOL);	
             }
 
+
             // AST REWRITE
-            // elements: END, parameters, query_id, normal_lhs_block, query_key
+            // elements: query_key, normal_lhs_block, query_id, END, parameters
             // 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();
-            // 544:3: -> ^( query_key query_id ( parameters )? normal_lhs_block END )
+            // 529:3: -> ^( query_key query_id ( parameters )? normal_lhs_block END )
             {
-                // src/main/resources/org/drools/lang/DRL.g:544:6: ^( query_key query_id ( parameters )? normal_lhs_block END )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:529: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:544:27: ( parameters )?
+                adaptor.addChild(root_1, stream_query_id.nextTree());
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:529: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:547: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:532: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;
@@ -2117,7 +2034,7 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:548:2: (id= ID -> VT_QUERY_ID[$id] | id= STRING -> VT_QUERY_ID[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:533:2: (id= ID -> VT_QUERY_ID[$id] | id= STRING -> VT_QUERY_ID[$id] )
             int alt14=2;
             int LA14_0 = input.LA(1);
 
@@ -2128,107 +2045,108 @@
                 alt14=2;
             }
             else {
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("547: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:548:5: id= ID
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:533:5: id= ID
                     {
-                    id=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_query_id987); if (failed) return retval;
-                    if ( backtracking==0 ) stream_ID.add(id);
+                    id=(Token)match(input,ID,FOLLOW_ID_in_query_id935); 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();
-                    // 550:65: -> VT_QUERY_ID[$id]
+                    // 535: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:551:5: id= STRING
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:536:5: id= STRING
                     {
-                    id=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_query_id1003); if (failed) return retval;
-                    if ( backtracking==0 ) stream_STRING.add(id);
+                    id=(Token)match(input,STRING,FOLLOW_STRING_in_query_id951); 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();
-                    // 553:65: -> VT_QUERY_ID[$id]
+                    // 538: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:556: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:541: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;
@@ -2236,9 +2154,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;
@@ -2249,17 +2167,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:557: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:557:4: LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:542:2: ( LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:542:4: LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN
             {
-            LEFT_PAREN37=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_parameters1022); if (failed) return retval;
-            if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN37);
+            LEFT_PAREN37=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_parameters970); 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:558:4: ( param_definition ( COMMA param_definition )* )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:543:4: ( param_definition ( COMMA param_definition )* )?
             int alt16=2;
             int LA16_0 = input.LA(1);
 
@@ -2268,14 +2185,15 @@
             }
             switch (alt16) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:558:6: param_definition ( COMMA param_definition )*
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:543:6: param_definition ( COMMA param_definition )*
                     {
-                    pushFollow(FOLLOW_param_definition_in_parameters1031);
+                    pushFollow(FOLLOW_param_definition_in_parameters979);
                     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:558: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:543:23: ( COMMA param_definition )*
                     loop15:
                     do {
                         int alt15=2;
@@ -2288,21 +2206,21 @@
 
                         switch (alt15) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:558:24: COMMA param_definition
+                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:543:24: COMMA param_definition
                     	    {
-                    	    COMMA39=(Token)input.LT(1);
-                    	    match(input,COMMA,FOLLOW_COMMA_in_parameters1034); if (failed) return retval;
-                    	    if ( backtracking==0 ) stream_COMMA.add(COMMA39);
+                    	    COMMA39=(Token)match(input,COMMA,FOLLOW_COMMA_in_parameters982); 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_parameters1038);
+                    	    pushFollow(FOLLOW_param_definition_in_parameters986);
                     	    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;
 
@@ -2317,169 +2235,175 @@
 
             }
 
-            RIGHT_PAREN41=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_parameters1047); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN41);
+            RIGHT_PAREN41=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_parameters995); 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
+            // elements: RIGHT_PAREN, param_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();
-            // 560:3: -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN )
+            // 545:3: -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN )
             {
-                // src/main/resources/org/drools/lang/DRL.g:560:6: ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:545: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:560:22: ( param_definition )*
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:545: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:563: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:548: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:564:2: ( ( data_type )? argument )
-            // src/main/resources/org/drools/lang/DRL.g:564:4: ( data_type )? argument
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:549:2: ( ( data_type )? argument )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:549:4: ( data_type )? argument
             {
             root_0 = (Object)adaptor.nil();
 
-            // src/main/resources/org/drools/lang/DRL.g:564:4: ( data_type )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:549:4: ( data_type )?
             int alt17=2;
             alt17 = dfa17.predict(input);
             switch (alt17) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:564:4: data_type
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:549:4: data_type
                     {
-                    pushFollow(FOLLOW_data_type_in_param_definition1073);
+                    pushFollow(FOLLOW_data_type_in_param_definition1021);
                     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_definition1076);
+            pushFollow(FOLLOW_argument_in_param_definition1024);
             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:567: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:552: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:568:2: ( ID ( dimension_definition )* )
-            // src/main/resources/org/drools/lang/DRL.g:568:4: ID ( dimension_definition )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:553:2: ( ID ( dimension_definition )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:553:4: ID ( dimension_definition )*
             {
             root_0 = (Object)adaptor.nil();
 
-            ID44=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_argument1087); if (failed) return retval;
-            if ( backtracking==0 ) {
+            ID44=(Token)match(input,ID,FOLLOW_ID_in_argument1035); 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:569:3: ( dimension_definition )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:554:3: ( dimension_definition )*
             loop18:
             do {
                 int alt18=2;
@@ -2492,14 +2416,15 @@
 
                 switch (alt18) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:569:3: dimension_definition
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:554:3: dimension_definition
             	    {
-            	    pushFollow(FOLLOW_dimension_definition_in_argument1093);
+            	    pushFollow(FOLLOW_dimension_definition_in_argument1041);
             	    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;
 
@@ -2513,42 +2438,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: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 type_declaration_return type_declaration() throws RecognitionException {
-        type_declaration_return retval = new type_declaration_return();
+    // $ANTLR start "type_declaration"
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:557: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;
@@ -2557,25 +2485,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:575: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:576:2: declare_key type_declare_id ( decl_metadata )* ( decl_field )* END
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:560: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:560:4: declare_key type_declare_id ( decl_metadata )* ( decl_field )* END
             {
-            if ( backtracking==0 ) {
-              	beginSentence(DroolsSentenceType.TYPE_DECLARATION);	
-            }
-            pushFollow(FOLLOW_declare_key_in_type_declaration1121);
+            pushFollow(FOLLOW_declare_key_in_type_declaration1064);
             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_declaration1124);
+
+            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_declaration1067);
             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:578: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:561:3: ( decl_metadata )*
             loop19:
             do {
                 int alt19=2;
@@ -2588,14 +2515,15 @@
 
                 switch (alt19) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:578:3: decl_metadata
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:561:3: decl_metadata
             	    {
-            	    pushFollow(FOLLOW_decl_metadata_in_type_declaration1128);
+            	    pushFollow(FOLLOW_decl_metadata_in_type_declaration1071);
             	    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;
 
@@ -2604,7 +2532,7 @@
                 }
             } while (true);
 
-            // src/main/resources/org/drools/lang/DRL.g:579:3: ( decl_field )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:562:3: ( decl_field )*
             loop20:
             do {
                 int alt20=2;
@@ -2617,14 +2545,15 @@
 
                 switch (alt20) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:579:3: decl_field
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:562:3: decl_field
             	    {
-            	    pushFollow(FOLLOW_decl_field_in_type_declaration1133);
+            	    pushFollow(FOLLOW_decl_field_in_type_declaration1076);
             	    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;
 
@@ -2633,85 +2562,87 @@
                 }
             } while (true);
 
-            END50=(Token)input.LT(1);
-            match(input,END,FOLLOW_END_in_type_declaration1138); if (failed) return retval;
-            if ( backtracking==0 ) stream_END.add(END50);
+            END50=(Token)match(input,END,FOLLOW_END_in_type_declaration1081); 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: type_declare_id, END, declare_key, decl_metadata, decl_field
+            // elements: decl_metadata, END, type_declare_id, decl_field, declare_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();
-            // 582:3: -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* END )
+            // 565:3: -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* END )
             {
-                // src/main/resources/org/drools/lang/DRL.g:582:6: ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* END )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:565: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:582:36: ( decl_metadata )*
+                adaptor.addChild(root_1, stream_type_declare_id.nextTree());
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:565: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:582:51: ( decl_field )*
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:565: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:585: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:568: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;
@@ -2722,72 +2653,74 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:586:2: (id= ID -> VT_TYPE_DECLARE_ID[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:586:5: id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:569:2: (id= ID -> VT_TYPE_DECLARE_ID[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:569:5: id= ID
             {
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_type_declare_id1173); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_type_declare_id1116); 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();
-            // 588:72: -> VT_TYPE_DECLARE_ID[$id]
+            // 571: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:591: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:574: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;
@@ -2796,96 +2729,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:592:2: ( AT ID paren_chunk -> ^( AT ID paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:592:4: AT ID paren_chunk
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:575:2: ( AT ID paren_chunk -> ^( AT ID paren_chunk ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:575:4: AT ID paren_chunk
             {
-            AT51=(Token)input.LT(1);
-            match(input,AT,FOLLOW_AT_in_decl_metadata1192); if (failed) return retval;
-            if ( backtracking==0 ) stream_AT.add(AT51);
+            AT51=(Token)match(input,AT,FOLLOW_AT_in_decl_metadata1135); 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_metadata1200); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID52);
+            ID52=(Token)match(input,ID,FOLLOW_ID_in_decl_metadata1143); 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_metadata1207);
+            pushFollow(FOLLOW_paren_chunk_in_decl_metadata1150);
             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: paren_chunk, AT, ID
+            // elements: ID, paren_chunk, AT
             // 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();
-            // 597:3: -> ^( AT ID paren_chunk )
+            // 580:3: -> ^( AT ID paren_chunk )
             {
-                // src/main/resources/org/drools/lang/DRL.g:597:6: ^( AT ID paren_chunk )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:580: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:600: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:583: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;
@@ -2896,17 +2831,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:601: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:601:4: ID ( decl_field_initialization )? COLON data_type ( decl_metadata )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:584:2: ( ID ( decl_field_initialization )? COLON data_type ( decl_metadata )* -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:584:4: ID ( decl_field_initialization )? COLON data_type ( decl_metadata )*
             {
-            ID54=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_decl_field1230); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID54);
+            ID54=(Token)match(input,ID,FOLLOW_ID_in_decl_field1173); 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:602:3: ( decl_field_initialization )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:585:3: ( decl_field_initialization )?
             int alt21=2;
             int LA21_0 = input.LA(1);
 
@@ -2915,32 +2849,33 @@
             }
             switch (alt21) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:602:3: decl_field_initialization
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:585:3: decl_field_initialization
                     {
-                    pushFollow(FOLLOW_decl_field_initialization_in_decl_field1236);
+                    pushFollow(FOLLOW_decl_field_initialization_in_decl_field1179);
                     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_field1242); if (failed) return retval;
-            if ( backtracking==0 ) stream_COLON.add(COLON56);
+            COLON56=(Token)match(input,COLON,FOLLOW_COLON_in_decl_field1185); 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_field1248);
+            pushFollow(FOLLOW_data_type_in_decl_field1191);
             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:605: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:588:3: ( decl_metadata )*
             loop22:
             do {
                 int alt22=2;
@@ -2953,14 +2888,15 @@
 
                 switch (alt22) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:605:3: decl_metadata
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:588:3: decl_metadata
             	    {
-            	    pushFollow(FOLLOW_decl_metadata_in_decl_field1252);
+            	    pushFollow(FOLLOW_decl_metadata_in_decl_field1195);
             	    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;
 
@@ -2970,34 +2906,35 @@
             } while (true);
 
 
+
             // AST REWRITE
-            // elements: decl_metadata, decl_field_initialization, ID, data_type
+            // elements: decl_metadata, ID, decl_field_initialization, 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();
-            // 606:3: -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* )
+            // 589:3: -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* )
             {
-                // src/main/resources/org/drools/lang/DRL.g:606:6: ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:589: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:606:11: ( decl_field_initialization )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:589: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:606:48: ( decl_metadata )*
+                adaptor.addChild(root_1, stream_data_type.nextTree());
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:589: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();
@@ -3007,119 +2944,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:609: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:592: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:610:2: ( EQUALS paren_chunk -> ^( EQUALS paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:610:4: EQUALS paren_chunk
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:593:2: ( EQUALS paren_chunk -> ^( EQUALS paren_chunk ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:593:4: EQUALS paren_chunk
             {
-            EQUALS59=(Token)input.LT(1);
-            match(input,EQUALS,FOLLOW_EQUALS_in_decl_field_initialization1280); if (failed) return retval;
-            if ( backtracking==0 ) stream_EQUALS.add(EQUALS59);
+            EQUALS59=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_decl_field_initialization1223); 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_initialization1286);
+            pushFollow(FOLLOW_paren_chunk_in_decl_field_initialization1229);
             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
             // 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();
-            // 612:2: -> ^( EQUALS paren_chunk )
+            // 595:2: -> ^( EQUALS paren_chunk )
             {
-                // src/main/resources/org/drools/lang/DRL.g:612:5: ^( EQUALS paren_chunk )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:595: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:615: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:598: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;
@@ -3127,11 +3069,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;
@@ -3144,23 +3086,25 @@
         RewriteRuleSubtreeStream stream_template_key=new RewriteRuleSubtreeStream(adaptor,"rule template_key");
          pushParaphrases(DroolsParaphraseTypes.TEMPLATE); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:618: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:619:2: template_key template_id (semi1= SEMICOLON )? ( template_slot )+ END (semi2= SEMICOLON )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:601:2: ( template_key template_id (semi1= SEMICOLON )? ( template_slot )+ END (semi2= SEMICOLON )? -> ^( template_key template_id ( template_slot )+ END ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:602:2: template_key template_id (semi1= SEMICOLON )? ( template_slot )+ END (semi2= SEMICOLON )?
             {
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	beginSentence(DroolsSentenceType.TEMPLATE);	
             }
-            pushFollow(FOLLOW_template_key_in_template1323);
+            pushFollow(FOLLOW_template_key_in_template1266);
             template_key61=template_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_template_key.add(template_key61.getTree());
-            pushFollow(FOLLOW_template_id_in_template1325);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_template_key.add(template_key61.getTree());
+            pushFollow(FOLLOW_template_id_in_template1268);
             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:621: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:604:8: (semi1= SEMICOLON )?
             int alt23=2;
             int LA23_0 = input.LA(1);
 
@@ -3169,11 +3113,10 @@
             }
             switch (alt23) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:621:8: semi1= SEMICOLON
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:604:8: semi1= SEMICOLON
                     {
-                    semi1=(Token)input.LT(1);
-                    match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1332); if (failed) return retval;
-                    if ( backtracking==0 ) stream_SEMICOLON.add(semi1);
+                    semi1=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1275); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SEMICOLON.add(semi1);
 
 
                     }
@@ -3181,10 +3124,10 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(semi1, DroolsEditorType.SYMBOL);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:623:3: ( template_slot )+
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:606:3: ( template_slot )+
             int cnt24=0;
             loop24:
             do {
@@ -3198,20 +3141,21 @@
 
                 switch (alt24) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:623:3: template_slot
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:606:3: template_slot
             	    {
-            	    pushFollow(FOLLOW_template_slot_in_template1340);
+            	    pushFollow(FOLLOW_template_slot_in_template1283);
             	    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;
@@ -3219,11 +3163,10 @@
                 cnt24++;
             } while (true);
 
-            END64=(Token)input.LT(1);
-            match(input,END,FOLLOW_END_in_template1345); if (failed) return retval;
-            if ( backtracking==0 ) stream_END.add(END64);
+            END64=(Token)match(input,END,FOLLOW_END_in_template1288); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_END.add(END64);
 
-            // src/main/resources/org/drools/lang/DRL.g:624:12: (semi2= SEMICOLON )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:607:12: (semi2= SEMICOLON )?
             int alt25=2;
             int LA25_0 = input.LA(1);
 
@@ -3232,11 +3175,10 @@
             }
             switch (alt25) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:624:12: semi2= SEMICOLON
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:607:12: semi2= SEMICOLON
                     {
-                    semi2=(Token)input.LT(1);
-                    match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1349); if (failed) return retval;
-                    if ( backtracking==0 ) stream_SEMICOLON.add(semi2);
+                    semi2=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1292); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SEMICOLON.add(semi2);
 
 
                     }
@@ -3244,78 +3186,81 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(END64, DroolsEditorType.KEYWORD);
               		emit(semi2, DroolsEditorType.SYMBOL);	
             }
 
+
             // AST REWRITE
-            // elements: template_slot, template_id, END, template_key
+            // elements: END, template_slot, template_key, template_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();
-            // 627:3: -> ^( template_key template_id ( template_slot )+ END )
+            // 610:3: -> ^( template_key template_id ( template_slot )+ END )
             {
-                // src/main/resources/org/drools/lang/DRL.g:627:6: ^( template_key template_id ( template_slot )+ END )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:610: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:630: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:613: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;
@@ -3327,7 +3272,7 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:631:2: (id= ID -> VT_TEMPLATE_ID[$id] | id= STRING -> VT_TEMPLATE_ID[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:614:2: (id= ID -> VT_TEMPLATE_ID[$id] | id= STRING -> VT_TEMPLATE_ID[$id] )
             int alt26=2;
             int LA26_0 = input.LA(1);
 
@@ -3338,115 +3283,116 @@
                 alt26=2;
             }
             else {
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("630: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:631:5: id= ID
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:614:5: id= ID
                     {
-                    id=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_template_id1382); if (failed) return retval;
-                    if ( backtracking==0 ) stream_ID.add(id);
+                    id=(Token)match(input,ID,FOLLOW_ID_in_template_id1325); 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();
-                    // 633:68: -> VT_TEMPLATE_ID[$id]
+                    // 616: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:634:5: id= STRING
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:617:5: id= STRING
                     {
-                    id=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_template_id1398); if (failed) return retval;
-                    if ( backtracking==0 ) stream_STRING.add(id);
+                    id=(Token)match(input,STRING,FOLLOW_STRING_in_template_id1341); 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();
-                    // 636:68: -> VT_TEMPLATE_ID[$id]
+                    // 619: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:639: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:622: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;
@@ -3454,20 +3400,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:640:2: ( data_type slot_id ( SEMICOLON )? -> ^( VT_SLOT data_type slot_id ) )
-            // src/main/resources/org/drools/lang/DRL.g:640:5: data_type slot_id ( SEMICOLON )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:623:2: ( data_type slot_id ( SEMICOLON )? -> ^( VT_SLOT data_type slot_id ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:623:5: data_type slot_id ( SEMICOLON )?
             {
-            pushFollow(FOLLOW_data_type_in_template_slot1418);
+            pushFollow(FOLLOW_data_type_in_template_slot1361);
             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_slot1420);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_data_type.add(data_type65.getTree());
+            pushFollow(FOLLOW_slot_id_in_template_slot1363);
             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:640: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:623:23: ( SEMICOLON )?
             int alt27=2;
             int LA27_0 = input.LA(1);
 
@@ -3476,11 +3424,10 @@
             }
             switch (alt27) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:640:23: SEMICOLON
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:623:23: SEMICOLON
                     {
-                    SEMICOLON67=(Token)input.LT(1);
-                    match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template_slot1422); if (failed) return retval;
-                    if ( backtracking==0 ) stream_SEMICOLON.add(SEMICOLON67);
+                    SEMICOLON67=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template_slot1365); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON67);
 
 
                     }
@@ -3488,66 +3435,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();
-            // 642:3: -> ^( VT_SLOT data_type slot_id )
+            // 625:3: -> ^( VT_SLOT data_type slot_id )
             {
-                // src/main/resources/org/drools/lang/DRL.g:642:6: ^( VT_SLOT data_type slot_id )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:625: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:645: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:628: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;
@@ -3558,83 +3508,85 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:646:2: (id= ID -> VT_SLOT_ID[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:646:4: id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:629:2: (id= ID -> VT_SLOT_ID[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:629:4: id= ID
             {
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_slot_id1451); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_slot_id1394); 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();
-            // 648:3: -> VT_SLOT_ID[$id]
+            // 631: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:651: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:634: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");
@@ -3644,66 +3596,55 @@
         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); 
+         boolean isFailed = true; pushParaphrases(DroolsParaphraseTypes.RULE); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:654: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:655:2: rule_key rule_id ( extend_key rule_id )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:637: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:638:2: rule_key rule_id ( extend_key rule_id )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk
             {
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	beginSentence(DroolsSentenceType.RULE);	
             }
-            pushFollow(FOLLOW_rule_key_in_rule1488);
+            pushFollow(FOLLOW_rule_key_in_rule1431);
             rule_key68=rule_key();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_rule_key.add(rule_key68.getTree());
-            pushFollow(FOLLOW_rule_id_in_rule1490);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_rule_key.add(rule_key68.getTree());
+            pushFollow(FOLLOW_rule_id_in_rule1433);
             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:658:3: ( extend_key rule_id )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:641: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.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))||(validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))))) {
-                int LA28_1 = input.LA(2);
-
-                if ( (LA28_1==ID) && ((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))) {
-                    alt28=1;
-                }
-                else if ( (LA28_1==STRING) && (((validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(DroolsSoftKeywords.EXTEND))))) {
-                    int LA28_5 = input.LA(3);
-
-                    if ( ((validateIdentifierKey(DroolsSoftKeywords.EXTEND))) ) {
-                        alt28=1;
-                    }
-                }
-            }
+            alt28 = dfa28.predict(input);
             switch (alt28) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:658:4: extend_key rule_id
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:641:4: extend_key rule_id
                     {
-                    pushFollow(FOLLOW_extend_key_in_rule1499);
+                    pushFollow(FOLLOW_extend_key_in_rule1442);
                     extend_key70=extend_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_extend_key.add(extend_key70.getTree());
-                    pushFollow(FOLLOW_rule_id_in_rule1501);
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_extend_key.add(extend_key70.getTree());
+                    pushFollow(FOLLOW_rule_id_in_rule1444);
                     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:658:25: ( decl_metadata )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:641:25: ( decl_metadata )*
             loop29:
             do {
                 int alt29=2;
@@ -3716,14 +3657,15 @@
 
                 switch (alt29) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:658:25: decl_metadata
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:641:25: decl_metadata
             	    {
-            	    pushFollow(FOLLOW_decl_metadata_in_rule1505);
+            	    pushFollow(FOLLOW_decl_metadata_in_rule1448);
             	    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;
 
@@ -3732,29 +3674,30 @@
                 }
             } while (true);
 
-            // src/main/resources/org/drools/lang/DRL.g:658:40: ( rule_attributes )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:641: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:658:40: rule_attributes
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:641:40: rule_attributes
                     {
-                    pushFollow(FOLLOW_rule_attributes_in_rule1508);
+                    pushFollow(FOLLOW_rule_attributes_in_rule1451);
                     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:658:57: ( when_part )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:641:57: ( when_part )?
             int alt31=2;
             int LA31_0 = input.LA(1);
 
@@ -3763,124 +3706,171 @@
             }
             switch (alt31) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:658:57: when_part
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:641:57: when_part
                     {
-                    pushFollow(FOLLOW_when_part_in_rule1511);
+                    pushFollow(FOLLOW_when_part_in_rule1454);
                     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_rule1514);
+            pushFollow(FOLLOW_rhs_chunk_in_rule1457);
             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: extend_key, when_part, rule_id, rule_attributes, rule_id, decl_metadata, rule_key, rhs_chunk
+            // elements: rule_id, rule_id, rhs_chunk, rule_attributes, when_part, extend_key, rule_key, decl_metadata
             // 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();
-            // 659:3: -> ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk )
+            // 642: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:659:6: ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:642: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:659:25: ( ^( extend_key rule_id ) )?
-                if ( stream_extend_key.hasNext()||stream_rule_id.hasNext() ) {
-                    // src/main/resources/org/drools/lang/DRL.g:659:25: ^( extend_key rule_id )
+                adaptor.addChild(root_1, stream_rule_id.nextTree());
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:642:25: ( ^( extend_key rule_id ) )?
+                if ( stream_rule_id.hasNext()||stream_extend_key.hasNext() ) {
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:642: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_extend_key.reset();
                 stream_rule_id.reset();
-                // src/main/resources/org/drools/lang/DRL.g:659:48: ( decl_metadata )*
+                stream_extend_key.reset();
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:642: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:659:63: ( rule_attributes )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:642: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:659:80: ( when_part )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:642: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 ) {
-               paraphrases.pop(); 
+            if ( state.backtracking==0 ) {
+               paraphrases.pop(); 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 && 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();
+            		}
+            	}
+
         }
         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:662: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:687: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;
@@ -3889,17 +3879,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:663:2: ( WHEN ( COLON )? normal_lhs_block -> WHEN normal_lhs_block )
-            // src/main/resources/org/drools/lang/DRL.g:663:5: WHEN ( COLON )? normal_lhs_block
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:688:2: ( WHEN ( COLON )? normal_lhs_block -> WHEN normal_lhs_block )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:688:5: WHEN ( COLON )? normal_lhs_block
             {
-            WHEN76=(Token)input.LT(1);
-            match(input,WHEN,FOLLOW_WHEN_in_when_part1554); if (failed) return retval;
-            if ( backtracking==0 ) stream_WHEN.add(WHEN76);
+            WHEN76=(Token)match(input,WHEN,FOLLOW_WHEN_in_when_part1501); 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:664:3: ( COLON )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:689:3: ( COLON )?
             int alt32=2;
             int LA32_0 = input.LA(1);
 
@@ -3908,11 +3897,10 @@
             }
             switch (alt32) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:664:3: COLON
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:689:3: COLON
                     {
-                    COLON77=(Token)input.LT(1);
-                    match(input,COLON,FOLLOW_COLON_in_when_part1560); if (failed) return retval;
-                    if ( backtracking==0 ) stream_COLON.add(COLON77);
+                    COLON77=(Token)match(input,COLON,FOLLOW_COLON_in_when_part1507); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_COLON.add(COLON77);
 
 
                     }
@@ -3920,66 +3908,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_part1570);
+            pushFollow(FOLLOW_normal_lhs_block_in_when_part1517);
             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();
-            // 667:2: -> WHEN normal_lhs_block
+            // 692: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:670: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:695: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;
@@ -3991,7 +3983,7 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:671:2: (id= ID -> VT_RULE_ID[$id] | id= STRING -> VT_RULE_ID[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:696:2: (id= ID -> VT_RULE_ID[$id] | id= STRING -> VT_RULE_ID[$id] )
             int alt33=2;
             int LA33_0 = input.LA(1);
 
@@ -4002,118 +3994,119 @@
                 alt33=2;
             }
             else {
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("670: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:671:5: id= ID
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:696:5: id= ID
                     {
-                    id=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_rule_id1591); if (failed) return retval;
-                    if ( backtracking==0 ) stream_ID.add(id);
+                    id=(Token)match(input,ID,FOLLOW_ID_in_rule_id1538); 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();
-                    // 673:64: -> VT_RULE_ID[$id]
+                    // 698: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:674:5: id= STRING
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:699:5: id= STRING
                     {
-                    id=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_rule_id1607); if (failed) return retval;
-                    if ( backtracking==0 ) stream_STRING.add(id);
+                    id=(Token)match(input,STRING,FOLLOW_STRING_in_rule_id1554); 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();
-                    // 676:64: -> VT_RULE_ID[$id]
+                    // 701: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:679: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:704: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;
@@ -4123,34 +4116,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:680: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:680:4: ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:705:2: ( ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )* -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:705:4: ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )*
             {
-            // src/main/resources/org/drools/lang/DRL.g:680:4: ( attributes_key COLON )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:705:4: ( attributes_key COLON )?
             int alt34=2;
             int LA34_0 = input.LA(1);
 
-            if ( (LA34_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(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:680:6: attributes_key COLON
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:705:6: attributes_key COLON
                     {
-                    pushFollow(FOLLOW_attributes_key_in_rule_attributes1628);
+                    pushFollow(FOLLOW_attributes_key_in_rule_attributes1575);
                     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_attributes1630); 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_attributes1577); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_COLON.add(COLON80);
+
+                    if ( state.backtracking==0 ) {
                       	emit(COLON80, DroolsEditorType.SYMBOL);	
                     }
 
@@ -4159,30 +4152,28 @@
 
             }
 
-            pushFollow(FOLLOW_rule_attribute_in_rule_attributes1640);
+            pushFollow(FOLLOW_rule_attribute_in_rule_attributes1587);
             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:681: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:706: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.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.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:681:20: ( COMMA )? attr= rule_attribute
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:706:20: ( COMMA )? attr= rule_attribute
             	    {
-            	    // src/main/resources/org/drools/lang/DRL.g:681:20: ( COMMA )?
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:706:20: ( COMMA )?
             	    int alt35=2;
             	    int LA35_0 = input.LA(1);
 
@@ -4191,11 +4182,10 @@
             	    }
             	    switch (alt35) {
             	        case 1 :
-            	            // src/main/resources/org/drools/lang/DRL.g:681:20: COMMA
+            	            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:706:20: COMMA
             	            {
-            	            COMMA82=(Token)input.LT(1);
-            	            match(input,COMMA,FOLLOW_COMMA_in_rule_attributes1644); if (failed) return retval;
-            	            if ( backtracking==0 ) stream_COMMA.add(COMMA82);
+            	            COMMA82=(Token)match(input,COMMA,FOLLOW_COMMA_in_rule_attributes1591); if (state.failed) return retval; 
+            	            if ( state.backtracking==0 ) stream_COMMA.add(COMMA82);
 
 
             	            }
@@ -4203,15 +4193,16 @@
 
             	    }
 
-            	    if ( backtracking==0 ) {
+            	    if ( state.backtracking==0 ) {
             	      	emit(COMMA82, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes1651);
+            	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes1598);
             	    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;
 
@@ -4221,27 +4212,28 @@
             } while (true);
 
 
+
             // AST REWRITE
             // elements: rule_attribute, attributes_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();
-            // 682:3: -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ )
+            // 707:3: -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ )
             {
-                // src/main/resources/org/drools/lang/DRL.g:682:6: ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:707: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:682:27: ( attributes_key )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:707: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();
@@ -4249,7 +4241,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();
@@ -4259,332 +4251,315 @@
 
             }
 
+            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:685: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:710: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:688: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:713:2: ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect )
             int alt37=12;
             alt37 = dfa37.predict(input);
             switch (alt37) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:688:4: salience
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:713:4: salience
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_salience_in_rule_attribute1690);
+                    pushFollow(FOLLOW_salience_in_rule_attribute1637);
                     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:689:4: no_loop
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:714:4: no_loop
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_no_loop_in_rule_attribute1696);
+                    pushFollow(FOLLOW_no_loop_in_rule_attribute1643);
                     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:690:4: agenda_group
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:715:4: agenda_group
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_agenda_group_in_rule_attribute1701);
+                    pushFollow(FOLLOW_agenda_group_in_rule_attribute1648);
                     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:691:4: duration
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:716:4: duration
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_duration_in_rule_attribute1708);
+                    pushFollow(FOLLOW_duration_in_rule_attribute1655);
                     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:692:4: activation_group
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:717:4: activation_group
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_activation_group_in_rule_attribute1715);
+                    pushFollow(FOLLOW_activation_group_in_rule_attribute1662);
                     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:693:4: auto_focus
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:718:4: auto_focus
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_auto_focus_in_rule_attribute1721);
+                    pushFollow(FOLLOW_auto_focus_in_rule_attribute1668);
                     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:694:4: date_effective
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:719:4: date_effective
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_date_effective_in_rule_attribute1727);
+                    pushFollow(FOLLOW_date_effective_in_rule_attribute1674);
                     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:695:4: date_expires
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:720:4: date_expires
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_date_expires_in_rule_attribute1733);
+                    pushFollow(FOLLOW_date_expires_in_rule_attribute1680);
                     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:696:4: enabled
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:721:4: enabled
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_enabled_in_rule_attribute1739);
+                    pushFollow(FOLLOW_enabled_in_rule_attribute1686);
                     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:697:4: ruleflow_group
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:722:4: ruleflow_group
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_ruleflow_group_in_rule_attribute1745);
+                    pushFollow(FOLLOW_ruleflow_group_in_rule_attribute1692);
                     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:698:4: lock_on_active
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:723:4: lock_on_active
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_lock_on_active_in_rule_attribute1751);
+                    pushFollow(FOLLOW_lock_on_active_in_rule_attribute1698);
                     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:699:4: dialect
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:724:4: dialect
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_dialect_in_rule_attribute1756);
+                    pushFollow(FOLLOW_dialect_in_rule_attribute1703);
                     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 ) {
-               paraphrases.pop(); isFailed = false; emit(Location.LOCATION_RULE_HEADER); 
+            if ( state.backtracking==0 ) {
+               paraphrases.pop(); isFailed = false; if (!(retval.tree instanceof CommonErrorNode)) 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 && 
-            			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);
+            		if (input.LA(2) == EOF && input.LA(1) == ID){
+            			emit(input.LT(1), DroolsEditorType.IDENTIFIER);
             			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();
             		}
             	}
 
         }
         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:744: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:734:1: date_effective : date_effective_key STRING ;
+    public final DRLParser.date_effective_return date_effective() throws RecognitionException {
+        DRLParser.date_effective_return retval = new DRLParser.date_effective_return();
         retval.start = input.LT(1);
 
         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:745:2: ( date_effective_key STRING )
-            // src/main/resources/org/drools/lang/DRL.g:745:4: date_effective_key STRING
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:735:2: ( date_effective_key STRING )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:735:4: date_effective_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_date_effective_key_in_date_effective1772);
+            pushFollow(FOLLOW_date_effective_key_in_date_effective1718);
             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_effective1777); if (failed) return retval;
-            if ( backtracking==0 ) {
+            STRING96=(Token)match(input,STRING,FOLLOW_STRING_in_date_effective1723); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             STRING96_tree = (Object)adaptor.create(STRING96);
             adaptor.addChild(root_0, STRING96_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(STRING96, DroolsEditorType.STRING_CONST );	
             }
 
@@ -4592,61 +4567,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:749: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:739:1: date_expires : date_expires_key STRING ;
+    public final DRLParser.date_expires_return date_expires() throws RecognitionException {
+        DRLParser.date_expires_return retval = new DRLParser.date_expires_return();
         retval.start = input.LT(1);
 
         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:750:2: ( date_expires_key STRING )
-            // src/main/resources/org/drools/lang/DRL.g:750:4: date_expires_key STRING
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:740:2: ( date_expires_key STRING )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:740:4: date_expires_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_date_expires_key_in_date_expires1791);
+            pushFollow(FOLLOW_date_expires_key_in_date_expires1737);
             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_expires1796); if (failed) return retval;
-            if ( backtracking==0 ) {
+            STRING98=(Token)match(input,STRING,FOLLOW_STRING_in_date_expires1742); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             STRING98_tree = (Object)adaptor.create(STRING98);
             adaptor.addChild(root_0, STRING98_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(STRING98, DroolsEditorType.STRING_CONST );	
             }
 
@@ -4654,57 +4632,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:754: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:744:1: enabled : enabled_key ( BOOL | paren_chunk ) ;
+    public final DRLParser.enabled_return enabled() throws RecognitionException {
+        DRLParser.enabled_return retval = new DRLParser.enabled_return();
         retval.start = input.LT(1);
 
         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:755:2: ( enabled_key ( BOOL | paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:755:4: enabled_key ( BOOL | paren_chunk )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:745:2: ( enabled_key ( BOOL | paren_chunk ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:745:4: enabled_key ( BOOL | paren_chunk )
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_enabled_key_in_enabled1811);
+            pushFollow(FOLLOW_enabled_key_in_enabled1757);
             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:756:6: ( BOOL | paren_chunk )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:746:6: ( BOOL | paren_chunk )
             int alt38=2;
             int LA38_0 = input.LA(1);
 
@@ -4715,37 +4697,37 @@
                 alt38=2;
             }
             else {
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("756: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:756:8: BOOL
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:746:8: BOOL
                     {
-                    BOOL100=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_enabled1824); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    BOOL100=(Token)match(input,BOOL,FOLLOW_BOOL_in_enabled1770); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     BOOL100_tree = (Object)adaptor.create(BOOL100);
                     adaptor.addChild(root_0, BOOL100_tree);
                     }
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(BOOL100, DroolsEditorType.BOOLEAN_CONST );	
                     }
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:757:8: paren_chunk
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:747:8: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_enabled1835);
+                    pushFollow(FOLLOW_paren_chunk_in_enabled1781);
                     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;
 
@@ -4756,57 +4738,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:761: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:751:1: salience : salience_key ( INT | paren_chunk ) ;
+    public final DRLParser.salience_return salience() throws RecognitionException {
+        DRLParser.salience_return retval = new DRLParser.salience_return();
         retval.start = input.LT(1);
 
         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:762:2: ( salience_key ( INT | paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:762:4: salience_key ( INT | paren_chunk )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:752:2: ( salience_key ( INT | paren_chunk ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:752:4: salience_key ( INT | paren_chunk )
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_salience_key_in_salience1855);
+            pushFollow(FOLLOW_salience_key_in_salience1801);
             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:763:3: ( INT | paren_chunk )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:753:3: ( INT | paren_chunk )
             int alt39=2;
             int LA39_0 = input.LA(1);
 
@@ -4817,37 +4803,37 @@
                 alt39=2;
             }
             else {
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("763: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:763:5: INT
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:753:5: INT
                     {
-                    INT103=(Token)input.LT(1);
-                    match(input,INT,FOLLOW_INT_in_salience1864); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    INT103=(Token)match(input,INT,FOLLOW_INT_in_salience1810); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     INT103_tree = (Object)adaptor.create(INT103);
                     adaptor.addChild(root_0, INT103_tree);
                     }
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(INT103, DroolsEditorType.NUMERIC_CONST );	
                     }
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:764:5: paren_chunk
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:754:5: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_salience1873);
+                    pushFollow(FOLLOW_paren_chunk_in_salience1819);
                     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;
 
@@ -4858,55 +4844,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:768: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:758:1: no_loop : no_loop_key ( BOOL )? ;
+    public final DRLParser.no_loop_return no_loop() throws RecognitionException {
+        DRLParser.no_loop_return retval = new DRLParser.no_loop_return();
         retval.start = input.LT(1);
 
         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:769:2: ( no_loop_key ( BOOL )? )
-            // src/main/resources/org/drools/lang/DRL.g:769:4: no_loop_key ( BOOL )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:759:2: ( no_loop_key ( BOOL )? )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:759:4: no_loop_key ( BOOL )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_no_loop_key_in_no_loop1888);
+            pushFollow(FOLLOW_no_loop_key_in_no_loop1834);
             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:769:66: ( BOOL )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:759:66: ( BOOL )?
             int alt40=2;
             int LA40_0 = input.LA(1);
 
@@ -4915,11 +4905,10 @@
             }
             switch (alt40) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:769:66: BOOL
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:759:66: BOOL
                     {
-                    BOOL106=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_no_loop1893); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    BOOL106=(Token)match(input,BOOL,FOLLOW_BOOL_in_no_loop1839); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     BOOL106_tree = (Object)adaptor.create(BOOL106);
                     adaptor.addChild(root_0, BOOL106_tree);
                     }
@@ -4929,7 +4918,7 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(BOOL106, DroolsEditorType.BOOLEAN_CONST );	
             }
 
@@ -4937,55 +4926,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:773: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:763:1: auto_focus : auto_focus_key ( BOOL )? ;
+    public final DRLParser.auto_focus_return auto_focus() throws RecognitionException {
+        DRLParser.auto_focus_return retval = new DRLParser.auto_focus_return();
         retval.start = input.LT(1);
 
         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:774:2: ( auto_focus_key ( BOOL )? )
-            // src/main/resources/org/drools/lang/DRL.g:774:4: auto_focus_key ( BOOL )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:764:2: ( auto_focus_key ( BOOL )? )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:764:4: auto_focus_key ( BOOL )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_auto_focus_key_in_auto_focus1908);
+            pushFollow(FOLLOW_auto_focus_key_in_auto_focus1854);
             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:774:69: ( BOOL )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:764:69: ( BOOL )?
             int alt41=2;
             int LA41_0 = input.LA(1);
 
@@ -4994,11 +4987,10 @@
             }
             switch (alt41) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:774:69: BOOL
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:764:69: BOOL
                     {
-                    BOOL108=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_auto_focus1913); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    BOOL108=(Token)match(input,BOOL,FOLLOW_BOOL_in_auto_focus1859); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     BOOL108_tree = (Object)adaptor.create(BOOL108);
                     adaptor.addChild(root_0, BOOL108_tree);
                     }
@@ -5008,7 +5000,7 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(BOOL108, DroolsEditorType.BOOLEAN_CONST );	
             }
 
@@ -5016,61 +5008,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:778: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:768:1: activation_group : activation_group_key STRING ;
+    public final DRLParser.activation_group_return activation_group() throws RecognitionException {
+        DRLParser.activation_group_return retval = new DRLParser.activation_group_return();
         retval.start = input.LT(1);
 
         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:779:2: ( activation_group_key STRING )
-            // src/main/resources/org/drools/lang/DRL.g:779:4: activation_group_key STRING
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:769:2: ( activation_group_key STRING )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:769:4: activation_group_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_activation_group_key_in_activation_group1930);
+            pushFollow(FOLLOW_activation_group_key_in_activation_group1876);
             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_group1935); if (failed) return retval;
-            if ( backtracking==0 ) {
+            STRING110=(Token)match(input,STRING,FOLLOW_STRING_in_activation_group1881); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             STRING110_tree = (Object)adaptor.create(STRING110);
             adaptor.addChild(root_0, STRING110_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(STRING110, DroolsEditorType.STRING_CONST );	
             }
 
@@ -5078,61 +5073,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:783: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:773:1: ruleflow_group : ruleflow_group_key STRING ;
+    public final DRLParser.ruleflow_group_return ruleflow_group() throws RecognitionException {
+        DRLParser.ruleflow_group_return retval = new DRLParser.ruleflow_group_return();
         retval.start = input.LT(1);
 
         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:784:2: ( ruleflow_group_key STRING )
-            // src/main/resources/org/drools/lang/DRL.g:784:4: ruleflow_group_key STRING
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:774:2: ( ruleflow_group_key STRING )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:774:4: ruleflow_group_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_ruleflow_group_key_in_ruleflow_group1949);
+            pushFollow(FOLLOW_ruleflow_group_key_in_ruleflow_group1895);
             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_group1954); if (failed) return retval;
-            if ( backtracking==0 ) {
+            STRING112=(Token)match(input,STRING,FOLLOW_STRING_in_ruleflow_group1900); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             STRING112_tree = (Object)adaptor.create(STRING112);
             adaptor.addChild(root_0, STRING112_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(STRING112, DroolsEditorType.STRING_CONST );	
             }
 
@@ -5140,61 +5138,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:788: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:778:1: agenda_group : agenda_group_key STRING ;
+    public final DRLParser.agenda_group_return agenda_group() throws RecognitionException {
+        DRLParser.agenda_group_return retval = new DRLParser.agenda_group_return();
         retval.start = input.LT(1);
 
         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:789:2: ( agenda_group_key STRING )
-            // src/main/resources/org/drools/lang/DRL.g:789:4: agenda_group_key STRING
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:779:2: ( agenda_group_key STRING )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:779:4: agenda_group_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_agenda_group_key_in_agenda_group1968);
+            pushFollow(FOLLOW_agenda_group_key_in_agenda_group1914);
             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_group1973); if (failed) return retval;
-            if ( backtracking==0 ) {
+            STRING114=(Token)match(input,STRING,FOLLOW_STRING_in_agenda_group1919); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             STRING114_tree = (Object)adaptor.create(STRING114);
             adaptor.addChild(root_0, STRING114_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(STRING114, DroolsEditorType.STRING_CONST );	
             }
 
@@ -5202,61 +5203,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:793: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:783:1: duration : duration_key INT ;
+    public final DRLParser.duration_return duration() throws RecognitionException {
+        DRLParser.duration_return retval = new DRLParser.duration_return();
         retval.start = input.LT(1);
 
         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:794:2: ( duration_key INT )
-            // src/main/resources/org/drools/lang/DRL.g:794:4: duration_key INT
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:784:2: ( duration_key INT )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:784:4: duration_key INT
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_duration_key_in_duration1987);
+            pushFollow(FOLLOW_duration_key_in_duration1933);
             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_duration1992); if (failed) return retval;
-            if ( backtracking==0 ) {
+            INT116=(Token)match(input,INT,FOLLOW_INT_in_duration1938); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             INT116_tree = (Object)adaptor.create(INT116);
             adaptor.addChild(root_0, INT116_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(INT116, DroolsEditorType.NUMERIC_CONST );	
             }
 
@@ -5264,61 +5268,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:798: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:788:1: dialect : dialect_key STRING ;
+    public final DRLParser.dialect_return dialect() throws RecognitionException {
+        DRLParser.dialect_return retval = new DRLParser.dialect_return();
         retval.start = input.LT(1);
 
         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:799:2: ( dialect_key STRING )
-            // src/main/resources/org/drools/lang/DRL.g:799:4: dialect_key STRING
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:789:2: ( dialect_key STRING )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:789:4: dialect_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_dialect_key_in_dialect2008);
+            pushFollow(FOLLOW_dialect_key_in_dialect1954);
             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_dialect2013); if (failed) return retval;
-            if ( backtracking==0 ) {
+            STRING118=(Token)match(input,STRING,FOLLOW_STRING_in_dialect1959); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             STRING118_tree = (Object)adaptor.create(STRING118);
             adaptor.addChild(root_0, STRING118_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(STRING118, DroolsEditorType.STRING_CONST );	
             }
 
@@ -5326,55 +5333,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:803: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:793:1: lock_on_active : lock_on_active_key ( BOOL )? ;
+    public final DRLParser.lock_on_active_return lock_on_active() throws RecognitionException {
+        DRLParser.lock_on_active_return retval = new DRLParser.lock_on_active_return();
         retval.start = input.LT(1);
 
         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:804:2: ( lock_on_active_key ( BOOL )? )
-            // src/main/resources/org/drools/lang/DRL.g:804:4: lock_on_active_key ( BOOL )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:794:2: ( lock_on_active_key ( BOOL )? )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:794:4: lock_on_active_key ( BOOL )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_lock_on_active_key_in_lock_on_active2031);
+            pushFollow(FOLLOW_lock_on_active_key_in_lock_on_active1977);
             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:804:73: ( BOOL )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:794:73: ( BOOL )?
             int alt42=2;
             int LA42_0 = input.LA(1);
 
@@ -5383,11 +5394,10 @@
             }
             switch (alt42) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:804:73: BOOL
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:794:73: BOOL
                     {
-                    BOOL120=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_lock_on_active2036); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    BOOL120=(Token)match(input,BOOL,FOLLOW_BOOL_in_lock_on_active1982); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     BOOL120_tree = (Object)adaptor.create(BOOL120);
                     adaptor.addChild(root_0, BOOL120_tree);
                     }
@@ -5397,7 +5407,7 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(BOOL120, DroolsEditorType.BOOLEAN_CONST );	
             }
 
@@ -5405,43 +5415,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:808: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:798:1: normal_lhs_block : ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) ;
+    public final DRLParser.normal_lhs_block_return normal_lhs_block() throws RecognitionException {
+        DRLParser.normal_lhs_block_return retval = new DRLParser.normal_lhs_block_return();
         retval.start = input.LT(1);
 
         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:809:2: ( ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) )
-            // src/main/resources/org/drools/lang/DRL.g:809:4: ( lhs )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:799:2: ( ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:799:4: ( lhs )*
             {
-            // src/main/resources/org/drools/lang/DRL.g:809:4: ( lhs )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:799:4: ( lhs )*
             loop43:
             do {
                 int alt43=2;
@@ -5454,14 +5467,15 @@
 
                 switch (alt43) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:809:4: lhs
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:799:4: lhs
             	    {
-            	    pushFollow(FOLLOW_lhs_in_normal_lhs_block2051);
+            	    pushFollow(FOLLOW_lhs_in_normal_lhs_block1997);
             	    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;
 
@@ -5471,27 +5485,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();
-            // 810:2: -> ^( VT_AND_IMPLICIT ( lhs )* )
+            // 800:2: -> ^( VT_AND_IMPLICIT ( lhs )* )
             {
-                // src/main/resources/org/drools/lang/DRL.g:810:5: ^( VT_AND_IMPLICIT ( lhs )* )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:800:5: ^( VT_AND_IMPLICIT ( lhs )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(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:810:23: ( lhs )*
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:800:23: ( lhs )*
                 while ( stream_lhs.hasNext() ) {
-                    adaptor.addChild(root_1, stream_lhs.next());
+                    adaptor.addChild(root_1, stream_lhs.nextTree());
 
                 }
                 stream_lhs.reset();
@@ -5501,84 +5516,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:813: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:803:1: lhs : lhs_or ;
+    public final DRLParser.lhs_return lhs() throws RecognitionException {
+        DRLParser.lhs_return retval = new DRLParser.lhs_return();
         retval.start = input.LT(1);
 
         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:813:5: ( lhs_or )
-            // src/main/resources/org/drools/lang/DRL.g:813:7: lhs_or
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:803:5: ( lhs_or )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:803:7: lhs_or
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_lhs_or_in_lhs2072);
+            pushFollow(FOLLOW_lhs_or_in_lhs2018);
             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:816: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:806:1: lhs_or : ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* );
+    public final DRLParser.lhs_or_return lhs_or() throws RecognitionException {
+        DRLParser.lhs_or_return retval = new DRLParser.lhs_or_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -5586,15 +5607,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;
@@ -5605,80 +5626,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:819:3: ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:809:3: ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* )
             int alt47=2;
             int LA47_0 = input.LA(1);
 
             if ( (LA47_0==LEFT_PAREN) ) {
                 int LA47_1 = input.LA(2);
 
-                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("816: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("816: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("816: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;
-                    }
-
+                if ( (synpred1_DRL()) ) {
+                    alt47=1;
                 }
-                else if ( (LA47_1==LEFT_PAREN) ) {
+                else if ( (true) ) {
                     alt47=2;
                 }
                 else {
-                    if (backtracking>0) {failed=true; return retval;}
+                    if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("816: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;
                 }
@@ -5687,32 +5655,32 @@
                 alt47=2;
             }
             else {
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("816: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:819:5: ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:809:5: ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN
                     {
-                    LEFT_PAREN123=(Token)input.LT(1);
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2096); 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_or2042); 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_or2106);
+                    pushFollow(FOLLOW_or_key_in_lhs_or2052);
                     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:823:4: ( lhs_and )+
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:813:4: ( lhs_and )+
                     int cnt44=0;
                     loop44:
                     do {
@@ -5726,20 +5694,21 @@
 
                         switch (alt44) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:823:4: lhs_and
+                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:813:4: lhs_and
                     	    {
-                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2114);
+                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2060);
                     	    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;
@@ -5747,85 +5716,85 @@
                         cnt44++;
                     } while (true);
 
-                    RIGHT_PAREN125=(Token)input.LT(1);
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2120); 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_or2066); 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: RIGHT_PAREN, lhs_and
+                    // elements: lhs_and, 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();
-                    // 825:3: -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN )
+                    // 815:3: -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN )
                     {
-                        // src/main/resources/org/drools/lang/DRL.g:825:6: ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN )
+                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:815:6: ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN )
                         {
                         Object root_1 = (Object)adaptor.nil();
-                        root_1 = (Object)adaptor.becomeRoot(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:826:4: ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )*
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:816:4: ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )*
                     {
-                    // src/main/resources/org/drools/lang/DRL.g:826:4: ( lhs_and -> lhs_and )
-                    // src/main/resources/org/drools/lang/DRL.g:826:5: lhs_and
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:816:4: ( lhs_and -> lhs_and )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:816:5: lhs_and
                     {
-                    pushFollow(FOLLOW_lhs_and_in_lhs_or2143);
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or2089);
                     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();
-                    // 826:13: -> lhs_and
+                    // 816: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:827:3: ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )*
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:817:3: ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )*
                     loop46:
                     do {
                         int alt46=2;
@@ -5834,7 +5803,7 @@
                         if ( (LA46_0==ID) ) {
                             int LA46_2 = input.LA(2);
 
-                            if ( ((synpred2()&&(validateIdentifierKey(DroolsSoftKeywords.OR)))) ) {
+                            if ( ((synpred2_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.OR))))) ) {
                                 alt46=1;
                             }
 
@@ -5843,7 +5812,7 @@
                         else if ( (LA46_0==DOUBLE_PIPE) ) {
                             int LA46_3 = input.LA(2);
 
-                            if ( (synpred2()) ) {
+                            if ( (synpred2_DRL()) ) {
                                 alt46=1;
                             }
 
@@ -5853,48 +5822,48 @@
 
                         switch (alt46) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:827:5: ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and
+                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:817:5: ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and
                     	    {
-                    	    // src/main/resources/org/drools/lang/DRL.g:827:28: (value= or_key | pipe= DOUBLE_PIPE )
+                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:817:28: (value= or_key | pipe= DOUBLE_PIPE )
                     	    int alt45=2;
                     	    int LA45_0 = input.LA(1);
 
-                    	    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("827: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:827:29: value= or_key
+                    	            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:817:29: value= or_key
                     	            {
-                    	            pushFollow(FOLLOW_or_key_in_lhs_or2165);
+                    	            pushFollow(FOLLOW_or_key_in_lhs_or2111);
                     	            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:827:69: pipe= DOUBLE_PIPE
+                    	            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:817:69: pipe= DOUBLE_PIPE
                     	            {
-                    	            pipe=(Token)input.LT(1);
-                    	            match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_lhs_or2172); if (failed) return retval;
-                    	            if ( backtracking==0 ) stream_DOUBLE_PIPE.add(pipe);
+                    	            pipe=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_lhs_or2118); if (state.failed) return retval; 
+                    	            if ( state.backtracking==0 ) stream_DOUBLE_PIPE.add(pipe);
 
-                    	            if ( backtracking==0 ) {
+                    	            if ( state.backtracking==0 ) {
                     	              orToken = pipe; emit(pipe, DroolsEditorType.SYMBOL);
                     	            }
 
@@ -5903,44 +5872,45 @@
 
                     	    }
 
-                    	    if ( backtracking==0 ) {
+                    	    if ( state.backtracking==0 ) {
                     	      	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     	    }
-                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2183);
+                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2129);
                     	    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_and, lhs_or
+                    	    // elements: lhs_or, 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();
-                    	    // 830:3: -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and )
+                    	    // 820:3: -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and )
                     	    {
-                    	        // src/main/resources/org/drools/lang/DRL.g:830:6: ^( VT_OR_INFIX[orToken] $lhs_or lhs_and )
+                    	        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:820:6: ^( VT_OR_INFIX[orToken] $lhs_or lhs_and )
                     	        {
                     	        Object root_1 = (Object)adaptor.nil();
-                    	        root_1 = (Object)adaptor.becomeRoot(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 :
@@ -5955,30 +5925,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:833: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:823:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );
+    public final DRLParser.lhs_and_return lhs_and() throws RecognitionException {
+        DRLParser.lhs_and_return retval = new DRLParser.lhs_and_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -5986,15 +5959,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;
@@ -6005,241 +5978,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:836:3: ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:826:3: ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* )
             int alt51=2;
             int LA51_0 = input.LA(1);
 
             if ( (LA51_0==LEFT_PAREN) ) {
                 int LA51_1 = input.LA(2);
 
-                if ( (LA51_1==LEFT_PAREN) ) {
+                if ( (synpred3_DRL()) ) {
+                    alt51=1;
+                }
+                else if ( (true) ) {
                     alt51=2;
                 }
-                else 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 ID:
-                            {
-                            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("833: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 LEFT_PAREN:
-                            {
-                            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("833: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 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 TILDE:
-                        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 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("833: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("833: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("833: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;
-                    }
-
-                }
                 else {
-                    if (backtracking>0) {failed=true; return retval;}
+                    if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("833: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;
                 }
@@ -6248,32 +6007,32 @@
                 alt51=2;
             }
             else {
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("833: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:836:5: ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:826:5: ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN
                     {
-                    LEFT_PAREN128=(Token)input.LT(1);
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_and2224); 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_and2170); 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_and2234);
+                    pushFollow(FOLLOW_and_key_in_lhs_and2180);
                     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:840:4: ( lhs_unary )+
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:830:4: ( lhs_unary )+
                     int cnt48=0;
                     loop48:
                     do {
@@ -6287,20 +6046,21 @@
 
                         switch (alt48) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:840:4: lhs_unary
+                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:830:4: lhs_unary
                     	    {
-                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2242);
+                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2188);
                     	    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;
@@ -6308,85 +6068,85 @@
                         cnt48++;
                     } while (true);
 
-                    RIGHT_PAREN130=(Token)input.LT(1);
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_and2248); 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_and2194); 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: 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();
-                    // 842:3: -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN )
+                    // 832:3: -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN )
                     {
-                        // src/main/resources/org/drools/lang/DRL.g:842:6: ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN )
+                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:832:6: ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN )
                         {
                         Object root_1 = (Object)adaptor.nil();
-                        root_1 = (Object)adaptor.becomeRoot(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:843:4: ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )*
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:833:4: ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )*
                     {
-                    // src/main/resources/org/drools/lang/DRL.g:843:4: ( lhs_unary -> lhs_unary )
-                    // src/main/resources/org/drools/lang/DRL.g:843:5: lhs_unary
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:833:4: ( lhs_unary -> lhs_unary )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:833:5: lhs_unary
                     {
-                    pushFollow(FOLLOW_lhs_unary_in_lhs_and2272);
+                    pushFollow(FOLLOW_lhs_unary_in_lhs_and2218);
                     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();
-                    // 843:15: -> lhs_unary
+                    // 833: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:844:3: ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )*
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:834:3: ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )*
                     loop50:
                     do {
                         int alt50=2;
@@ -6395,7 +6155,7 @@
                         if ( (LA50_0==ID) ) {
                             int LA50_2 = input.LA(2);
 
-                            if ( ((synpred4()&&(validateIdentifierKey(DroolsSoftKeywords.AND)))) ) {
+                            if ( ((synpred4_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.AND))))) ) {
                                 alt50=1;
                             }
 
@@ -6404,7 +6164,7 @@
                         else if ( (LA50_0==DOUBLE_AMPER) ) {
                             int LA50_3 = input.LA(2);
 
-                            if ( (synpred4()) ) {
+                            if ( (synpred4_DRL()) ) {
                                 alt50=1;
                             }
 
@@ -6414,48 +6174,48 @@
 
                         switch (alt50) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:844:5: ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary
+                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:834:5: ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary
                     	    {
-                    	    // src/main/resources/org/drools/lang/DRL.g:844:30: (value= and_key | amper= DOUBLE_AMPER )
+                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:834:30: (value= and_key | amper= DOUBLE_AMPER )
                     	    int alt49=2;
                     	    int LA49_0 = input.LA(1);
 
-                    	    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("844: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:844:31: value= and_key
+                    	            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:834:31: value= and_key
                     	            {
-                    	            pushFollow(FOLLOW_and_key_in_lhs_and2294);
+                    	            pushFollow(FOLLOW_and_key_in_lhs_and2240);
                     	            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:844:73: amper= DOUBLE_AMPER
+                    	            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:834:73: amper= DOUBLE_AMPER
                     	            {
-                    	            amper=(Token)input.LT(1);
-                    	            match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_lhs_and2301); if (failed) return retval;
-                    	            if ( backtracking==0 ) stream_DOUBLE_AMPER.add(amper);
+                    	            amper=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_lhs_and2247); if (state.failed) return retval; 
+                    	            if ( state.backtracking==0 ) stream_DOUBLE_AMPER.add(amper);
 
-                    	            if ( backtracking==0 ) {
+                    	            if ( state.backtracking==0 ) {
                     	              andToken = amper; emit(amper, DroolsEditorType.SYMBOL);
                     	            }
 
@@ -6464,44 +6224,45 @@
 
                     	    }
 
-                    	    if ( backtracking==0 ) {
+                    	    if ( state.backtracking==0 ) {
                     	      	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     	    }
-                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2312);
+                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2258);
                     	    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_and, lhs_unary
+                    	    // elements: lhs_unary, 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();
-                    	    // 847:3: -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary )
+                    	    // 837:3: -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary )
                     	    {
-                    	        // src/main/resources/org/drools/lang/DRL.g:847:6: ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary )
+                    	        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:837:6: ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary )
                     	        {
                     	        Object root_1 = (Object)adaptor.nil();
-                    	        root_1 = (Object)adaptor.becomeRoot(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 :
@@ -6516,30 +6277,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:850: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:840:1: lhs_unary : ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )? ;
+    public final DRLParser.lhs_unary_return lhs_unary() throws RecognitionException {
+        DRLParser.lhs_unary_return retval = new DRLParser.lhs_unary_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -6547,19 +6311,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;
@@ -6567,40 +6331,40 @@
         Object SEMICOLON142_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:851: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:851:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:841:2: ( ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )? )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:841:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )?
             {
             root_0 = (Object)adaptor.nil();
 
-            // src/main/resources/org/drools/lang/DRL.g:851:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:841:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )
             int alt52=7;
             int LA52_0 = input.LA(1);
 
             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("851: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;
                 }
@@ -6609,129 +6373,133 @@
                 alt52=6;
             }
             else {
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("851: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:851:6: lhs_exist
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:841:6: lhs_exist
                     {
-                    pushFollow(FOLLOW_lhs_exist_in_lhs_unary2343);
+                    pushFollow(FOLLOW_lhs_exist_in_lhs_unary2289);
                     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:852:4: {...}? => lhs_not_binding
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:842:4: {...}? => lhs_not_binding
                     {
-                    if ( !(validateNotWithBinding()) ) {
-                        if (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_unary2351);
+                    pushFollow(FOLLOW_lhs_not_binding_in_lhs_unary2297);
                     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:853:5: lhs_not
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:843:5: lhs_not
                     {
-                    pushFollow(FOLLOW_lhs_not_in_lhs_unary2357);
+                    pushFollow(FOLLOW_lhs_not_in_lhs_unary2303);
                     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:854:5: lhs_eval
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:844:5: lhs_eval
                     {
-                    pushFollow(FOLLOW_lhs_eval_in_lhs_unary2363);
+                    pushFollow(FOLLOW_lhs_eval_in_lhs_unary2309);
                     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:855:5: lhs_forall
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:845:5: lhs_forall
                     {
-                    pushFollow(FOLLOW_lhs_forall_in_lhs_unary2369);
+                    pushFollow(FOLLOW_lhs_forall_in_lhs_unary2315);
                     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:856:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:846:5: LEFT_PAREN lhs_or RIGHT_PAREN
                     {
-                    LEFT_PAREN138=(Token)input.LT(1);
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_unary2375); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    LEFT_PAREN138=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_unary2321); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN138, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_unary2386);
+                    pushFollow(FOLLOW_lhs_or_in_lhs_unary2332);
                     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_unary2392); 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_unary2338); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     RIGHT_PAREN140_tree = (Object)adaptor.create(RIGHT_PAREN140);
                     adaptor.addChild(root_0, RIGHT_PAREN140_tree);
                     }
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(RIGHT_PAREN140, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 7 :
-                    // src/main/resources/org/drools/lang/DRL.g:859:5: pattern_source
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:849:5: pattern_source
                     {
-                    pushFollow(FOLLOW_pattern_source_in_lhs_unary2400);
+                    pushFollow(FOLLOW_pattern_source_in_lhs_unary2346);
                     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:861:3: ( ( SEMICOLON )=> SEMICOLON )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:851:3: ( ( SEMICOLON )=> SEMICOLON )?
             int alt53=2;
             int LA53_0 = input.LA(1);
 
             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:861:4: ( SEMICOLON )=> SEMICOLON
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:851:4: ( SEMICOLON )=> SEMICOLON
                     {
-                    SEMICOLON142=(Token)input.LT(1);
-                    match(input,SEMICOLON,FOLLOW_SEMICOLON_in_lhs_unary2414); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    SEMICOLON142=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_lhs_unary2360); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                       	emit(SEMICOLON142, DroolsEditorType.SYMBOL);	
                     }
 
@@ -6745,43 +6513,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:864: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:854:1: lhs_exist : exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) ;
+    public final DRLParser.lhs_exist_return lhs_exist() throws RecognitionException {
+        DRLParser.lhs_exist_return retval = new DRLParser.lhs_exist_return();
         retval.start = input.LT(1);
 
         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;
@@ -6792,105 +6563,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:865: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:865:4: exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:855:2: ( exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:855:4: exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
             {
-            pushFollow(FOLLOW_exists_key_in_lhs_exist2430);
+            pushFollow(FOLLOW_exists_key_in_lhs_exist2376);
             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:867:10: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:857:10: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
             int alt54=3;
-            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.EVAL))))||(synpred6_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EXISTS))))||synpred6_DRL()||(synpred6_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.FORALL))))||(synpred6_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.NOT))))||((synpred6_DRL()&&(validateNotWithBinding()))&&((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) ) {
+                    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:867:12: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:857:12: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
                     {
-                    pushFollow(FOLLOW_lhs_or_in_lhs_exist2457);
+                    pushFollow(FOLLOW_lhs_or_in_lhs_exist2403);
                     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:868:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:858:5: LEFT_PAREN lhs_or RIGHT_PAREN
                     {
-                    LEFT_PAREN145=(Token)input.LT(1);
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_exist2464); 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_exist2410); 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_exist2472);
+                    pushFollow(FOLLOW_lhs_or_in_lhs_exist2418);
                     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_exist2479); 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_exist2425); 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:871:12: lhs_pattern
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:861:12: lhs_pattern
                     {
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs_exist2494);
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs_exist2440);
                     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: exists_key, RIGHT_PAREN, lhs_pattern, lhs_or
+            // elements: exists_key, lhs_pattern, RIGHT_PAREN, 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();
-            // 873:10: -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+            // 863:10: -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
             {
-                // src/main/resources/org/drools/lang/DRL.g:873:13: ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:863:13: ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_exists_key.nextNode(), root_1);
 
-                // src/main/resources/org/drools/lang/DRL.g:873:26: ( lhs_or )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:863:26: ( lhs_or )?
                 if ( stream_lhs_or.hasNext() ) {
-                    adaptor.addChild(root_1, stream_lhs_or.next());
+                    adaptor.addChild(root_1, stream_lhs_or.nextTree());
 
                 }
                 stream_lhs_or.reset();
-                // src/main/resources/org/drools/lang/DRL.g:873:34: ( lhs_pattern )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:863:34: ( lhs_pattern )?
                 if ( stream_lhs_pattern.hasNext() ) {
-                    adaptor.addChild(root_1, stream_lhs_pattern.next());
+                    adaptor.addChild(root_1, stream_lhs_pattern.nextTree());
 
                 }
                 stream_lhs_pattern.reset();
-                // src/main/resources/org/drools/lang/DRL.g:873:47: ( RIGHT_PAREN )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:863:47: ( RIGHT_PAREN )?
                 if ( stream_RIGHT_PAREN.hasNext() ) {
-                    adaptor.addChild(root_1, stream_RIGHT_PAREN.next());
+                    adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
                 }
                 stream_RIGHT_PAREN.reset();
@@ -6900,86 +6716,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:876: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:866:1: lhs_not_binding : not_key fact_binding -> ^( not_key ^( VT_PATTERN fact_binding ) ) ;
+    public final DRLParser.lhs_not_binding_return lhs_not_binding() throws RecognitionException {
+        DRLParser.lhs_not_binding_return retval = new DRLParser.lhs_not_binding_return();
         retval.start = input.LT(1);
 
         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:877:2: ( not_key fact_binding -> ^( not_key ^( VT_PATTERN fact_binding ) ) )
-            // src/main/resources/org/drools/lang/DRL.g:877:4: not_key fact_binding
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:867:2: ( not_key fact_binding -> ^( not_key ^( VT_PATTERN fact_binding ) ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:867:4: not_key fact_binding
             {
-            pushFollow(FOLLOW_not_key_in_lhs_not_binding2540);
+            pushFollow(FOLLOW_not_key_in_lhs_not_binding2486);
             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_binding2542);
+
+            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_binding2488);
             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();
-            // 878:2: -> ^( not_key ^( VT_PATTERN fact_binding ) )
+            // 868:2: -> ^( not_key ^( VT_PATTERN fact_binding ) )
             {
-                // src/main/resources/org/drools/lang/DRL.g:878:5: ^( not_key ^( VT_PATTERN fact_binding ) )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:868:5: ^( not_key ^( VT_PATTERN fact_binding ) )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_not_key.nextNode(), root_1);
 
-                // src/main/resources/org/drools/lang/DRL.g:878:15: ^( VT_PATTERN fact_binding )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:868:15: ^( VT_PATTERN fact_binding )
                 {
                 Object root_2 = (Object)adaptor.nil();
-                root_2 = (Object)adaptor.becomeRoot(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);
                 }
@@ -6989,49 +6810,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:881: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:871:1: lhs_not : not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) ;
+    public final DRLParser.lhs_not_return lhs_not() throws RecognitionException {
+        DRLParser.lhs_not_return retval = new DRLParser.lhs_not_return();
         retval.start = input.LT(1);
 
         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;
@@ -7042,108 +6865,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:881: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:881:11: not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:871:9: ( not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:871:11: not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
             {
-            pushFollow(FOLLOW_not_key_in_lhs_not2565);
+            pushFollow(FOLLOW_not_key_in_lhs_not2511);
             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:883:3: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:873:3: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
             int alt55=3;
-            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:883:5: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:873:5: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
                     {
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_not2587);
+                    pushFollow(FOLLOW_lhs_or_in_lhs_not2533);
                     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:884:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:874:5: LEFT_PAREN lhs_or RIGHT_PAREN
                     {
-                    LEFT_PAREN153=(Token)input.LT(1);
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_not2594); 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_not2540); 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_not2603);
+                    pushFollow(FOLLOW_lhs_or_in_lhs_not2549);
                     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_not2609); 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_not2555); 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:887:6: lhs_pattern
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:877:6: lhs_pattern
                     {
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs_not2619);
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs_not2565);
                     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_or, lhs_pattern
+            // elements: not_key, RIGHT_PAREN, lhs_pattern, 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();
-            // 888:10: -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+            // 878:10: -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
             {
-                // src/main/resources/org/drools/lang/DRL.g:888:13: ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:878:13: ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_not_key.nextNode(), root_1);
 
-                // src/main/resources/org/drools/lang/DRL.g:888:23: ( lhs_or )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:878:23: ( lhs_or )?
                 if ( stream_lhs_or.hasNext() ) {
-                    adaptor.addChild(root_1, stream_lhs_or.next());
+                    adaptor.addChild(root_1, stream_lhs_or.nextTree());
 
                 }
                 stream_lhs_or.reset();
-                // src/main/resources/org/drools/lang/DRL.g:888:31: ( lhs_pattern )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:878:31: ( lhs_pattern )?
                 if ( stream_lhs_pattern.hasNext() ) {
-                    adaptor.addChild(root_1, stream_lhs_pattern.next());
+                    adaptor.addChild(root_1, stream_lhs_pattern.nextTree());
 
                 }
                 stream_lhs_pattern.reset();
-                // src/main/resources/org/drools/lang/DRL.g:888:44: ( RIGHT_PAREN )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:878:44: ( RIGHT_PAREN )?
                 if ( stream_RIGHT_PAREN.hasNext() ) {
-                    adaptor.addChild(root_1, stream_RIGHT_PAREN.next());
+                    adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
                 }
                 stream_RIGHT_PAREN.reset();
@@ -7153,136 +7021,146 @@
 
             }
 
+            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:891: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:881:1: lhs_eval : ev= eval_key pc= paren_chunk -> ^( eval_key paren_chunk ) ;
+    public final DRLParser.lhs_eval_return lhs_eval() throws RecognitionException {
+        DRLParser.lhs_eval_return retval = new DRLParser.lhs_eval_return();
         retval.start = input.LT(1);
 
         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:892:2: (ev= eval_key pc= paren_chunk -> ^( eval_key paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:892:4: ev= eval_key pc= paren_chunk
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:882:2: (ev= eval_key pc= paren_chunk -> ^( eval_key paren_chunk ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:882:4: ev= eval_key pc= paren_chunk
             {
-            pushFollow(FOLLOW_eval_key_in_lhs_eval2658);
+            pushFollow(FOLLOW_eval_key_in_lhs_eval2604);
             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_eval2667);
+            pushFollow(FOLLOW_paren_chunk_in_lhs_eval2613);
             pc=paren_chunk();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_paren_chunk.add(pc.getTree());
-            if ( backtracking==0 ) {
-              	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_paren_chunk.add(pc.getTree());
+            if ( state.backtracking==0 ) {
+              	if (((DroolsTree) (pc!=null?((Object)pc.tree):null)).getText() != null){
+              			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
+            // elements: paren_chunk, eval_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();
-            // 898:3: -> ^( eval_key paren_chunk )
+            // 891:3: -> ^( eval_key paren_chunk )
             {
-                // src/main/resources/org/drools/lang/DRL.g:898:6: ^( eval_key paren_chunk )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:891:6: ^( eval_key paren_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_eval_key.nextNode(), root_1);
 
-                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:901: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:894:1: lhs_forall : forall_key LEFT_PAREN ( lhs_pattern )+ RIGHT_PAREN -> ^( forall_key ( lhs_pattern )+ RIGHT_PAREN ) ;
+    public final DRLParser.lhs_forall_return lhs_forall() throws RecognitionException {
+        DRLParser.lhs_forall_return retval = new DRLParser.lhs_forall_return();
         retval.start = input.LT(1);
 
         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;
@@ -7292,22 +7170,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:902:2: ( forall_key LEFT_PAREN ( lhs_pattern )+ RIGHT_PAREN -> ^( forall_key ( lhs_pattern )+ RIGHT_PAREN ) )
-            // src/main/resources/org/drools/lang/DRL.g:902:4: forall_key LEFT_PAREN ( lhs_pattern )+ RIGHT_PAREN
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:895:2: ( forall_key LEFT_PAREN ( lhs_pattern )+ RIGHT_PAREN -> ^( forall_key ( lhs_pattern )+ RIGHT_PAREN ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:895:4: forall_key LEFT_PAREN ( lhs_pattern )+ RIGHT_PAREN
             {
-            pushFollow(FOLLOW_forall_key_in_lhs_forall2694);
+            pushFollow(FOLLOW_forall_key_in_lhs_forall2640);
             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_forall2699); 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_forall2645); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN158);
+
+            if ( state.backtracking==0 ) {
               	emit(LEFT_PAREN158, DroolsEditorType.SYMBOL);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:904:4: ( lhs_pattern )+
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:897:4: ( lhs_pattern )+
             int cnt56=0;
             loop56:
             do {
@@ -7321,20 +7199,21 @@
 
                 switch (alt56) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:904:4: lhs_pattern
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:897:4: lhs_pattern
             	    {
-            	    pushFollow(FOLLOW_lhs_pattern_in_lhs_forall2707);
+            	    pushFollow(FOLLOW_lhs_pattern_in_lhs_forall2653);
             	    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;
@@ -7342,28 +7221,28 @@
                 cnt56++;
             } while (true);
 
-            RIGHT_PAREN160=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forall2713); 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_forall2659); 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: forall_key, RIGHT_PAREN, lhs_pattern
+            // elements: RIGHT_PAREN, forall_key, 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();
-            // 906:3: -> ^( forall_key ( lhs_pattern )+ RIGHT_PAREN )
+            // 899:3: -> ^( forall_key ( lhs_pattern )+ RIGHT_PAREN )
             {
-                // src/main/resources/org/drools/lang/DRL.g:906:6: ^( forall_key ( lhs_pattern )+ RIGHT_PAREN )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:899:6: ^( forall_key ( lhs_pattern )+ RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_forall_key.nextNode(), root_1);
@@ -7372,80 +7251,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:909: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:902:1: pattern_source : lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )? ;
+    public final DRLParser.pattern_source_return pattern_source() throws RecognitionException {
+        DRLParser.pattern_source_return retval = new DRLParser.pattern_source_return();
         retval.start = input.LT(1);
 
         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:912:2: ( lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )? )
-            // src/main/resources/org/drools/lang/DRL.g:912:4: lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:905:2: ( lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )? )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:905:4: lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_lhs_pattern_in_pattern_source2749);
+            pushFollow(FOLLOW_lhs_pattern_in_pattern_source2695);
             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:913: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:906:3: ( over_clause )?
             int alt57=2;
             int LA57_0 = input.LA(1);
 
@@ -7454,20 +7336,21 @@
             }
             switch (alt57) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:913:3: over_clause
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:906:3: over_clause
                     {
-                    pushFollow(FOLLOW_over_clause_in_pattern_source2753);
+                    pushFollow(FOLLOW_over_clause_in_pattern_source2699);
                     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:914:3: ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:907:3: ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
             int alt59=2;
             int LA59_0 = input.LA(1);
 
@@ -7476,19 +7359,18 @@
             }
             switch (alt59) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:915:4: FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:908:4: FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
                     {
-                    FROM163=(Token)input.LT(1);
-                    match(input,FROM,FOLLOW_FROM_in_pattern_source2763); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    FROM163=(Token)match(input,FROM,FOLLOW_FROM_in_pattern_source2709); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     FROM163_tree = (Object)adaptor.create(FROM163);
                     root_0 = (Object)adaptor.becomeRoot(FROM163_tree, root_0);
                     }
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(FROM163, DroolsEditorType.KEYWORD);
                       			emit(Location.LOCATION_LHS_FROM);	
                     }
-                    // src/main/resources/org/drools/lang/DRL.g:918:11: ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:911:11: ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
                     int alt58=4;
                     switch ( input.LA(1) ) {
                     case ACCUMULATE:
@@ -7505,72 +7387,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("918: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("918: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:918:14: accumulate_statement
+                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:911:14: accumulate_statement
                             {
-                            pushFollow(FOLLOW_accumulate_statement_in_pattern_source2783);
+                            pushFollow(FOLLOW_accumulate_statement_in_pattern_source2729);
                             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:919:15: collect_statement
+                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:912:15: collect_statement
                             {
-                            pushFollow(FOLLOW_collect_statement_in_pattern_source2799);
+                            pushFollow(FOLLOW_collect_statement_in_pattern_source2745);
                             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:920:15: entrypoint_statement
+                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:15: entrypoint_statement
                             {
-                            pushFollow(FOLLOW_entrypoint_statement_in_pattern_source2816);
+                            pushFollow(FOLLOW_entrypoint_statement_in_pattern_source2762);
                             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:921:15: from_source
+                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:914:15: from_source
                             {
-                            pushFollow(FOLLOW_from_source_in_pattern_source2832);
+                            pushFollow(FOLLOW_from_source_in_pattern_source2778);
                             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;
 
@@ -7587,20 +7473,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);
@@ -7616,52 +7505,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:939: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:1: over_clause : OVER over_elements ( COMMA over_elements )* ;
+    public final DRLParser.over_clause_return over_clause() throws RecognitionException {
+        DRLParser.over_clause_return retval = new DRLParser.over_clause_return();
         retval.start = input.LT(1);
 
         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:940:2: ( OVER over_elements ( COMMA over_elements )* )
-            // src/main/resources/org/drools/lang/DRL.g:940:4: OVER over_elements ( COMMA over_elements )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:933:2: ( OVER over_elements ( COMMA over_elements )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:933:4: OVER over_elements ( COMMA over_elements )*
             {
             root_0 = (Object)adaptor.nil();
 
-            OVER168=(Token)input.LT(1);
-            match(input,OVER,FOLLOW_OVER_in_over_clause2864); if (failed) return retval;
-            if ( backtracking==0 ) {
+            OVER168=(Token)match(input,OVER,FOLLOW_OVER_in_over_clause2810); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             OVER168_tree = (Object)adaptor.create(OVER168);
             root_0 = (Object)adaptor.becomeRoot(OVER168_tree, root_0);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(OVER168, DroolsEditorType.KEYWORD);	
             }
-            pushFollow(FOLLOW_over_elements_in_over_clause2869);
+            pushFollow(FOLLOW_over_elements_in_over_clause2815);
             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:941: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:934:4: ( COMMA over_elements )*
             loop60:
             do {
                 int alt60=2;
@@ -7686,19 +7575,19 @@
 
                 switch (alt60) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:941:5: COMMA over_elements
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:934:5: COMMA over_elements
             	    {
-            	    COMMA170=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_over_clause2876); if (failed) return retval;
-            	    if ( backtracking==0 ) {
+            	    COMMA170=(Token)match(input,COMMA,FOLLOW_COMMA_in_over_clause2822); if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) {
             	      	emit(COMMA170, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_over_elements_in_over_clause2881);
+            	    pushFollow(FOLLOW_over_elements_in_over_clause2827);
             	    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;
 
@@ -7712,30 +7601,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:944: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:937:1: over_elements : id1= ID COLON id2= ID paren_chunk -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk ) ;
+    public final DRLParser.over_elements_return over_elements() throws RecognitionException {
+        DRLParser.over_elements_return retval = new DRLParser.over_elements_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -7743,7 +7635,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;
@@ -7753,95 +7645,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:945:2: (id1= ID COLON id2= ID paren_chunk -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:945:4: id1= ID COLON id2= ID paren_chunk
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:938:2: (id1= ID COLON id2= ID paren_chunk -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:938:4: id1= ID COLON id2= ID paren_chunk
             {
-            id1=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_over_elements2896); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id1);
+            id1=(Token)match(input,ID,FOLLOW_ID_in_over_elements2842); 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_elements2903); if (failed) return retval;
-            if ( backtracking==0 ) stream_COLON.add(COLON172);
+            COLON172=(Token)match(input,COLON,FOLLOW_COLON_in_over_elements2849); 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_elements2912); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id2);
+            id2=(Token)match(input,ID,FOLLOW_ID_in_over_elements2858); 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_elements2919);
+            pushFollow(FOLLOW_paren_chunk_in_over_elements2865);
             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
+            // elements: id1, id2, paren_chunk
             // 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();
-            // 949:2: -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
+            // 942:2: -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
             {
-                // src/main/resources/org/drools/lang/DRL.g:949:5: ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:942:5: ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(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:952: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:945:1: accumulate_statement : ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN ) ;
+    public final DRLParser.accumulate_statement_return accumulate_statement() throws RecognitionException {
+        DRLParser.accumulate_statement_return retval = new DRLParser.accumulate_statement_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -7850,11 +7743,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;
@@ -7869,32 +7762,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:953: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:953:4: ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:946:2: ( ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:946:4: ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN
             {
-            ACCUMULATE174=(Token)input.LT(1);
-            match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_accumulate_statement2945); if (failed) return retval;
-            if ( backtracking==0 ) stream_ACCUMULATE.add(ACCUMULATE174);
+            ACCUMULATE174=(Token)match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_accumulate_statement2891); 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_statement2954); 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_statement2900); 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_statement2962);
+            pushFollow(FOLLOW_lhs_or_in_accumulate_statement2908);
             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:957: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:950:3: ( COMMA )?
             int alt61=2;
             int LA61_0 = input.LA(1);
 
@@ -7903,11 +7795,10 @@
             }
             switch (alt61) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:957:3: COMMA
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:950:3: COMMA
                     {
-                    COMMA177=(Token)input.LT(1);
-                    match(input,COMMA,FOLLOW_COMMA_in_accumulate_statement2967); if (failed) return retval;
-                    if ( backtracking==0 ) stream_COMMA.add(COMMA177);
+                    COMMA177=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_statement2913); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_COMMA.add(COMMA177);
 
 
                     }
@@ -7915,10 +7806,10 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(COMMA177, DroolsEditorType.SYMBOL);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:958:3: ( accumulate_init_clause | accumulate_id_clause )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:951:3: ( accumulate_init_clause | accumulate_id_clause )
             int alt62=2;
             int LA62_0 = input.LA(1);
 
@@ -7929,117 +7820,121 @@
                 alt62=2;
             }
             else {
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("958: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:958:5: accumulate_init_clause
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:951:5: accumulate_init_clause
                     {
-                    pushFollow(FOLLOW_accumulate_init_clause_in_accumulate_statement2977);
+                    pushFollow(FOLLOW_accumulate_init_clause_in_accumulate_statement2923);
                     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:959:5: accumulate_id_clause
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:952:5: accumulate_id_clause
                     {
-                    pushFollow(FOLLOW_accumulate_id_clause_in_accumulate_statement2983);
+                    pushFollow(FOLLOW_accumulate_id_clause_in_accumulate_statement2929);
                     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_statement2991); 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_statement2937); 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_init_clause, accumulate_id_clause, ACCUMULATE
+            // elements: lhs_or, ACCUMULATE, accumulate_init_clause, RIGHT_PAREN, accumulate_id_clause
             // 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();
-            // 963:3: -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
+            // 956:3: -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
             {
-                // src/main/resources/org/drools/lang/DRL.g:963:6: ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:956:6: ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(stream_ACCUMULATE.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:963:26: ( accumulate_init_clause )?
+                adaptor.addChild(root_1, stream_lhs_or.nextTree());
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:956:26: ( accumulate_init_clause )?
                 if ( stream_accumulate_init_clause.hasNext() ) {
-                    adaptor.addChild(root_1, stream_accumulate_init_clause.next());
+                    adaptor.addChild(root_1, stream_accumulate_init_clause.nextTree());
 
                 }
                 stream_accumulate_init_clause.reset();
-                // src/main/resources/org/drools/lang/DRL.g:963:50: ( accumulate_id_clause )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:956:50: ( accumulate_id_clause )?
                 if ( stream_accumulate_id_clause.hasNext() ) {
-                    adaptor.addChild(root_1, stream_accumulate_id_clause.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:967: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:960:1: accumulate_init_clause : INIT pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE] -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) ) ;
+    public final DRLParser.accumulate_init_clause_return accumulate_init_clause() throws RecognitionException {
+        DRLParser.accumulate_init_clause_return retval = new DRLParser.accumulate_init_clause_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -8048,19 +7943,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;
@@ -8075,25 +7970,25 @@
         RewriteRuleSubtreeStream stream_action_key=new RewriteRuleSubtreeStream(adaptor,"rule action_key");
          boolean isFailed = true;	
         try {
-            // src/main/resources/org/drools/lang/DRL.g:970: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:970:4: INIT pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE]
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:963:2: ( INIT pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE] -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:963:4: INIT pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE]
             {
-            INIT181=(Token)input.LT(1);
-            match(input,INIT,FOLLOW_INIT_in_accumulate_init_clause3037); if (failed) return retval;
-            if ( backtracking==0 ) stream_INIT.add(INIT181);
+            INIT181=(Token)match(input,INIT,FOLLOW_INIT_in_accumulate_init_clause2983); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_INIT.add(INIT181);
 
-            if ( 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_clause3048);
+            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause2994);
             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:972: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:965:84: (cm1= COMMA )?
             int alt63=2;
             int LA63_0 = input.LA(1);
 
@@ -8102,11 +7997,10 @@
             }
             switch (alt63) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:972:84: cm1= COMMA
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:965:84: cm1= COMMA
                     {
-                    cm1=(Token)input.LT(1);
-                    match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3053); if (failed) return retval;
-                    if ( backtracking==0 ) stream_COMMA.add(cm1);
+                    cm1=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause2999); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_COMMA.add(cm1);
 
 
                     }
@@ -8114,23 +8008,25 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(cm1, DroolsEditorType.SYMBOL);	
             }
-            if ( backtracking==0 ) {
-              	emit(Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION);	
+            if ( state.backtracking==0 ) {
+              	if (pc1 != null && ((DroolsTree) pc1.getTree()).getText() != null) emit(Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION);	
             }
-            pushFollow(FOLLOW_action_key_in_accumulate_init_clause3064);
+            pushFollow(FOLLOW_action_key_in_accumulate_init_clause3010);
             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_clause3068);
+
+            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_clause3014);
             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:974: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:967:97: (cm2= COMMA )?
             int alt64=2;
             int LA64_0 = input.LA(1);
 
@@ -8139,11 +8035,10 @@
             }
             switch (alt64) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:974:97: cm2= COMMA
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:967:97: cm2= COMMA
                     {
-                    cm2=(Token)input.LT(1);
-                    match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3073); if (failed) return retval;
-                    if ( backtracking==0 ) stream_COMMA.add(cm2);
+                    cm2=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3019); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_COMMA.add(cm2);
 
 
                     }
@@ -8151,30 +8046,40 @@
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(cm2, DroolsEditorType.SYMBOL);	
             }
-            if ( backtracking==0 ) {
-              	emit(Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE);	
+            if ( state.backtracking==0 ) {
+              	if (pc1 != null && ((DroolsTree) pc1.getTree()).getText() != null && pc2 != null && ((DroolsTree) pc2.getTree()).getText() != null ) emit(Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:977:2: ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:969:2: ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )?
             int alt66=2;
-            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:977:4: reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )?
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:969:4: reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )?
                     {
-                    pushFollow(FOLLOW_reverse_key_in_accumulate_init_clause3086);
+                    pushFollow(FOLLOW_reverse_key_in_accumulate_init_clause3031);
                     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_clause3090);
+
+                    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_clause3035);
                     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:977: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:969:100: (cm3= COMMA )?
                     int alt65=2;
                     int LA65_0 = input.LA(1);
 
@@ -8183,11 +8088,10 @@
                     }
                     switch (alt65) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DRL.g:977:100: cm3= COMMA
+                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:969:100: cm3= COMMA
                             {
-                            cm3=(Token)input.LT(1);
-                            match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3095); if (failed) return retval;
-                            if ( backtracking==0 ) stream_COMMA.add(cm3);
+                            cm3=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3040); if (state.failed) return retval; 
+                            if ( state.backtracking==0 ) stream_COMMA.add(cm3);
 
 
                             }
@@ -8195,7 +8099,7 @@
 
                     }
 
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(cm3, DroolsEditorType.SYMBOL);	
                     }
 
@@ -8204,84 +8108,92 @@
 
             }
 
-            if ( backtracking==0 ) {
-              	emit(Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT);	
+            if ( state.backtracking==0 ) {
+              	if ((pc1 != null && ((DroolsTree) pc1.tree).getText() != null) &&
+                          			(pc2 != null && ((DroolsTree) pc2.tree).getText() != null) &&
+                          			(pc3 != null && ((DroolsTree) pc3.tree).getText() != null)) {
+              			emit(Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT);
+              		}	
+              	
             }
-            pushFollow(FOLLOW_result_key_in_accumulate_init_clause3110);
+            pushFollow(FOLLOW_result_key_in_accumulate_init_clause3056);
             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_clause3116);
+            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3062);
             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: result_key, pc4, action_key, pc3, INIT, reverse_key, pc1, pc2
+            // elements: pc2, reverse_key, pc3, INIT, action_key, pc1, pc4, result_key
             // token labels: 
-            // rule labels: pc2, pc3, pc4, pc1, retval
+            // rule labels: pc2, pc4, pc3, 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);
             RewriteRuleSubtreeStream stream_pc4=new RewriteRuleSubtreeStream(adaptor,"token pc4",pc4!=null?pc4.tree:null);
+            RewriteRuleSubtreeStream stream_pc3=new RewriteRuleSubtreeStream(adaptor,"token pc3",pc3!=null?pc3.tree:null);
             RewriteRuleSubtreeStream stream_pc1=new RewriteRuleSubtreeStream(adaptor,"token pc1",pc1!=null?pc1.tree:null);
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 980:2: -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) )
+            // 978:2: -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) )
             {
-                // src/main/resources/org/drools/lang/DRL.g:980:5: ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:978:5: ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(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:980:33: ^( INIT $pc1)
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:978:33: ^( INIT $pc1)
                 {
                 Object root_2 = (Object)adaptor.nil();
-                root_2 = (Object)adaptor.becomeRoot(stream_INIT.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:980:46: ^( action_key $pc2)
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:978:46: ^( action_key $pc2)
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(stream_action_key.nextNode(), root_2);
 
-                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:980:65: ( ^( reverse_key $pc3) )?
-                if ( stream_pc3.hasNext()||stream_reverse_key.hasNext() ) {
-                    // src/main/resources/org/drools/lang/DRL.g:980:65: ^( reverse_key $pc3)
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:978:65: ( ^( reverse_key $pc3) )?
+                if ( stream_reverse_key.hasNext()||stream_pc3.hasNext() ) {
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:978: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_pc3.reset();
                 stream_reverse_key.reset();
-                // src/main/resources/org/drools/lang/DRL.g:980:86: ^( result_key $pc4)
+                stream_pc3.reset();
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:978:86: ^( result_key $pc4)
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(stream_result_key.nextNode(), root_2);
 
-                adaptor.addChild(root_2, stream_pc4.next());
+                adaptor.addChild(root_2, stream_pc4.nextTree());
 
                 adaptor.addChild(root_1, root_2);
                 }
@@ -8291,23 +8203,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 {
              
@@ -8323,88 +8237,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:993: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:991:1: accumulate_paren_chunk[int locationType] : pc= accumulate_paren_chunk_data[false,$locationType] -> VT_PAREN_CHUNK[$pc.start,text] ;
+    public final DRLParser.accumulate_paren_chunk_return accumulate_paren_chunk(int locationType) throws RecognitionException {
+        DRLParser.accumulate_paren_chunk_return retval = new DRLParser.accumulate_paren_chunk_return();
         retval.start = input.LT(1);
 
         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:996:3: (pc= accumulate_paren_chunk_data[false,$locationType] -> VT_PAREN_CHUNK[$pc.start,text] )
-            // src/main/resources/org/drools/lang/DRL.g:996:5: pc= accumulate_paren_chunk_data[false,$locationType]
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:994:3: (pc= accumulate_paren_chunk_data[false,$locationType] -> VT_PAREN_CHUNK[$pc.start,text] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:994:5: pc= accumulate_paren_chunk_data[false,$locationType]
             {
-            pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3174);
+            pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3120);
             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();
-            // 997:2: -> VT_PAREN_CHUNK[$pc.start,text]
+            // 995: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:1000: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:998:1: accumulate_paren_chunk_data[boolean isRecursive, int locationType] : lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN ;
+    public final DRLParser.accumulate_paren_chunk_data_return accumulate_paren_chunk_data(boolean isRecursive, int locationType) throws RecognitionException {
+        DRLParser.accumulate_paren_chunk_data_return retval = new DRLParser.accumulate_paren_chunk_data_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -8412,7 +8330,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;
@@ -8420,18 +8338,17 @@
         Object rp1_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1001: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:1001:4: lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:999:2: (lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:999:4: lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN
             {
             root_0 = (Object)adaptor.nil();
 
-            lp1=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data3198); if (failed) return retval;
-            if ( backtracking==0 ) {
+            lp1=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data3144); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             lp1_tree = (Object)adaptor.create(lp1);
             adaptor.addChild(root_0, lp1_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	if (!isRecursive) {
               				emit(lp1, DroolsEditorType.SYMBOL);
               				emit(locationType);
@@ -8440,7 +8357,7 @@
               			}	
               		
             }
-            // src/main/resources/org/drools/lang/DRL.g:1009:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1007:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )*
             loop67:
             do {
                 int alt67=3;
@@ -8456,36 +8373,36 @@
 
                 switch (alt67) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1009:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1007:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
             	    {
             	    any=(Token)input.LT(1);
             	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=STRING)||input.LA(1)==COMMA||(input.LA(1)>=AT && input.LA(1)<=MULTI_LINE_COMMENT) ) {
             	        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_data3210);    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:1009:87: accumulate_paren_chunk_data[true,-1]
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1007:87: accumulate_paren_chunk_data[true,-1]
             	    {
-            	    pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3226);
+            	    pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3172);
             	    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;
 
@@ -8494,13 +8411,12 @@
                 }
             } while (true);
 
-            rp1=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3237); if (failed) return retval;
-            if ( backtracking==0 ) {
+            rp1=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3183); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             rp1_tree = (Object)adaptor.create(rp1);
             adaptor.addChild(root_0, rp1_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	if (!isRecursive) {
               				emit(rp1, DroolsEditorType.SYMBOL);
               			} else {
@@ -8513,114 +8429,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:1019: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1017:1: accumulate_id_clause : ID paren_chunk -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk ) ;
+    public final DRLParser.accumulate_id_clause_return accumulate_id_clause() throws RecognitionException {
+        DRLParser.accumulate_id_clause_return retval = new DRLParser.accumulate_id_clause_return();
         retval.start = input.LT(1);
 
         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:1020:2: ( ID paren_chunk -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:1020:4: ID paren_chunk
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1018:2: ( ID paren_chunk -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1018:4: ID paren_chunk
             {
-            ID185=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_accumulate_id_clause3253); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID185);
+            ID185=(Token)match(input,ID,FOLLOW_ID_in_accumulate_id_clause3199); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID185);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(ID185, DroolsEditorType.IDENTIFIER);	
             }
-            pushFollow(FOLLOW_paren_chunk_in_accumulate_id_clause3259);
+            pushFollow(FOLLOW_paren_chunk_in_accumulate_id_clause3205);
             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: 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();
-            // 1022:2: -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
+            // 1020:2: -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1022:5: ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1020:5: ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(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:1025: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1023:1: collect_statement : COLLECT LEFT_PAREN pattern_source RIGHT_PAREN -> ^( COLLECT pattern_source RIGHT_PAREN ) ;
+    public final DRLParser.collect_statement_return collect_statement() throws RecognitionException {
+        DRLParser.collect_statement_return retval = new DRLParser.collect_statement_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -8628,7 +8550,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;
@@ -8639,185 +8561,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:1026:2: ( COLLECT LEFT_PAREN pattern_source RIGHT_PAREN -> ^( COLLECT pattern_source RIGHT_PAREN ) )
-            // src/main/resources/org/drools/lang/DRL.g:1026:4: COLLECT LEFT_PAREN pattern_source RIGHT_PAREN
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1024:2: ( COLLECT LEFT_PAREN pattern_source RIGHT_PAREN -> ^( COLLECT pattern_source RIGHT_PAREN ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1024:4: COLLECT LEFT_PAREN pattern_source RIGHT_PAREN
             {
-            COLLECT187=(Token)input.LT(1);
-            match(input,COLLECT,FOLLOW_COLLECT_in_collect_statement3281); if (failed) return retval;
-            if ( backtracking==0 ) stream_COLLECT.add(COLLECT187);
+            COLLECT187=(Token)match(input,COLLECT,FOLLOW_COLLECT_in_collect_statement3227); 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_statement3290); 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_statement3236); 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_statement3297);
+            pushFollow(FOLLOW_pattern_source_in_collect_statement3243);
             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_statement3302); 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_statement3248); 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: COLLECT, RIGHT_PAREN, pattern_source
+            // elements: COLLECT, pattern_source, 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();
-            // 1032:2: -> ^( COLLECT pattern_source RIGHT_PAREN )
+            // 1030:2: -> ^( COLLECT pattern_source RIGHT_PAREN )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1032:5: ^( COLLECT pattern_source RIGHT_PAREN )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1030:5: ^( COLLECT pattern_source RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(stream_COLLECT.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:1035: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1033:1: entrypoint_statement : entry_point_key entrypoint_id -> ^( entry_point_key entrypoint_id ) ;
+    public final DRLParser.entrypoint_statement_return entrypoint_statement() throws RecognitionException {
+        DRLParser.entrypoint_statement_return retval = new DRLParser.entrypoint_statement_return();
         retval.start = input.LT(1);
 
         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:1036:2: ( entry_point_key entrypoint_id -> ^( entry_point_key entrypoint_id ) )
-            // src/main/resources/org/drools/lang/DRL.g:1036:4: entry_point_key entrypoint_id
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1034:2: ( entry_point_key entrypoint_id -> ^( entry_point_key entrypoint_id ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1034:4: entry_point_key entrypoint_id
             {
-            pushFollow(FOLLOW_entry_point_key_in_entrypoint_statement3329);
+            pushFollow(FOLLOW_entry_point_key_in_entrypoint_statement3275);
             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_statement3337);
+            pushFollow(FOLLOW_entrypoint_id_in_entrypoint_statement3283);
             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();
-            // 1040:2: -> ^( entry_point_key entrypoint_id )
+            // 1038:2: -> ^( entry_point_key entrypoint_id )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1040:5: ^( entry_point_key entrypoint_id )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1038:5: ^( entry_point_key entrypoint_id )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_entry_point_key.nextNode(), root_1);
 
-                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:1043: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1041:1: entrypoint_id : (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] );
+    public final DRLParser.entrypoint_id_return entrypoint_id() throws RecognitionException {
+        DRLParser.entrypoint_id_return retval = new DRLParser.entrypoint_id_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -8829,7 +8757,7 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1044:2: (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1042:2: (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] )
             int alt68=2;
             int LA68_0 = input.LA(1);
 
@@ -8840,113 +8768,114 @@
                 alt68=2;
             }
             else {
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1043: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:1044:5: value= ID
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1042:5: value= ID
                     {
-                    value=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_entrypoint_id3363); if (failed) return retval;
-                    if ( backtracking==0 ) stream_ID.add(value);
+                    value=(Token)match(input,ID,FOLLOW_ID_in_entrypoint_id3309); 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();
-                    // 1045:3: -> VT_ENTRYPOINT_ID[$value]
+                    // 1043: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:1046:5: value= STRING
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1044:5: value= STRING
                     {
-                    value=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_entrypoint_id3380); if (failed) return retval;
-                    if ( backtracking==0 ) stream_STRING.add(value);
+                    value=(Token)match(input,STRING,FOLLOW_STRING_in_entrypoint_id3326); 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();
-                    // 1047:3: -> VT_ENTRYPOINT_ID[$value]
+                    // 1045: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:1050: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1048:1: from_source : ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )? -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? ) ;
+    public final DRLParser.from_source_return from_source() throws RecognitionException {
+        DRLParser.from_source_return retval = new DRLParser.from_source_return();
         retval.start = input.LT(1);
 
         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;
@@ -8954,60 +8883,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:1051: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:1051:4: ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1049:2: ( ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )? -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1049:4: ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )?
             {
-            ID193=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_from_source3400); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID193);
+            ID193=(Token)match(input,ID,FOLLOW_ID_in_from_source3346); 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:1052:3: ( ( LEFT_PAREN )=>args= paren_chunk )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1050:3: ( ( LEFT_PAREN )=>args= paren_chunk )?
             int alt69=2;
-            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:1052:5: ( LEFT_PAREN )=>args= paren_chunk
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1050:5: ( LEFT_PAREN )=>args= paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_from_source3415);
+                    pushFollow(FOLLOW_paren_chunk_in_from_source3361);
                     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:1053:3: ( expression_chain )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1051:3: ( expression_chain )?
             int alt70=2;
             int LA70_0 = input.LA(1);
 
@@ -9016,20 +8920,21 @@
             }
             switch (alt70) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1053:3: expression_chain
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1051:3: expression_chain
                     {
-                    pushFollow(FOLLOW_expression_chain_in_from_source3422);
+                    pushFollow(FOLLOW_expression_chain_in_from_source3368);
                     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 ) {
@@ -9037,34 +8942,35 @@
               		}	
             }
 
+
             // AST REWRITE
-            // elements: ID, paren_chunk, expression_chain
+            // elements: expression_chain, 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();
-            // 1059:2: -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
+            // 1057:2: -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1059:5: ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1057:5: ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(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:1059:25: ( paren_chunk )?
+                adaptor.addChild(root_1, stream_ID.nextNode());
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1057:25: ( paren_chunk )?
                 if ( stream_paren_chunk.hasNext() ) {
-                    adaptor.addChild(root_1, stream_paren_chunk.next());
+                    adaptor.addChild(root_1, stream_paren_chunk.nextTree());
 
                 }
                 stream_paren_chunk.reset();
-                // src/main/resources/org/drools/lang/DRL.g:1059:38: ( expression_chain )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1057:38: ( expression_chain )?
                 if ( stream_expression_chain.hasNext() ) {
-                    adaptor.addChild(root_1, stream_expression_chain.next());
+                    adaptor.addChild(root_1, stream_expression_chain.nextTree());
 
                 }
                 stream_expression_chain.reset();
@@ -9074,47 +8980,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:1062: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1060:1: expression_chain : DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )? -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? ) ;
+    public final DRLParser.expression_chain_return expression_chain() throws RecognitionException {
+        DRLParser.expression_chain_return retval = new DRLParser.expression_chain_return();
         retval.start = input.LT(1);
 
         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;
@@ -9125,213 +9033,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:1063: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:1064:3: DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1061:2: ( DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )? -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1062:3: DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )?
             {
-            DOT195=(Token)input.LT(1);
-            match(input,DOT,FOLLOW_DOT_in_expression_chain3455); if (failed) return retval;
-            if ( backtracking==0 ) stream_DOT.add(DOT195);
+            DOT195=(Token)match(input,DOT,FOLLOW_DOT_in_expression_chain3401); 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_chain3462); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID196);
+            ID196=(Token)match(input,ID,FOLLOW_ID_in_expression_chain3408); 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:1066:4: ({...}? paren_chunk | square_chunk )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1064:4: ({...}? paren_chunk | square_chunk )?
             int alt71=3;
-            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 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 TILDE:
-                    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 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:1067:6: {...}? paren_chunk
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1065:6: {...}? paren_chunk
                     {
-                    if ( !(input.LA(1) == LEFT_PAREN) ) {
-                        if (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_chain3478);
+                    pushFollow(FOLLOW_paren_chunk_in_expression_chain3424);
                     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:1069:6: square_chunk
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1067:6: square_chunk
                     {
-                    pushFollow(FOLLOW_square_chunk_in_expression_chain3492);
+                    pushFollow(FOLLOW_square_chunk_in_expression_chain3438);
                     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:1071:4: ( expression_chain )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1069:4: ( expression_chain )?
             int alt72=2;
             int LA72_0 = input.LA(1);
 
@@ -9340,54 +9092,56 @@
             }
             switch (alt72) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1071:4: expression_chain
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1069:4: expression_chain
                     {
-                    pushFollow(FOLLOW_expression_chain_in_expression_chain3503);
+                    pushFollow(FOLLOW_expression_chain_in_expression_chain3449);
                     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: square_chunk, expression_chain, paren_chunk, ID
+            // elements: paren_chunk, ID, expression_chain, square_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();
-            // 1072:4: -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
+            // 1070:4: -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1072:7: ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1070:7: ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(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:1072:38: ( square_chunk )?
+                adaptor.addChild(root_1, stream_ID.nextNode());
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1070:38: ( square_chunk )?
                 if ( stream_square_chunk.hasNext() ) {
-                    adaptor.addChild(root_1, stream_square_chunk.next());
+                    adaptor.addChild(root_1, stream_square_chunk.nextTree());
 
                 }
                 stream_square_chunk.reset();
-                // src/main/resources/org/drools/lang/DRL.g:1072:52: ( paren_chunk )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1070:52: ( paren_chunk )?
                 if ( stream_paren_chunk.hasNext() ) {
-                    adaptor.addChild(root_1, stream_paren_chunk.next());
+                    adaptor.addChild(root_1, stream_paren_chunk.nextTree());
 
                 }
                 stream_paren_chunk.reset();
-                // src/main/resources/org/drools/lang/DRL.g:1072:65: ( expression_chain )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1070:65: ( expression_chain )?
                 if ( stream_expression_chain.hasNext() ) {
-                    adaptor.addChild(root_1, stream_expression_chain.next());
+                    adaptor.addChild(root_1, stream_expression_chain.nextTree());
 
                 }
                 stream_expression_chain.reset();
@@ -9397,192 +9151,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:1075: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1073:1: lhs_pattern : ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) );
+    public final DRLParser.lhs_pattern_return lhs_pattern() throws RecognitionException {
+        DRLParser.lhs_pattern_return retval = new DRLParser.lhs_pattern_return();
         retval.start = input.LT(1);
 
         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:1076:2: ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1074:2: ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) )
             int alt73=2;
             int LA73_0 = input.LA(1);
 
             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("1075: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("1075: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:1076:4: fact_binding
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1074:4: fact_binding
                     {
-                    pushFollow(FOLLOW_fact_binding_in_lhs_pattern3536);
+                    pushFollow(FOLLOW_fact_binding_in_lhs_pattern3482);
                     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();
-                    // 1076:17: -> ^( VT_PATTERN fact_binding )
+                    // 1074:17: -> ^( VT_PATTERN fact_binding )
                     {
-                        // src/main/resources/org/drools/lang/DRL.g:1076:20: ^( VT_PATTERN fact_binding )
+                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1074:20: ^( VT_PATTERN fact_binding )
                         {
                         Object root_1 = (Object)adaptor.nil();
-                        root_1 = (Object)adaptor.becomeRoot(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:1077:4: fact
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1075:4: fact
                     {
-                    pushFollow(FOLLOW_fact_in_lhs_pattern3549);
+                    pushFollow(FOLLOW_fact_in_lhs_pattern3495);
                     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();
-                    // 1077:9: -> ^( VT_PATTERN fact )
+                    // 1075:9: -> ^( VT_PATTERN fact )
                     {
-                        // src/main/resources/org/drools/lang/DRL.g:1077:12: ^( VT_PATTERN fact )
+                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1075:12: ^( VT_PATTERN fact )
                         {
                         Object root_1 = (Object)adaptor.nil();
-                        root_1 = (Object)adaptor.becomeRoot(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:1080: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1078:1: fact_binding : label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN ) -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? ) ;
+    public final DRLParser.fact_binding_return fact_binding() throws RecognitionException {
+        DRLParser.fact_binding_return retval = new DRLParser.fact_binding_return();
         retval.start = input.LT(1);
 
         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;
@@ -9593,15 +9354,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:1081: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:1081:5: label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1079:3: ( label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN ) -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1079:5: label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
             {
-            pushFollow(FOLLOW_label_in_fact_binding3569);
+            pushFollow(FOLLOW_label_in_fact_binding3515);
             label202=label();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_label.add(label202.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1082: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1080:3: ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
             int alt74=2;
             int LA74_0 = input.LA(1);
 
@@ -9612,44 +9374,44 @@
                 alt74=2;
             }
             else {
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1082: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:1082:5: fact
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1080:5: fact
                     {
-                    pushFollow(FOLLOW_fact_in_fact_binding3575);
+                    pushFollow(FOLLOW_fact_in_fact_binding3521);
                     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:1083:6: LEFT_PAREN fact_binding_expression RIGHT_PAREN
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1081:6: LEFT_PAREN fact_binding_expression RIGHT_PAREN
                     {
-                    LEFT_PAREN204=(Token)input.LT(1);
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_binding3582); 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_binding3528); 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_binding3590);
+                    pushFollow(FOLLOW_fact_binding_expression_in_fact_binding3536);
                     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_binding3598); 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_binding3544); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN206);
+
+                    if ( state.backtracking==0 ) {
                       	emit(RIGHT_PAREN206, DroolsEditorType.SYMBOL);	
                     }
 
@@ -9659,40 +9421,41 @@
             }
 
 
+
             // AST REWRITE
-            // elements: fact_binding_expression, label, RIGHT_PAREN, fact
+            // elements: fact, label, fact_binding_expression, 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();
-            // 1087:3: -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
+            // 1085:3: -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1087:6: ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1085:6: ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(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:1087:30: ( fact )?
+                adaptor.addChild(root_1, stream_label.nextTree());
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1085:30: ( fact )?
                 if ( stream_fact.hasNext() ) {
-                    adaptor.addChild(root_1, stream_fact.next());
+                    adaptor.addChild(root_1, stream_fact.nextTree());
 
                 }
                 stream_fact.reset();
-                // src/main/resources/org/drools/lang/DRL.g:1087:36: ( fact_binding_expression )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1085:36: ( fact_binding_expression )?
                 if ( stream_fact_binding_expression.hasNext() ) {
-                    adaptor.addChild(root_1, stream_fact_binding_expression.next());
+                    adaptor.addChild(root_1, stream_fact_binding_expression.nextTree());
 
                 }
                 stream_fact_binding_expression.reset();
-                // src/main/resources/org/drools/lang/DRL.g:1087:61: ( RIGHT_PAREN )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1085:61: ( RIGHT_PAREN )?
                 if ( stream_RIGHT_PAREN.hasNext() ) {
-                    adaptor.addChild(root_1, stream_RIGHT_PAREN.next());
+                    adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
                 }
                 stream_RIGHT_PAREN.reset();
@@ -9702,96 +9465,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:1090: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1088:1: fact_binding_expression : ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )* ;
+    public final DRLParser.fact_binding_expression_return fact_binding_expression() throws RecognitionException {
+        DRLParser.fact_binding_expression_return retval = new DRLParser.fact_binding_expression_return();
         retval.start = input.LT(1);
 
         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:1093: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:1093:5: ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1091:3: ( ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1091:5: ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
             {
-            // src/main/resources/org/drools/lang/DRL.g:1093:5: ( fact -> fact )
-            // src/main/resources/org/drools/lang/DRL.g:1093:6: fact
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1091:5: ( fact -> fact )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1091:6: fact
             {
-            pushFollow(FOLLOW_fact_in_fact_binding_expression3639);
+            pushFollow(FOLLOW_fact_in_fact_binding_expression3585);
             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();
-            // 1093:11: -> fact
+            // 1091: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:1093:20: ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1091:20: ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
             loop76:
             do {
                 int alt76=2;
                 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) ) {
@@ -9801,48 +9567,48 @@
 
                 switch (alt76) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1093:22: (value= or_key | pipe= DOUBLE_PIPE ) fact
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1091:22: (value= or_key | pipe= DOUBLE_PIPE ) fact
             	    {
-            	    // src/main/resources/org/drools/lang/DRL.g:1093:22: (value= or_key | pipe= DOUBLE_PIPE )
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1091:22: (value= or_key | pipe= DOUBLE_PIPE )
             	    int alt75=2;
             	    int LA75_0 = input.LA(1);
 
-            	    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("1093: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:1093:23: value= or_key
+            	            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1091:23: value= or_key
             	            {
-            	            pushFollow(FOLLOW_or_key_in_fact_binding_expression3651);
+            	            pushFollow(FOLLOW_or_key_in_fact_binding_expression3597);
             	            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:1093:62: pipe= DOUBLE_PIPE
+            	            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1091:62: pipe= DOUBLE_PIPE
             	            {
-            	            pipe=(Token)input.LT(1);
-            	            match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_fact_binding_expression3657); if (failed) return retval;
-            	            if ( backtracking==0 ) stream_DOUBLE_PIPE.add(pipe);
+            	            pipe=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_fact_binding_expression3603); if (state.failed) return retval; 
+            	            if ( state.backtracking==0 ) stream_DOUBLE_PIPE.add(pipe);
 
-            	            if ( backtracking==0 ) {
+            	            if ( state.backtracking==0 ) {
             	              orToken = pipe;
             	            }
 
@@ -9851,41 +9617,42 @@
 
             	    }
 
-            	    pushFollow(FOLLOW_fact_in_fact_binding_expression3662);
+            	    pushFollow(FOLLOW_fact_in_fact_binding_expression3608);
             	    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_binding_expression, fact
+            	    // elements: fact, fact_binding_expression
             	    // 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();
-            	    // 1094:3: -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
+            	    // 1092:3: -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
             	    {
-            	        // src/main/resources/org/drools/lang/DRL.g:1094:6: ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
+            	        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1092:6: ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
             	        {
             	        Object root_1 = (Object)adaptor.nil();
-            	        root_1 = (Object)adaptor.becomeRoot(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 :
@@ -9898,39 +9665,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:1097: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1095:1: fact : pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN -> ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN ) ;
+    public final DRLParser.fact_return fact() throws RecognitionException {
+        DRLParser.fact_return retval = new DRLParser.fact_return();
         retval.start = input.LT(1);
 
         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;
@@ -9941,25 +9711,25 @@
         RewriteRuleSubtreeStream stream_constraints=new RewriteRuleSubtreeStream(adaptor,"rule constraints");
          boolean isFailedOnConstraints = true; pushParaphrases(DroolsParaphraseTypes.PATTERN); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1100:2: ( pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN -> ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN ) )
-            // src/main/resources/org/drools/lang/DRL.g:1100:4: pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1098:2: ( pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN -> ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1098:4: pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN
             {
-            pushFollow(FOLLOW_pattern_type_in_fact3702);
+            pushFollow(FOLLOW_pattern_type_in_fact3648);
             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_fact3707); 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_fact3653); 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:1103:4: ( constraints )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1101:4: ( constraints )?
             int alt77=2;
             int LA77_0 = input.LA(1);
 
@@ -9968,85 +9738,88 @@
             }
             switch (alt77) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1103:4: constraints
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1101:4: constraints
                     {
-                    pushFollow(FOLLOW_constraints_in_fact3718);
+                    pushFollow(FOLLOW_constraints_in_fact3664);
                     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_fact3724); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN212);
+            RIGHT_PAREN212=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact3670); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN212);
 
-            if ( 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
             // 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();
-            // 1109:2: -> ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN )
+            // 1107:2: -> ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1109:5: ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1107:5: ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(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:1109:28: ( constraints )?
+                adaptor.addChild(root_1, stream_pattern_type.nextTree());
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1107:28: ( constraints )?
                 if ( stream_constraints.hasNext() ) {
-                    adaptor.addChild(root_1, stream_constraints.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);
@@ -10056,41 +9829,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:1119: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1117:1: constraints : constraint ( COMMA constraint )* ;
+    public final DRLParser.constraints_return constraints() throws RecognitionException {
+        DRLParser.constraints_return retval = new DRLParser.constraints_return();
         retval.start = input.LT(1);
 
         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:1120:2: ( constraint ( COMMA constraint )* )
-            // src/main/resources/org/drools/lang/DRL.g:1120:4: constraint ( COMMA constraint )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1118:2: ( constraint ( COMMA constraint )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1118:4: constraint ( COMMA constraint )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_constraint_in_constraints3758);
+            pushFollow(FOLLOW_constraint_in_constraints3704);
             constraint213=constraint();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, constraint213.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1120: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1118:15: ( COMMA constraint )*
             loop78:
             do {
                 int alt78=2;
@@ -10103,20 +9877,20 @@
 
                 switch (alt78) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1120:17: COMMA constraint
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1118:17: COMMA constraint
             	    {
-            	    COMMA214=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_constraints3762); if (failed) return retval;
-            	    if ( backtracking==0 ) {
+            	    COMMA214=(Token)match(input,COMMA,FOLLOW_COMMA_in_constraints3708); if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) {
             	      	emit(COMMA214, DroolsEditorType.SYMBOL);
             	      		emit(Location.LOCATION_LHS_INSIDE_CONDITION_START);	
             	    }
-            	    pushFollow(FOLLOW_constraint_in_constraints3769);
+            	    pushFollow(FOLLOW_constraint_in_constraints3715);
             	    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;
 
@@ -10130,102 +9904,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:1125: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1123:1: constraint : or_constr ;
+    public final DRLParser.constraint_return constraint() throws RecognitionException {
+        DRLParser.constraint_return retval = new DRLParser.constraint_return();
         retval.start = input.LT(1);
 
         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:1126:2: ( or_constr )
-            // src/main/resources/org/drools/lang/DRL.g:1126:4: or_constr
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1124:2: ( or_constr )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1124:4: or_constr
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_or_constr_in_constraint3783);
+            pushFollow(FOLLOW_or_constr_in_constraint3729);
             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:1129: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1127:1: or_constr : and_constr ( DOUBLE_PIPE and_constr )* ;
+    public final DRLParser.or_constr_return or_constr() throws RecognitionException {
+        DRLParser.or_constr_return retval = new DRLParser.or_constr_return();
         retval.start = input.LT(1);
 
         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:1130:2: ( and_constr ( DOUBLE_PIPE and_constr )* )
-            // src/main/resources/org/drools/lang/DRL.g:1130:4: and_constr ( DOUBLE_PIPE and_constr )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1128:2: ( and_constr ( DOUBLE_PIPE and_constr )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1128:4: and_constr ( DOUBLE_PIPE and_constr )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_and_constr_in_or_constr3794);
+            pushFollow(FOLLOW_and_constr_in_or_constr3740);
             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:1130: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1128:15: ( DOUBLE_PIPE and_constr )*
             loop79:
             do {
                 int alt79=2;
@@ -10238,23 +10020,23 @@
 
                 switch (alt79) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1130:17: DOUBLE_PIPE and_constr
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1128:17: DOUBLE_PIPE and_constr
             	    {
-            	    DOUBLE_PIPE218=(Token)input.LT(1);
-            	    match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_constr3798); if (failed) return retval;
-            	    if ( backtracking==0 ) {
+            	    DOUBLE_PIPE218=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_constr3744); if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) {
             	    DOUBLE_PIPE218_tree = (Object)adaptor.create(DOUBLE_PIPE218);
             	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_PIPE218_tree, root_0);
             	    }
-            	    if ( backtracking==0 ) {
+            	    if ( state.backtracking==0 ) {
             	      	emit(DOUBLE_PIPE218, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_and_constr_in_or_constr3805);
+            	    pushFollow(FOLLOW_and_constr_in_or_constr3751);
             	    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;
 
@@ -10268,54 +10050,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:1134: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1132:1: and_constr : unary_constr ( DOUBLE_AMPER unary_constr )* ;
+    public final DRLParser.and_constr_return and_constr() throws RecognitionException {
+        DRLParser.and_constr_return retval = new DRLParser.and_constr_return();
         retval.start = input.LT(1);
 
         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:1135:2: ( unary_constr ( DOUBLE_AMPER unary_constr )* )
-            // src/main/resources/org/drools/lang/DRL.g:1135:4: unary_constr ( DOUBLE_AMPER unary_constr )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1133:2: ( unary_constr ( DOUBLE_AMPER unary_constr )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1133:4: unary_constr ( DOUBLE_AMPER unary_constr )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_unary_constr_in_and_constr3820);
+            pushFollow(FOLLOW_unary_constr_in_and_constr3766);
             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:1135: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1133:17: ( DOUBLE_AMPER unary_constr )*
             loop80:
             do {
                 int alt80=2;
@@ -10328,23 +10114,23 @@
 
                 switch (alt80) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1135:19: DOUBLE_AMPER unary_constr
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1133:19: DOUBLE_AMPER unary_constr
             	    {
-            	    DOUBLE_AMPER221=(Token)input.LT(1);
-            	    match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_constr3824); if (failed) return retval;
-            	    if ( backtracking==0 ) {
+            	    DOUBLE_AMPER221=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_constr3770); if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) {
             	    DOUBLE_AMPER221_tree = (Object)adaptor.create(DOUBLE_AMPER221);
             	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_AMPER221_tree, root_0);
             	    }
-            	    if ( backtracking==0 ) {
+            	    if ( state.backtracking==0 ) {
             	      	emit(DOUBLE_AMPER221, DroolsEditorType.SYMBOL);;	
             	    }
-            	    pushFollow(FOLLOW_unary_constr_in_and_constr3831);
+            	    pushFollow(FOLLOW_unary_constr_in_and_constr3777);
             	    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;
 
@@ -10358,43 +10144,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:1139: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1137:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );
+    public final DRLParser.unary_constr_return unary_constr() throws RecognitionException {
+        DRLParser.unary_constr_return retval = new DRLParser.unary_constr_return();
         retval.start = input.LT(1);
 
         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;
@@ -10402,105 +10191,65 @@
 
          boolean isFailed = true;	
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1143:2: ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1141:2: ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN )
             int alt81=3;
-            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<=TILDE)||LA81_1==LEFT_SQUARE) ) {
-                    alt81=2;
-                }
-                else if ( (LA81_1==LEFT_PAREN) ) {
-                    int LA81_14 = 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("1139:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );", 81, 14, input);
-
-                        throw nvae;
-                    }
-                }
-                else {
-                    if (backtracking>0) {failed=true; return retval;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("1139: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("1139: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:1143:4: eval_key paren_chunk
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1141:4: eval_key paren_chunk
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_eval_key_in_unary_constr3864);
+                    pushFollow(FOLLOW_eval_key_in_unary_constr3810);
                     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_constr3867);
+
+                    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_constr3813);
                     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:1144:4: field_constraint
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1142:4: field_constraint
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_field_constraint_in_unary_constr3872);
+                    pushFollow(FOLLOW_field_constraint_in_unary_constr3818);
                     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:1145:5: LEFT_PAREN or_constr RIGHT_PAREN
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1143:5: LEFT_PAREN or_constr RIGHT_PAREN
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    LEFT_PAREN226=(Token)input.LT(1);
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_unary_constr3878); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    LEFT_PAREN226=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_unary_constr3824); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN226, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_or_constr_in_unary_constr3888);
+                    pushFollow(FOLLOW_or_constr_in_unary_constr3834);
                     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_constr3893); 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_constr3839); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     RIGHT_PAREN228_tree = (Object)adaptor.create(RIGHT_PAREN228);
                     adaptor.addChild(root_0, RIGHT_PAREN228_tree);
                     }
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(RIGHT_PAREN228, DroolsEditorType.SYMBOL);	
                     }
 
@@ -10510,17 +10259,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 {
              
@@ -10534,33 +10286,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:1158:1: field_constraint : ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) );
-    public final field_constraint_return field_constraint() throws RecognitionException {
-        field_constraint_return retval = new field_constraint_return();
+    // $ANTLR start "field_constraint"
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1156:1: field_constraint : ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) );
+    public final DRLParser.field_constraint_return field_constraint() throws RecognitionException {
+        DRLParser.field_constraint_return retval = new DRLParser.field_constraint_return();
         retval.start = input.LT(1);
 
         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;
@@ -10569,90 +10321,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:1161:3: ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1159:3: ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) )
             int alt83=2;
             int LA83_0 = input.LA(1);
 
             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<=TILDE)||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("1158:1: field_constraint : ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) );", 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("1158:1: field_constraint : ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) );", 83, 0, input);
+                    new NoViableAltException("", 83, 0, input);
 
                 throw nvae;
             }
             switch (alt83) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1161:5: label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )?
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1159:5: label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )?
                     {
-                    pushFollow(FOLLOW_label_in_field_constraint3913);
+                    pushFollow(FOLLOW_label_in_field_constraint3859);
                     label229=label();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_label.add(label229.getTree());
-                    pushFollow(FOLLOW_accessor_path_in_field_constraint3915);
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_label.add(label229.getTree());
+                    pushFollow(FOLLOW_accessor_path_in_field_constraint3861);
                     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:1162: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1160:3: ( or_restr_connective | arw= ARROW paren_chunk )?
                     int alt82=3;
                     int LA82_0 = input.LA(1);
 
-                    if ( (LA82_0==ID||LA82_0==LEFT_PAREN||(LA82_0>=EQUAL && LA82_0<=TILDE)) ) {
+                    if ( (LA82_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {
                         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:1162:5: or_restr_connective
+                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1160:5: or_restr_connective
                             {
-                            pushFollow(FOLLOW_or_restr_connective_in_field_constraint3922);
+                            pushFollow(FOLLOW_or_restr_connective_in_field_constraint3868);
                             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:1162:27: arw= ARROW paren_chunk
+                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1160:27: arw= ARROW paren_chunk
                             {
-                            arw=(Token)input.LT(1);
-                            match(input,ARROW,FOLLOW_ARROW_in_field_constraint3928); if (failed) return retval;
-                            if ( backtracking==0 ) stream_ARROW.add(arw);
+                            arw=(Token)match(input,ARROW,FOLLOW_ARROW_in_field_constraint3874); 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_constraint3932);
+                            pushFollow(FOLLOW_paren_chunk_in_field_constraint3878);
                             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;
                             }
 
@@ -10662,45 +10420,46 @@
                     }
 
 
+
                     // AST REWRITE
-                    // elements: label, accessor_path, or_restr_connective, accessor_path, label, paren_chunk
+                    // elements: paren_chunk, label, accessor_path, accessor_path, or_restr_connective, label
                     // 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();
-                    // 1163:3: -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )?
+                    // 1161:3: -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )?
                     if (isArrow) {
-                        // src/main/resources/org/drools/lang/DRL.g:1163:17: ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) )
+                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1161:17: ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) )
                         {
                         Object root_1 = (Object)adaptor.nil();
-                        root_1 = (Object)adaptor.becomeRoot(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:1163:39: ^( VT_FIELD accessor_path )
+                        adaptor.addChild(root_1, stream_label.nextTree());
+                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1161:39: ^( VT_FIELD accessor_path )
                         {
                         Object root_2 = (Object)adaptor.nil();
-                        root_2 = (Object)adaptor.becomeRoot(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:1163:66: ( ^( VK_EVAL[$arw] paren_chunk ) )?
+                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1161:66: ( ^( VK_EVAL[$arw] paren_chunk ) )?
                         if ( stream_paren_chunk.hasNext() ) {
-                            // src/main/resources/org/drools/lang/DRL.g:1163:66: ^( VK_EVAL[$arw] paren_chunk )
+                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1161:66: ^( VK_EVAL[$arw] paren_chunk )
                             {
                             Object root_1 = (Object)adaptor.nil();
-                            root_1 = (Object)adaptor.becomeRoot(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);
                             }
@@ -10709,23 +10468,23 @@
                         stream_paren_chunk.reset();
 
                     }
-                    else // 1164:3: -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) )
+                    else // 1162:3: -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) )
                     {
-                        // src/main/resources/org/drools/lang/DRL.g:1164:6: ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) )
+                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1162:6: ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) )
                         {
                         Object root_1 = (Object)adaptor.nil();
-                        root_1 = (Object)adaptor.becomeRoot(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:1164:28: ^( VT_FIELD accessor_path ( or_restr_connective )? )
+                        adaptor.addChild(root_1, stream_label.nextTree());
+                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1162:28: ^( VT_FIELD accessor_path ( or_restr_connective )? )
                         {
                         Object root_2 = (Object)adaptor.nil();
-                        root_2 = (Object)adaptor.becomeRoot(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:1164:53: ( or_restr_connective )?
+                        adaptor.addChild(root_2, stream_accessor_path.nextTree());
+                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1162:53: ( or_restr_connective )?
                         if ( stream_or_restr_connective.hasNext() ) {
-                            adaptor.addChild(root_2, stream_or_restr_connective.next());
+                            adaptor.addChild(root_2, stream_or_restr_connective.nextTree());
 
                         }
                         stream_or_restr_connective.reset();
@@ -10738,82 +10497,86 @@
 
                     }
 
+                    retval.tree = root_0;}
                     }
-
-                    }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1165:4: accessor_path or_restr_connective
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1163:4: accessor_path or_restr_connective
                     {
-                    pushFollow(FOLLOW_accessor_path_in_field_constraint3986);
+                    pushFollow(FOLLOW_accessor_path_in_field_constraint3932);
                     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_constraint3988);
+
+                    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_constraint3934);
                     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: 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();
-                    // 1166:3: -> ^( VT_FIELD accessor_path or_restr_connective )
+                    // 1164:3: -> ^( VT_FIELD accessor_path or_restr_connective )
                     {
-                        // src/main/resources/org/drools/lang/DRL.g:1166:6: ^( VT_FIELD accessor_path or_restr_connective )
+                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1164:6: ^( VT_FIELD accessor_path or_restr_connective )
                         {
                         Object root_1 = (Object)adaptor.nil();
-                        root_1 = (Object)adaptor.becomeRoot(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:1169: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1167:1: label : value= ID COLON -> VT_LABEL[$value] ;
+    public final DRLParser.label_return label() throws RecognitionException {
+        DRLParser.label_return retval = new DRLParser.label_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -10827,122 +10590,136 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1170:2: (value= ID COLON -> VT_LABEL[$value] )
-            // src/main/resources/org/drools/lang/DRL.g:1170:4: value= ID COLON
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1168:2: (value= ID COLON -> VT_LABEL[$value] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1168:4: value= ID COLON
             {
-            value=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_label4013); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(value);
+            value=(Token)match(input,ID,FOLLOW_ID_in_label3959); 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_label4020); if (failed) return retval;
-            if ( backtracking==0 ) stream_COLON.add(COLON235);
+            COLON235=(Token)match(input,COLON,FOLLOW_COLON_in_label3966); 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();
-            // 1172:3: -> VT_LABEL[$value]
+            // 1170: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:1175: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1173:1: or_restr_connective : and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )* ;
+    public final DRLParser.or_restr_connective_return or_restr_connective() throws RecognitionException {
+        DRLParser.or_restr_connective_return retval = new DRLParser.or_restr_connective_return();
         retval.start = input.LT(1);
 
         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:1176:2: ( and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )* )
-            // src/main/resources/org/drools/lang/DRL.g:1176:4: and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1174:2: ( and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1174:4: and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective4041);
+            pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective3987);
             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:1176: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1174: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:1176:26: {...}? => DOUBLE_PIPE and_restr_connective
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1174:26: {...}? => DOUBLE_PIPE and_restr_connective
             	    {
-            	    if ( !((validateRestr())) ) {
-            	        if (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_connective4047); if (failed) return retval;
-            	    if ( backtracking==0 ) {
+            	    DOUBLE_PIPE237=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_restr_connective3993); if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) {
             	    DOUBLE_PIPE237_tree = (Object)adaptor.create(DOUBLE_PIPE237);
             	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_PIPE237_tree, root_0);
             	    }
-            	    if ( backtracking==0 ) {
+            	    if ( state.backtracking==0 ) {
             	      	emit(DOUBLE_PIPE237, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective4055);
+            	    pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective4001);
             	    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;
 
@@ -10956,81 +10733,102 @@
 
             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);
+        catch ( RecognitionException re ) {
+
+            	if (!lookaheadTest){
+                    reportError(re);
+                    recover(input,re);
+                	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+            	} else {
+            		throw 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:1180: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1187:1: and_restr_connective : constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* ;
+    public final DRLParser.and_restr_connective_return and_restr_connective() throws RecognitionException {
+        DRLParser.and_restr_connective_return retval = new DRLParser.and_restr_connective_return();
         retval.start = input.LT(1);
 
         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:1181:2: ( constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* )
-            // src/main/resources/org/drools/lang/DRL.g:1181:4: constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1188:2: ( constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1188:4: constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_constraint_expression_in_and_restr_connective4070);
+            pushFollow(FOLLOW_constraint_expression_in_and_restr_connective4022);
             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:1181: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1188: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:1181:27: {...}? => DOUBLE_AMPER constraint_expression
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1188:27: {...}? => DOUBLE_AMPER constraint_expression
             	    {
-            	    if ( !((validateRestr())) ) {
-            	        if (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_connective4076); if (failed) return retval;
-            	    if ( backtracking==0 ) {
+            	    DOUBLE_AMPER240=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_restr_connective4028); if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) {
             	    DOUBLE_AMPER240_tree = (Object)adaptor.create(DOUBLE_AMPER240);
             	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_AMPER240_tree, root_0);
             	    }
-            	    if ( backtracking==0 ) {
+            	    if ( state.backtracking==0 ) {
             	      	emit(DOUBLE_AMPER240, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_constraint_expression_in_and_restr_connective4083);
+            	    pushFollow(FOLLOW_constraint_expression_in_and_restr_connective4035);
             	    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;
 
@@ -11044,444 +10842,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);
+        catch ( RecognitionException re ) {
+
+            	if (!lookaheadTest){
+                    reportError(re);
+                    recover(input,re);
+                	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+            	} else {
+            		throw 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:1185: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1201:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );
+    public final DRLParser.constraint_expression_return constraint_expression() throws RecognitionException {
+        DRLParser.constraint_expression_return retval = new DRLParser.constraint_expression_return();
         retval.start = input.LT(1);
 
         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:1188:3: ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1204:3: ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN )
             int alt86=3;
-            switch ( input.LA(1) ) {
-            case ID:
-                {
-                int LA86_1 = input.LA(2);
-
-                if ( (LA86_1==ID) ) {
-                    int LA86_10 = input.LA(3);
-
-                    if ( (LA86_10==ID||LA86_10==STRING||(LA86_10>=BOOL && LA86_10<=INT)||(LA86_10>=FLOAT && LA86_10<=NULL)) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
-                        alt86=2;
-                    }
-                    else if ( (LA86_10==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
-                        int LA86_24 = 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("1185:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 86, 24, input);
-
-                            throw nvae;
-                        }
-                    }
-                    else if ( (LA86_10==DOT||(LA86_10>=COMMA && LA86_10<=RIGHT_PAREN)||(LA86_10>=DOUBLE_PIPE && LA86_10<=DOUBLE_AMPER)||LA86_10==LEFT_SQUARE) ) {
-                        alt86=2;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return retval;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("1185:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 86, 10, input);
-
-                        throw nvae;
-                    }
-                }
-                else if ( (LA86_1==STRING||(LA86_1>=BOOL && LA86_1<=INT)||(LA86_1>=FLOAT && LA86_1<=NULL)) ) {
-                    alt86=2;
-                }
-                else if ( (LA86_1==LEFT_PAREN) ) {
-                    switch ( input.LA(3) ) {
-                    case ID:
-                        {
-                        int LA86_31 = input.LA(4);
-
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
-                            alt86=1;
-                        }
-                        else if ( (true) ) {
-                            alt86=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return retval;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("1185:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 86, 31, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    case LEFT_PAREN:
-                        {
-                        int LA86_32 = input.LA(4);
-
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
-                            alt86=1;
-                        }
-                        else if ( (true) ) {
-                            alt86=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return retval;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("1185:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 86, 32, 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 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 TILDE:
-                    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 SH_STYLE_SINGLE_LINE_COMMENT:
-                    case C_STYLE_SINGLE_LINE_COMMENT:
-                    case MULTI_LINE_COMMENT:
-                        {
-                        alt86=2;
-                        }
-                        break;
-                    case STRING:
-                        {
-                        int LA86_34 = input.LA(4);
-
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
-                            alt86=1;
-                        }
-                        else if ( (true) ) {
-                            alt86=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return retval;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("1185:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 86, 34, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    case INT:
-                        {
-                        int LA86_35 = input.LA(4);
-
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
-                            alt86=1;
-                        }
-                        else if ( (true) ) {
-                            alt86=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return retval;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("1185:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 86, 35, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    case FLOAT:
-                        {
-                        int LA86_36 = input.LA(4);
-
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
-                            alt86=1;
-                        }
-                        else if ( (true) ) {
-                            alt86=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return retval;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("1185:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 86, 36, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    case BOOL:
-                        {
-                        int LA86_37 = input.LA(4);
-
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
-                            alt86=1;
-                        }
-                        else if ( (true) ) {
-                            alt86=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return retval;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("1185:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 86, 37, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    case NULL:
-                        {
-                        int LA86_38 = input.LA(4);
-
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
-                            alt86=1;
-                        }
-                        else if ( (true) ) {
-                            alt86=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return retval;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("1185:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 86, 38, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
-                    default:
-                        if (backtracking>0) {failed=true; return retval;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("1185:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 86, 16, input);
-
-                        throw nvae;
-                    }
-
-                }
-                else if ( (LA86_1==TILDE) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
-                    alt86=2;
-                }
-                else {
-                    if (backtracking>0) {failed=true; return retval;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("1185: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:
-            case TILDE:
-                {
-                alt86=2;
-                }
-                break;
-            case LEFT_PAREN:
-                {
-                alt86=3;
-                }
-                break;
-            default:
-                if (backtracking>0) {failed=true; return retval;}
-                NoViableAltException nvae =
-                    new NoViableAltException("1185: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:1188:5: compound_operator
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1204:5: compound_operator
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_compound_operator_in_constraint_expression4105);
+                    pushFollow(FOLLOW_compound_operator_in_constraint_expression4063);
                     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:1189:4: simple_operator
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1205:4: simple_operator
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_simple_operator_in_constraint_expression4110);
+                    pushFollow(FOLLOW_simple_operator_in_constraint_expression4068);
                     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:1190:4: LEFT_PAREN or_restr_connective RIGHT_PAREN
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1206:4: LEFT_PAREN or_restr_connective RIGHT_PAREN
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    LEFT_PAREN244=(Token)input.LT(1);
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_constraint_expression4115); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    LEFT_PAREN244=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_constraint_expression4073); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN244, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_or_restr_connective_in_constraint_expression4124);
+                    pushFollow(FOLLOW_or_restr_connective_in_constraint_expression4082);
                     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_expression4129); 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_expression4087); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     RIGHT_PAREN246_tree = (Object)adaptor.create(RIGHT_PAREN246);
                     adaptor.addChild(root_0, RIGHT_PAREN246_tree);
                     }
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(RIGHT_PAREN246, DroolsEditorType.SYMBOL);	
                     }
 
@@ -11491,23 +10953,25 @@
             }
             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);
+                    reportError(re);
+                    recover(input,re);
+                	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), 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);
@@ -11542,66 +11006,36 @@
         }
         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:1235:1: simple_operator : ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= TILDE id2= ID square_chunk ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | id3= ID | ga2= TILDE id4= ID 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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1252:1: simple_operator : ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( operator_key ( square_chunk )? ) ) expression_value ;
+    public final DRLParser.simple_operator_return simple_operator() throws RecognitionException {
+        DRLParser.simple_operator_return retval = new DRLParser.simple_operator_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token id1=null;
-        Token ga1=null;
-        Token id2=null;
-        Token id3=null;
-        Token ga2=null;
-        Token id4=null;
         Token EQUAL247=null;
         Token GREATER248=null;
         Token GREATER_EQUAL249=null;
         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.operator_key_return operator_key254 = null;
 
-        soundslike_key_return soundslike_key255 = null;
+        DRLParser.square_chunk_return square_chunk255 = null;
 
-        matches_key_return matches_key256 = null;
+        DRLParser.expression_value_return expression_value256 = null;
 
-        memberof_key_return memberof_key257 = null;
 
-        square_chunk_return square_chunk258 = null;
-
-        contains_key_return contains_key259 = null;
-
-        excludes_key_return excludes_key260 = null;
-
-        matches_key_return matches_key261 = null;
-
-        soundslike_key_return soundslike_key262 = null;
-
-        memberof_key_return memberof_key263 = null;
-
-        square_chunk_return square_chunk264 = null;
-
-        expression_value_return expression_value265 = null;
-
-
-        Object id1_tree=null;
-        Object ga1_tree=null;
-        Object id2_tree=null;
-        Object id3_tree=null;
-        Object ga2_tree=null;
-        Object id4_tree=null;
         Object EQUAL247_tree=null;
         Object GREATER248_tree=null;
         Object GREATER_EQUAL249_tree=null;
@@ -11609,317 +11043,187 @@
         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:1236:2: ( ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= TILDE id2= ID square_chunk ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | id3= ID | ga2= TILDE id4= ID square_chunk ) expression_value )
-            // src/main/resources/org/drools/lang/DRL.g:1236:4: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= TILDE id2= ID square_chunk ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | id3= ID | ga2= TILDE id4= ID square_chunk ) expression_value
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1254:2: ( ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( operator_key ( square_chunk )? ) ) expression_value )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1255:2: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( operator_key ( square_chunk )? ) ) expression_value
             {
             root_0 = (Object)adaptor.nil();
 
-            if ( backtracking==0 ) {
-              	emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);	
-            }
-            // src/main/resources/org/drools/lang/DRL.g:1237:3: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= TILDE id2= ID square_chunk ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | id3= ID | ga2= TILDE id4= ID square_chunk )
-            int alt88=14;
-            switch ( input.LA(1) ) {
-            case EQUAL:
-                {
-                alt88=1;
-                }
-                break;
-            case GREATER:
-                {
-                alt88=2;
-                }
-                break;
-            case GREATER_EQUAL:
-                {
-                alt88=3;
-                }
-                break;
-            case LESS:
-                {
-                alt88=4;
-                }
-                break;
-            case LESS_EQUAL:
-                {
-                alt88=5;
-                }
-                break;
-            case NOT_EQUAL:
-                {
-                alt88=6;
-                }
-                break;
-            case ID:
-                {
-                int LA88_7 = input.LA(2);
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1255:2: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( operator_key ( square_chunk )? ) )
+            int alt89=7;
+            int LA89_0 = input.LA(1);
 
-                if ( (LA88_7==ID||LA88_7==TILDE) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
-                    alt88=7;
-                }
-                else if ( ((validateIdentifierKey(DroolsSoftKeywords.CONTAINS))) ) {
-                    alt88=8;
-                }
-                else if ( ((validateIdentifierKey(DroolsSoftKeywords.EXCLUDES))) ) {
-                    alt88=9;
-                }
-                else if ( ((validateIdentifierKey(DroolsSoftKeywords.MATCHES))) ) {
-                    alt88=10;
-                }
-                else if ( ((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE))) ) {
-                    alt88=11;
-                }
-                else if ( ((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF))) ) {
-                    alt88=12;
-                }
-                else if ( (true) ) {
-                    alt88=13;
-                }
-                else {
-                    if (backtracking>0) {failed=true; return retval;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("1237:3: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= TILDE id2= ID square_chunk ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | id3= ID | ga2= TILDE id4= ID square_chunk )", 88, 7, input);
-
-                    throw nvae;
-                }
-                }
-                break;
-            case TILDE:
-                {
-                alt88=14;
-                }
-                break;
-            default:
-                if (backtracking>0) {failed=true; return retval;}
+            if ( (LA89_0==EQUAL) ) {
+                alt89=1;
+            }
+            else if ( (LA89_0==GREATER) ) {
+                alt89=2;
+            }
+            else if ( (LA89_0==GREATER_EQUAL) ) {
+                alt89=3;
+            }
+            else if ( (LA89_0==LESS) ) {
+                alt89=4;
+            }
+            else if ( (LA89_0==LESS_EQUAL) ) {
+                alt89=5;
+            }
+            else if ( (LA89_0==NOT_EQUAL) ) {
+                alt89=6;
+            }
+            else if ( (LA89_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {
+                alt89=7;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1237:3: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= TILDE id2= ID square_chunk ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | id3= ID | ga2= TILDE id4= ID 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:1237:4: EQUAL
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1256:3: EQUAL
                     {
-                    EQUAL247=(Token)input.LT(1);
-                    match(input,EQUAL,FOLLOW_EQUAL_in_simple_operator4158); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    EQUAL247=(Token)match(input,EQUAL,FOLLOW_EQUAL_in_simple_operator4122); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     EQUAL247_tree = (Object)adaptor.create(EQUAL247);
                     root_0 = (Object)adaptor.becomeRoot(EQUAL247_tree, root_0);
                     }
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(EQUAL247, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1238:4: GREATER
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1257:4: GREATER
                     {
-                    GREATER248=(Token)input.LT(1);
-                    match(input,GREATER,FOLLOW_GREATER_in_simple_operator4166); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    GREATER248=(Token)match(input,GREATER,FOLLOW_GREATER_in_simple_operator4130); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     GREATER248_tree = (Object)adaptor.create(GREATER248);
                     root_0 = (Object)adaptor.becomeRoot(GREATER248_tree, root_0);
                     }
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(GREATER248, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1239:4: GREATER_EQUAL
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1258:4: GREATER_EQUAL
                     {
-                    GREATER_EQUAL249=(Token)input.LT(1);
-                    match(input,GREATER_EQUAL,FOLLOW_GREATER_EQUAL_in_simple_operator4174); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    GREATER_EQUAL249=(Token)match(input,GREATER_EQUAL,FOLLOW_GREATER_EQUAL_in_simple_operator4138); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     GREATER_EQUAL249_tree = (Object)adaptor.create(GREATER_EQUAL249);
                     root_0 = (Object)adaptor.becomeRoot(GREATER_EQUAL249_tree, root_0);
                     }
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(GREATER_EQUAL249, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DRL.g:1240:4: LESS
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1259:4: LESS
                     {
-                    LESS250=(Token)input.LT(1);
-                    match(input,LESS,FOLLOW_LESS_in_simple_operator4182); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    LESS250=(Token)match(input,LESS,FOLLOW_LESS_in_simple_operator4146); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     LESS250_tree = (Object)adaptor.create(LESS250);
                     root_0 = (Object)adaptor.becomeRoot(LESS250_tree, root_0);
                     }
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(LESS250, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/lang/DRL.g:1241:4: LESS_EQUAL
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1260:4: LESS_EQUAL
                     {
-                    LESS_EQUAL251=(Token)input.LT(1);
-                    match(input,LESS_EQUAL,FOLLOW_LESS_EQUAL_in_simple_operator4190); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    LESS_EQUAL251=(Token)match(input,LESS_EQUAL,FOLLOW_LESS_EQUAL_in_simple_operator4154); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     LESS_EQUAL251_tree = (Object)adaptor.create(LESS_EQUAL251);
                     root_0 = (Object)adaptor.becomeRoot(LESS_EQUAL251_tree, root_0);
                     }
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(LESS_EQUAL251, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 6 :
-                    // src/main/resources/org/drools/lang/DRL.g:1242:4: NOT_EQUAL
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1261:4: NOT_EQUAL
                     {
-                    NOT_EQUAL252=(Token)input.LT(1);
-                    match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_simple_operator4198); if (failed) return retval;
-                    if ( backtracking==0 ) {
+                    NOT_EQUAL252=(Token)match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_simple_operator4162); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
                     NOT_EQUAL252_tree = (Object)adaptor.create(NOT_EQUAL252);
                     root_0 = (Object)adaptor.becomeRoot(NOT_EQUAL252_tree, root_0);
                     }
-                    if ( backtracking==0 ) {
+                    if ( state.backtracking==0 ) {
                       	emit(NOT_EQUAL252, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 7 :
-                    // src/main/resources/org/drools/lang/DRL.g:1243:4: not_key ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= TILDE id2= ID square_chunk )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1262:4: ( not_key )? ( operator_key ( square_chunk )? )
                     {
-                    pushFollow(FOLLOW_not_key_in_simple_operator4206);
-                    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:1244:3: ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= TILDE id2= ID square_chunk )
-                    int alt87=6;
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1262:4: ( not_key )?
+                    int alt87=2;
                     int LA87_0 = input.LA(1);
 
-                    if ( (LA87_0==ID) ) {
+                    if ( (LA87_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {
                         int LA87_1 = input.LA(2);
 
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.CONTAINS))) ) {
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {
                             alt87=1;
                         }
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE))) ) {
-                            alt87=2;
-                        }
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.MATCHES))) ) {
-                            alt87=3;
-                        }
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF))) ) {
-                            alt87=4;
-                        }
-                        else if ( (true) ) {
-                            alt87=5;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return retval;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("1244:3: ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= TILDE id2= ID square_chunk )", 87, 1, input);
-
-                            throw nvae;
-                        }
                     }
-                    else if ( (LA87_0==TILDE) ) {
-                        alt87=6;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return retval;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("1244:3: ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= TILDE id2= ID square_chunk )", 87, 0, input);
-
-                        throw nvae;
-                    }
                     switch (alt87) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DRL.g:1244:5: contains_key
+                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1262:4: not_key
                             {
-                            pushFollow(FOLLOW_contains_key_in_simple_operator4213);
-                            contains_key254=contains_key();
-                            _fsp--;
-                            if (failed) return retval;
-                            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(contains_key254.getTree(), root_0);
+                            pushFollow(FOLLOW_not_key_in_simple_operator4170);
+                            not_key253=not_key();
 
-                            }
-                            break;
-                        case 2 :
-                            // src/main/resources/org/drools/lang/DRL.g:1245:5: soundslike_key
-                            {
-                            pushFollow(FOLLOW_soundslike_key_in_simple_operator4220);
-                            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 ) adaptor.addChild(root_0, not_key253.getTree());
 
                             }
                             break;
-                        case 3 :
-                            // src/main/resources/org/drools/lang/DRL.g:1246:5: matches_key
-                            {
-                            pushFollow(FOLLOW_matches_key_in_simple_operator4227);
-                            matches_key256=matches_key();
-                            _fsp--;
-                            if (failed) return retval;
-                            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(matches_key256.getTree(), root_0);
 
-                            }
-                            break;
-                        case 4 :
-                            // src/main/resources/org/drools/lang/DRL.g:1247:5: memberof_key
-                            {
-                            pushFollow(FOLLOW_memberof_key_in_simple_operator4234);
-                            memberof_key257=memberof_key();
-                            _fsp--;
-                            if (failed) return retval;
-                            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(memberof_key257.getTree(), root_0);
+                    }
 
-                            }
-                            break;
-                        case 5 :
-                            // src/main/resources/org/drools/lang/DRL.g:1248:5: id1= ID
-                            {
-                            id1=(Token)input.LT(1);
-                            match(input,ID,FOLLOW_ID_in_simple_operator4243); if (failed) return retval;
-                            if ( backtracking==0 ) {
-                            id1_tree = (Object)adaptor.create(id1);
-                            root_0 = (Object)adaptor.becomeRoot(id1_tree, root_0);
-                            }
-                            if ( backtracking==0 ) {
-                              	emit(id1, DroolsEditorType.IDENTIFIER);	
-                            }
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1263:3: ( operator_key ( square_chunk )? )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1263:5: operator_key ( square_chunk )?
+                    {
+                    pushFollow(FOLLOW_operator_key_in_simple_operator4177);
+                    operator_key254=operator_key();
 
-                            }
-                            break;
-                        case 6 :
-                            // src/main/resources/org/drools/lang/DRL.g:1249:5: ga1= TILDE id2= ID square_chunk
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(operator_key254.getTree(), root_0);
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1263:19: ( square_chunk )?
+                    int alt88=2;
+                    int LA88_0 = input.LA(1);
+
+                    if ( (LA88_0==LEFT_SQUARE) ) {
+                        alt88=1;
+                    }
+                    switch (alt88) {
+                        case 1 :
+                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1263:19: square_chunk
                             {
-                            ga1=(Token)input.LT(1);
-                            match(input,TILDE,FOLLOW_TILDE_in_simple_operator4254); if (failed) return retval;
-                            if ( backtracking==0 ) {
-                              	emit(ga1, DroolsEditorType.SYMBOL);	
-                            }
-                            id2=(Token)input.LT(1);
-                            match(input,ID,FOLLOW_ID_in_simple_operator4262); if (failed) return retval;
-                            if ( backtracking==0 ) {
-                            id2_tree = (Object)adaptor.create(id2);
-                            root_0 = (Object)adaptor.becomeRoot(id2_tree, root_0);
-                            }
-                            if ( backtracking==0 ) {
-                              	emit(id2, DroolsEditorType.IDENTIFIER);	
-                            }
-                            pushFollow(FOLLOW_square_chunk_in_simple_operator4268);
-                            square_chunk258=square_chunk();
-                            _fsp--;
-                            if (failed) return retval;
-                            if ( backtracking==0 ) adaptor.addChild(root_0, square_chunk258.getTree());
+                            pushFollow(FOLLOW_square_chunk_in_simple_operator4180);
+                            square_chunk255=square_chunk();
 
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) adaptor.addChild(root_0, square_chunk255.getTree());
+
                             }
                             break;
 
@@ -11927,289 +11231,201 @@
 
 
                     }
-                    break;
-                case 8 :
-                    // src/main/resources/org/drools/lang/DRL.g:1250:4: contains_key
-                    {
-                    pushFollow(FOLLOW_contains_key_in_simple_operator4274);
-                    contains_key259=contains_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(contains_key259.getTree(), root_0);
 
-                    }
-                    break;
-                case 9 :
-                    // src/main/resources/org/drools/lang/DRL.g:1251:4: excludes_key
-                    {
-                    pushFollow(FOLLOW_excludes_key_in_simple_operator4280);
-                    excludes_key260=excludes_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(excludes_key260.getTree(), root_0);
 
                     }
                     break;
-                case 10 :
-                    // src/main/resources/org/drools/lang/DRL.g:1252:4: matches_key
-                    {
-                    pushFollow(FOLLOW_matches_key_in_simple_operator4286);
-                    matches_key261=matches_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(matches_key261.getTree(), root_0);
 
-                    }
-                    break;
-                case 11 :
-                    // src/main/resources/org/drools/lang/DRL.g:1253:4: soundslike_key
-                    {
-                    pushFollow(FOLLOW_soundslike_key_in_simple_operator4292);
-                    soundslike_key262=soundslike_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(soundslike_key262.getTree(), root_0);
-
-                    }
-                    break;
-                case 12 :
-                    // src/main/resources/org/drools/lang/DRL.g:1254:4: memberof_key
-                    {
-                    pushFollow(FOLLOW_memberof_key_in_simple_operator4298);
-                    memberof_key263=memberof_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(memberof_key263.getTree(), root_0);
-
-                    }
-                    break;
-                case 13 :
-                    // src/main/resources/org/drools/lang/DRL.g:1255:4: id3= ID
-                    {
-                    id3=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_simple_operator4306); if (failed) return retval;
-                    if ( backtracking==0 ) {
-                    id3_tree = (Object)adaptor.create(id3);
-                    root_0 = (Object)adaptor.becomeRoot(id3_tree, root_0);
-                    }
-                    if ( backtracking==0 ) {
-                      	emit(id3, DroolsEditorType.IDENTIFIER);	
-                    }
-
-                    }
-                    break;
-                case 14 :
-                    // src/main/resources/org/drools/lang/DRL.g:1256:4: ga2= TILDE id4= ID square_chunk
-                    {
-                    ga2=(Token)input.LT(1);
-                    match(input,TILDE,FOLLOW_TILDE_in_simple_operator4316); if (failed) return retval;
-                    if ( backtracking==0 ) {
-                      	emit(ga2, DroolsEditorType.SYMBOL);	
-                    }
-                    id4=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_simple_operator4324); if (failed) return retval;
-                    if ( backtracking==0 ) {
-                    id4_tree = (Object)adaptor.create(id4);
-                    root_0 = (Object)adaptor.becomeRoot(id4_tree, root_0);
-                    }
-                    if ( backtracking==0 ) {
-                      	emit(id4, DroolsEditorType.IDENTIFIER);	
-                    }
-                    pushFollow(FOLLOW_square_chunk_in_simple_operator4330);
-                    square_chunk264=square_chunk();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, square_chunk264.getTree());
-
-                    }
-                    break;
-
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);	
             }
-            pushFollow(FOLLOW_expression_value_in_simple_operator4337);
-            expression_value265=expression_value();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, expression_value265.getTree());
+            pushFollow(FOLLOW_expression_value_in_simple_operator4192);
+            expression_value256=expression_value();
 
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, expression_value256.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:1262: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1270:1: compound_operator : ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN ;
+    public final DRLParser.compound_operator_return compound_operator() throws RecognitionException {
+        DRLParser.compound_operator_return retval = new DRLParser.compound_operator_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_PAREN269=null;
-        Token COMMA271=null;
-        Token RIGHT_PAREN273=null;
-        in_key_return in_key266 = null;
+        Token LEFT_PAREN260=null;
+        Token COMMA262=null;
+        Token RIGHT_PAREN264=null;
+        DRLParser.in_key_return in_key257 = null;
 
-        not_key_return not_key267 = null;
+        DRLParser.not_key_return not_key258 = null;
 
-        in_key_return in_key268 = null;
+        DRLParser.in_key_return in_key259 = null;
 
-        expression_value_return expression_value270 = null;
+        DRLParser.expression_value_return expression_value261 = null;
 
-        expression_value_return expression_value272 = null;
+        DRLParser.expression_value_return expression_value263 = null;
 
 
-        Object LEFT_PAREN269_tree=null;
-        Object COMMA271_tree=null;
-        Object RIGHT_PAREN273_tree=null;
+        Object LEFT_PAREN260_tree=null;
+        Object COMMA262_tree=null;
+        Object RIGHT_PAREN264_tree=null;
 
+         if ( state.backtracking==0 ) emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1263:2: ( ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN )
-            // src/main/resources/org/drools/lang/DRL.g:1263:4: ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1272:2: ( ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1273:2: ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN
             {
             root_0 = (Object)adaptor.nil();
 
-            if ( backtracking==0 ) {
-              	emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);	
-            }
-            // src/main/resources/org/drools/lang/DRL.g:1264:2: ( in_key | not_key in_key )
-            int alt89=2;
-            int LA89_0 = input.LA(1);
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1273:2: ( in_key | not_key in_key )
+            int alt90=2;
+            int LA90_0 = input.LA(1);
 
-            if ( (LA89_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IN))||(validateIdentifierKey(DroolsSoftKeywords.NOT))))) {
-                int LA89_1 = input.LA(2);
+            if ( (LA90_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((validateIdentifierKey(DroolsSoftKeywords.IN)))))) {
+                int LA90_1 = input.LA(2);
 
-                if ( (LA89_1==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.IN)))) {
-                    alt89=1;
+                if ( (LA90_1==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.IN))))) {
+                    alt90=1;
                 }
-                else if ( (LA89_1==ID) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
-                    alt89=2;
+                else if ( (LA90_1==ID) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {
+                    alt90=2;
                 }
                 else {
-                    if (backtracking>0) {failed=true; return retval;}
+                    if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1264:2: ( in_key | not_key in_key )", 89, 1, input);
+                        new NoViableAltException("", 90, 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("1264:2: ( in_key | not_key in_key )", 89, 0, input);
+                    new NoViableAltException("", 90, 0, input);
 
                 throw nvae;
             }
-            switch (alt89) {
+            switch (alt90) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1264:4: in_key
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1273:4: in_key
                     {
-                    pushFollow(FOLLOW_in_key_in_compound_operator4355);
-                    in_key266=in_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key266.getTree(), root_0);
+                    pushFollow(FOLLOW_in_key_in_compound_operator4214);
+                    in_key257=in_key();
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key257.getTree(), root_0);
+
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1264:14: not_key in_key
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1273:14: not_key in_key
                     {
-                    pushFollow(FOLLOW_not_key_in_compound_operator4360);
-                    not_key267=not_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, not_key267.getTree());
-                    pushFollow(FOLLOW_in_key_in_compound_operator4362);
-                    in_key268=in_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key268.getTree(), root_0);
+                    pushFollow(FOLLOW_not_key_in_compound_operator4219);
+                    not_key258=not_key();
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, not_key258.getTree());
+                    pushFollow(FOLLOW_in_key_in_compound_operator4221);
+                    in_key259=in_key();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key259.getTree(), root_0);
+
                     }
                     break;
 
             }
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);	
             }
-            LEFT_PAREN269=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_compound_operator4373); if (failed) return retval;
-            if ( backtracking==0 ) {
-              	emit(LEFT_PAREN269, DroolsEditorType.SYMBOL);	
+            LEFT_PAREN260=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_compound_operator4232); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+              	emit(LEFT_PAREN260, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_expression_value_in_compound_operator4381);
-            expression_value270=expression_value();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, expression_value270.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1267:21: ( COMMA expression_value )*
-            loop90:
+            pushFollow(FOLLOW_expression_value_in_compound_operator4240);
+            expression_value261=expression_value();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, expression_value261.getTree());
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1276:21: ( COMMA expression_value )*
+            loop91:
             do {
-                int alt90=2;
-                int LA90_0 = input.LA(1);
+                int alt91=2;
+                int LA91_0 = input.LA(1);
 
-                if ( (LA90_0==COMMA) ) {
-                    alt90=1;
+                if ( (LA91_0==COMMA) ) {
+                    alt91=1;
                 }
 
 
-                switch (alt90) {
+                switch (alt91) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1267:23: COMMA expression_value
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1276:23: COMMA expression_value
             	    {
-            	    COMMA271=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_compound_operator4385); if (failed) return retval;
-            	    if ( backtracking==0 ) {
-            	      	emit(COMMA271, DroolsEditorType.SYMBOL);	
+            	    COMMA262=(Token)match(input,COMMA,FOLLOW_COMMA_in_compound_operator4244); if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) {
+            	      	emit(COMMA262, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_expression_value_in_compound_operator4390);
-            	    expression_value272=expression_value();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, expression_value272.getTree());
+            	    pushFollow(FOLLOW_expression_value_in_compound_operator4249);
+            	    expression_value263=expression_value();
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, expression_value263.getTree());
+
             	    }
             	    break;
 
             	default :
-            	    break loop90;
+            	    break loop91;
                 }
             } while (true);
 
-            RIGHT_PAREN273=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_compound_operator4398); if (failed) return retval;
-            if ( backtracking==0 ) {
-            RIGHT_PAREN273_tree = (Object)adaptor.create(RIGHT_PAREN273);
-            adaptor.addChild(root_0, RIGHT_PAREN273_tree);
+            RIGHT_PAREN264=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_compound_operator4257); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            RIGHT_PAREN264_tree = (Object)adaptor.create(RIGHT_PAREN264);
+            adaptor.addChild(root_0, RIGHT_PAREN264_tree);
             }
-            if ( backtracking==0 ) {
-              	emit(RIGHT_PAREN273, DroolsEditorType.SYMBOL);	
+            if ( state.backtracking==0 ) {
+              	emit(RIGHT_PAREN264, DroolsEditorType.SYMBOL);	
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_CONDITION_END);	
             }
 
@@ -12217,14 +11433,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 {
              
@@ -12236,41 +11455,189 @@
         }
         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"
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1287:1: operator_key : {...}? =>id= ID -> VK_OPERATOR[$id] ;
+    public final DRLParser.operator_key_return operator_key() throws RecognitionException {
+        DRLParser.operator_key_return retval = new DRLParser.operator_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1288:2: ({...}? =>id= ID -> VK_OPERATOR[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1288:9: {...}? =>id= ID
+            {
+            if ( !(((isPluggableEvaluator(false)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "operator_key", "(isPluggableEvaluator(false))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_operator_key4288); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+               emit(id, DroolsEditorType.IDENTIFIER); 
+            }
+
+
+            // 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();
+            // 1290:9: -> VK_OPERATOR[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_OPERATOR, id));
+
+            }
+
+            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 "operator_key"
+
+    public static class neg_operator_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "neg_operator_key"
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1293:1: neg_operator_key : {...}? =>id= ID -> VK_OPERATOR[$id] ;
+    public final DRLParser.neg_operator_key_return neg_operator_key() throws RecognitionException {
+        DRLParser.neg_operator_key_return retval = new DRLParser.neg_operator_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1294:2: ({...}? =>id= ID -> VK_OPERATOR[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1294:9: {...}? =>id= ID
+            {
+            if ( !(((isPluggableEvaluator(true)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "neg_operator_key", "(isPluggableEvaluator(true))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_neg_operator_key4333); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+               emit(id, DroolsEditorType.IDENTIFIER); 
+            }
+
+
+            // 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();
+            // 1296:9: -> VK_OPERATOR[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_OPERATOR, id));
+
+            }
+
+            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 "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:1278: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1299:1: expression_value : ( accessor_path | literal_constraint | paren_chunk ) ;
+    public final DRLParser.expression_value_return expression_value() throws RecognitionException {
+        DRLParser.expression_value_return retval = new DRLParser.expression_value_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        accessor_path_return accessor_path274 = null;
+        DRLParser.accessor_path_return accessor_path265 = null;
 
-        literal_constraint_return literal_constraint275 = null;
+        DRLParser.literal_constraint_return literal_constraint266 = null;
 
-        paren_chunk_return paren_chunk276 = null;
+        DRLParser.paren_chunk_return paren_chunk267 = null;
 
 
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1279:2: ( ( accessor_path | literal_constraint | paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:1279:4: ( accessor_path | literal_constraint | paren_chunk )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1300:2: ( ( accessor_path | literal_constraint | paren_chunk ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1300:4: ( accessor_path | literal_constraint | paren_chunk )
             {
             root_0 = (Object)adaptor.nil();
 
-            // src/main/resources/org/drools/lang/DRL.g:1279:4: ( accessor_path | literal_constraint | paren_chunk )
-            int alt91=3;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1300:4: ( accessor_path | literal_constraint | paren_chunk )
+            int alt92=3;
             switch ( input.LA(1) ) {
             case ID:
                 {
-                alt91=1;
+                alt92=1;
                 }
                 break;
             case STRING:
@@ -12279,60 +11646,63 @@
             case FLOAT:
             case NULL:
                 {
-                alt91=2;
+                alt92=2;
                 }
                 break;
             case LEFT_PAREN:
                 {
-                alt91=3;
+                alt92=3;
                 }
                 break;
             default:
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1279:4: ( accessor_path | literal_constraint | paren_chunk )", 91, 0, input);
+                    new NoViableAltException("", 92, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt91) {
+            switch (alt92) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1279:5: accessor_path
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1300:5: accessor_path
                     {
-                    pushFollow(FOLLOW_accessor_path_in_expression_value4419);
-                    accessor_path274=accessor_path();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, accessor_path274.getTree());
+                    pushFollow(FOLLOW_accessor_path_in_expression_value4370);
+                    accessor_path265=accessor_path();
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, accessor_path265.getTree());
+
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1280:4: literal_constraint
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1301:4: literal_constraint
                     {
-                    pushFollow(FOLLOW_literal_constraint_in_expression_value4424);
-                    literal_constraint275=literal_constraint();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, literal_constraint275.getTree());
+                    pushFollow(FOLLOW_literal_constraint_in_expression_value4375);
+                    literal_constraint266=literal_constraint();
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, literal_constraint266.getTree());
+
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1281:4: paren_chunk
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1302:4: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_expression_value4430);
-                    paren_chunk276=paren_chunk();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, paren_chunk276.getTree());
+                    pushFollow(FOLLOW_paren_chunk_in_expression_value4381);
+                    paren_chunk267=paren_chunk();
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk267.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);	
             }
@@ -12341,14 +11711,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 {
              
@@ -12363,152 +11736,147 @@
         }
         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:1295: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1316:1: literal_constraint : ( STRING | INT | FLOAT | BOOL | NULL );
+    public final DRLParser.literal_constraint_return literal_constraint() throws RecognitionException {
+        DRLParser.literal_constraint_return retval = new DRLParser.literal_constraint_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token STRING277=null;
-        Token INT278=null;
-        Token FLOAT279=null;
-        Token BOOL280=null;
-        Token NULL281=null;
+        Token STRING268=null;
+        Token INT269=null;
+        Token FLOAT270=null;
+        Token BOOL271=null;
+        Token NULL272=null;
 
-        Object STRING277_tree=null;
-        Object INT278_tree=null;
-        Object FLOAT279_tree=null;
-        Object BOOL280_tree=null;
-        Object NULL281_tree=null;
+        Object STRING268_tree=null;
+        Object INT269_tree=null;
+        Object FLOAT270_tree=null;
+        Object BOOL271_tree=null;
+        Object NULL272_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1296:2: ( STRING | INT | FLOAT | BOOL | NULL )
-            int alt92=5;
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1317:2: ( STRING | INT | FLOAT | BOOL | NULL )
+            int alt93=5;
             switch ( input.LA(1) ) {
             case STRING:
                 {
-                alt92=1;
+                alt93=1;
                 }
                 break;
             case INT:
                 {
-                alt92=2;
+                alt93=2;
                 }
                 break;
             case FLOAT:
                 {
-                alt92=3;
+                alt93=3;
                 }
                 break;
             case BOOL:
                 {
-                alt92=4;
+                alt93=4;
                 }
                 break;
             case NULL:
                 {
-                alt92=5;
+                alt93=5;
                 }
                 break;
             default:
-                if (backtracking>0) {failed=true; return retval;}
+                if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1295:1: literal_constraint : ( STRING | INT | FLOAT | BOOL | NULL );", 92, 0, input);
+                    new NoViableAltException("", 93, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt92) {
+            switch (alt93) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1296:4: STRING
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1317:4: STRING
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    STRING277=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_literal_constraint4449); if (failed) return retval;
-                    if ( backtracking==0 ) {
-                    STRING277_tree = (Object)adaptor.create(STRING277);
-                    adaptor.addChild(root_0, STRING277_tree);
+                    STRING268=(Token)match(input,STRING,FOLLOW_STRING_in_literal_constraint4400); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    STRING268_tree = (Object)adaptor.create(STRING268);
+                    adaptor.addChild(root_0, STRING268_tree);
                     }
-                    if ( backtracking==0 ) {
-                      	emit(STRING277, DroolsEditorType.STRING_CONST);	
+                    if ( state.backtracking==0 ) {
+                      	emit(STRING268, DroolsEditorType.STRING_CONST);	
                     }
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1297:4: INT
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1318:4: INT
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    INT278=(Token)input.LT(1);
-                    match(input,INT,FOLLOW_INT_in_literal_constraint4456); if (failed) return retval;
-                    if ( backtracking==0 ) {
-                    INT278_tree = (Object)adaptor.create(INT278);
-                    adaptor.addChild(root_0, INT278_tree);
+                    INT269=(Token)match(input,INT,FOLLOW_INT_in_literal_constraint4407); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    INT269_tree = (Object)adaptor.create(INT269);
+                    adaptor.addChild(root_0, INT269_tree);
                     }
-                    if ( backtracking==0 ) {
-                      	emit(INT278, DroolsEditorType.NUMERIC_CONST);	
+                    if ( state.backtracking==0 ) {
+                      	emit(INT269, DroolsEditorType.NUMERIC_CONST);	
                     }
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1298:4: FLOAT
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1319:4: FLOAT
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    FLOAT279=(Token)input.LT(1);
-                    match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint4463); if (failed) return retval;
-                    if ( backtracking==0 ) {
-                    FLOAT279_tree = (Object)adaptor.create(FLOAT279);
-                    adaptor.addChild(root_0, FLOAT279_tree);
+                    FLOAT270=(Token)match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint4414); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    FLOAT270_tree = (Object)adaptor.create(FLOAT270);
+                    adaptor.addChild(root_0, FLOAT270_tree);
                     }
-                    if ( backtracking==0 ) {
-                      	emit(FLOAT279, DroolsEditorType.NUMERIC_CONST);	
+                    if ( state.backtracking==0 ) {
+                      	emit(FLOAT270, DroolsEditorType.NUMERIC_CONST);	
                     }
 
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DRL.g:1299:4: BOOL
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1320:4: BOOL
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    BOOL280=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_literal_constraint4470); if (failed) return retval;
-                    if ( backtracking==0 ) {
-                    BOOL280_tree = (Object)adaptor.create(BOOL280);
-                    adaptor.addChild(root_0, BOOL280_tree);
+                    BOOL271=(Token)match(input,BOOL,FOLLOW_BOOL_in_literal_constraint4421); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    BOOL271_tree = (Object)adaptor.create(BOOL271);
+                    adaptor.addChild(root_0, BOOL271_tree);
                     }
-                    if ( backtracking==0 ) {
-                      	emit(BOOL280, DroolsEditorType.BOOLEAN_CONST);	
+                    if ( state.backtracking==0 ) {
+                      	emit(BOOL271, DroolsEditorType.BOOLEAN_CONST);	
                     }
 
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/lang/DRL.g:1300:4: NULL
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1321:4: NULL
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    NULL281=(Token)input.LT(1);
-                    match(input,NULL,FOLLOW_NULL_in_literal_constraint4477); if (failed) return retval;
-                    if ( backtracking==0 ) {
-                    NULL281_tree = (Object)adaptor.create(NULL281);
-                    adaptor.addChild(root_0, NULL281_tree);
+                    NULL272=(Token)match(input,NULL,FOLLOW_NULL_in_literal_constraint4428); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    NULL272_tree = (Object)adaptor.create(NULL272);
+                    adaptor.addChild(root_0, NULL272_tree);
                     }
-                    if ( backtracking==0 ) {
-                      	emit(NULL281, DroolsEditorType.NULL_CONST);	
+                    if ( state.backtracking==0 ) {
+                      	emit(NULL272, DroolsEditorType.NULL_CONST);	
                     }
 
                     }
@@ -12517,37 +11885,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:1303: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1324:1: pattern_type : id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) ;
+    public final DRLParser.pattern_type_return pattern_type() throws RecognitionException {
+        DRLParser.pattern_type_return retval = new DRLParser.pattern_type_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token id=null;
         List list_id=null;
-        dimension_definition_return dimension_definition282 = null;
+        DRLParser.dimension_definition_return dimension_definition273 = null;
 
 
         Object id_tree=null;
@@ -12555,41 +11926,38 @@
         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:1304:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) )
-            // src/main/resources/org/drools/lang/DRL.g:1304:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1325:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1325:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
             {
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_pattern_type4492); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_pattern_type4443); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
             if (list_id==null) list_id=new ArrayList();
             list_id.add(id);
 
-            // src/main/resources/org/drools/lang/DRL.g:1304:11: (id+= DOT id+= ID )*
-            loop93:
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1325:11: (id+= DOT id+= ID )*
+            loop94:
             do {
-                int alt93=2;
-                int LA93_0 = input.LA(1);
+                int alt94=2;
+                int LA94_0 = input.LA(1);
 
-                if ( (LA93_0==DOT) ) {
-                    alt93=1;
+                if ( (LA94_0==DOT) ) {
+                    alt94=1;
                 }
 
 
-                switch (alt93) {
+                switch (alt94) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1304:13: id+= DOT id+= ID
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1325:13: id+= DOT id+= ID
             	    {
-            	    id=(Token)input.LT(1);
-            	    match(input,DOT,FOLLOW_DOT_in_pattern_type4498); if (failed) return retval;
-            	    if ( backtracking==0 ) stream_DOT.add(id);
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_pattern_type4449); if (state.failed) return retval; 
+            	    if ( state.backtracking==0 ) stream_DOT.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
             	    list_id.add(id);
 
-            	    id=(Token)input.LT(1);
-            	    match(input,ID,FOLLOW_ID_in_pattern_type4502); if (failed) return retval;
-            	    if ( backtracking==0 ) stream_ID.add(id);
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_pattern_type4453); if (state.failed) return retval; 
+            	    if ( state.backtracking==0 ) stream_ID.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
             	    list_id.add(id);
@@ -12599,73 +11967,75 @@
             	    break;
 
             	default :
-            	    break loop93;
+            	    break loop94;
                 }
             } 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:1307:6: ( dimension_definition )*
-            loop94:
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1328:6: ( dimension_definition )*
+            loop95:
             do {
-                int alt94=2;
-                int LA94_0 = input.LA(1);
+                int alt95=2;
+                int LA95_0 = input.LA(1);
 
-                if ( (LA94_0==LEFT_SQUARE) ) {
-                    alt94=1;
+                if ( (LA95_0==LEFT_SQUARE) ) {
+                    alt95=1;
                 }
 
 
-                switch (alt94) {
+                switch (alt95) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1307:6: dimension_definition
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1328:6: dimension_definition
             	    {
-            	    pushFollow(FOLLOW_dimension_definition_in_pattern_type4517);
-            	    dimension_definition282=dimension_definition();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_dimension_definition.add(dimension_definition282.getTree());
+            	    pushFollow(FOLLOW_dimension_definition_in_pattern_type4468);
+            	    dimension_definition273=dimension_definition();
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_dimension_definition.add(dimension_definition273.getTree());
+
             	    }
             	    break;
 
             	default :
-            	    break loop94;
+            	    break loop95;
                 }
             } while (true);
 
 
+
             // AST REWRITE
             // 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();
-            // 1308:3: -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
+            // 1329:3: -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1308:6: ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1329:6: ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(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:1308:28: ( dimension_definition )*
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1329:28: ( dimension_definition )*
                 while ( stream_dimension_definition.hasNext() ) {
-                    adaptor.addChild(root_1, stream_dimension_definition.next());
+                    adaptor.addChild(root_1, stream_dimension_definition.nextTree());
 
                 }
                 stream_dimension_definition.reset();
@@ -12675,43 +12045,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:1311: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1332:1: data_type : id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) ;
+    public final DRLParser.data_type_return data_type() throws RecognitionException {
+        DRLParser.data_type_return retval = new DRLParser.data_type_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token id=null;
         List list_id=null;
-        dimension_definition_return dimension_definition283 = null;
+        DRLParser.dimension_definition_return dimension_definition274 = null;
 
 
         Object id_tree=null;
@@ -12719,41 +12091,38 @@
         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:1312:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) )
-            // src/main/resources/org/drools/lang/DRL.g:1312:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1333:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1333:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
             {
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_data_type4545); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_data_type4496); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
 
             if (list_id==null) list_id=new ArrayList();
             list_id.add(id);
 
-            // src/main/resources/org/drools/lang/DRL.g:1312:11: (id+= DOT id+= ID )*
-            loop95:
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1333:11: (id+= DOT id+= ID )*
+            loop96:
             do {
-                int alt95=2;
-                int LA95_0 = input.LA(1);
+                int alt96=2;
+                int LA96_0 = input.LA(1);
 
-                if ( (LA95_0==DOT) ) {
-                    alt95=1;
+                if ( (LA96_0==DOT) ) {
+                    alt96=1;
                 }
 
 
-                switch (alt95) {
+                switch (alt96) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1312:13: id+= DOT id+= ID
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1333:13: id+= DOT id+= ID
             	    {
-            	    id=(Token)input.LT(1);
-            	    match(input,DOT,FOLLOW_DOT_in_data_type4551); if (failed) return retval;
-            	    if ( backtracking==0 ) stream_DOT.add(id);
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_data_type4502); if (state.failed) return retval; 
+            	    if ( state.backtracking==0 ) stream_DOT.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
             	    list_id.add(id);
 
-            	    id=(Token)input.LT(1);
-            	    match(input,ID,FOLLOW_ID_in_data_type4555); if (failed) return retval;
-            	    if ( backtracking==0 ) stream_ID.add(id);
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_data_type4506); if (state.failed) return retval; 
+            	    if ( state.backtracking==0 ) stream_ID.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
             	    list_id.add(id);
@@ -12763,72 +12132,74 @@
             	    break;
 
             	default :
-            	    break loop95;
+            	    break loop96;
                 }
             } while (true);
 
-            // src/main/resources/org/drools/lang/DRL.g:1312:31: ( dimension_definition )*
-            loop96:
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1333:31: ( dimension_definition )*
+            loop97:
             do {
-                int alt96=2;
-                int LA96_0 = input.LA(1);
+                int alt97=2;
+                int LA97_0 = input.LA(1);
 
-                if ( (LA96_0==LEFT_SQUARE) ) {
-                    alt96=1;
+                if ( (LA97_0==LEFT_SQUARE) ) {
+                    alt97=1;
                 }
 
 
-                switch (alt96) {
+                switch (alt97) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1312:31: dimension_definition
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1333:31: dimension_definition
             	    {
-            	    pushFollow(FOLLOW_dimension_definition_in_data_type4560);
-            	    dimension_definition283=dimension_definition();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_dimension_definition.add(dimension_definition283.getTree());
+            	    pushFollow(FOLLOW_dimension_definition_in_data_type4511);
+            	    dimension_definition274=dimension_definition();
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_dimension_definition.add(dimension_definition274.getTree());
+
             	    }
             	    break;
 
             	default :
-            	    break loop96;
+            	    break loop97;
                 }
             } while (true);
 
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(list_id, DroolsEditorType.IDENTIFIER);	
             }
 
+
             // AST REWRITE
             // 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();
-            // 1314:3: -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
+            // 1335:3: -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1314:6: ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1335:6: ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(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:1314:25: ( dimension_definition )*
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1335:25: ( dimension_definition )*
                 while ( stream_dimension_definition.hasNext() ) {
-                    adaptor.addChild(root_1, stream_dimension_definition.next());
+                    adaptor.addChild(root_1, stream_dimension_definition.nextTree());
 
                 }
                 stream_dimension_definition.reset();
@@ -12838,181 +12209,186 @@
 
             }
 
+            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:1317: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1338:1: dimension_definition : LEFT_SQUARE RIGHT_SQUARE ;
+    public final DRLParser.dimension_definition_return dimension_definition() throws RecognitionException {
+        DRLParser.dimension_definition_return retval = new DRLParser.dimension_definition_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_SQUARE284=null;
-        Token RIGHT_SQUARE285=null;
+        Token LEFT_SQUARE275=null;
+        Token RIGHT_SQUARE276=null;
 
-        Object LEFT_SQUARE284_tree=null;
-        Object RIGHT_SQUARE285_tree=null;
+        Object LEFT_SQUARE275_tree=null;
+        Object RIGHT_SQUARE276_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1318:2: ( LEFT_SQUARE RIGHT_SQUARE )
-            // src/main/resources/org/drools/lang/DRL.g:1318:4: LEFT_SQUARE RIGHT_SQUARE
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1339:2: ( LEFT_SQUARE RIGHT_SQUARE )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1339:4: LEFT_SQUARE RIGHT_SQUARE
             {
             root_0 = (Object)adaptor.nil();
 
-            LEFT_SQUARE284=(Token)input.LT(1);
-            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dimension_definition4589); if (failed) return retval;
-            if ( backtracking==0 ) {
-            LEFT_SQUARE284_tree = (Object)adaptor.create(LEFT_SQUARE284);
-            adaptor.addChild(root_0, LEFT_SQUARE284_tree);
+            LEFT_SQUARE275=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dimension_definition4540); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            LEFT_SQUARE275_tree = (Object)adaptor.create(LEFT_SQUARE275);
+            adaptor.addChild(root_0, LEFT_SQUARE275_tree);
             }
-            if ( backtracking==0 ) {
-              	emit(LEFT_SQUARE284, DroolsEditorType.SYMBOL);	
+            if ( state.backtracking==0 ) {
+              	emit(LEFT_SQUARE275, DroolsEditorType.SYMBOL);	
             }
-            RIGHT_SQUARE285=(Token)input.LT(1);
-            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dimension_definition4596); if (failed) return retval;
-            if ( backtracking==0 ) {
-            RIGHT_SQUARE285_tree = (Object)adaptor.create(RIGHT_SQUARE285);
-            adaptor.addChild(root_0, RIGHT_SQUARE285_tree);
+            RIGHT_SQUARE276=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dimension_definition4547); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            RIGHT_SQUARE276_tree = (Object)adaptor.create(RIGHT_SQUARE276);
+            adaptor.addChild(root_0, RIGHT_SQUARE276_tree);
             }
-            if ( backtracking==0 ) {
-              	emit(RIGHT_SQUARE285, DroolsEditorType.SYMBOL);	
+            if ( state.backtracking==0 ) {
+              	emit(RIGHT_SQUARE276, 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:1322: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1343:1: accessor_path : accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) ;
+    public final DRLParser.accessor_path_return accessor_path() throws RecognitionException {
+        DRLParser.accessor_path_return retval = new DRLParser.accessor_path_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token DOT287=null;
-        accessor_element_return accessor_element286 = null;
+        Token DOT278=null;
+        DRLParser.accessor_element_return accessor_element277 = null;
 
-        accessor_element_return accessor_element288 = null;
+        DRLParser.accessor_element_return accessor_element279 = null;
 
 
-        Object DOT287_tree=null;
+        Object DOT278_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:1323:2: ( accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) )
-            // src/main/resources/org/drools/lang/DRL.g:1323:4: accessor_element ( DOT accessor_element )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1344:2: ( accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1344:4: accessor_element ( DOT accessor_element )*
             {
-            pushFollow(FOLLOW_accessor_element_in_accessor_path4610);
-            accessor_element286=accessor_element();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_accessor_element.add(accessor_element286.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1323:21: ( DOT accessor_element )*
-            loop97:
+            pushFollow(FOLLOW_accessor_element_in_accessor_path4561);
+            accessor_element277=accessor_element();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_accessor_element.add(accessor_element277.getTree());
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1344:21: ( DOT accessor_element )*
+            loop98:
             do {
-                int alt97=2;
-                int LA97_0 = input.LA(1);
+                int alt98=2;
+                int LA98_0 = input.LA(1);
 
-                if ( (LA97_0==DOT) ) {
-                    alt97=1;
+                if ( (LA98_0==DOT) ) {
+                    alt98=1;
                 }
 
 
-                switch (alt97) {
+                switch (alt98) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1323:23: DOT accessor_element
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1344:23: DOT accessor_element
             	    {
-            	    DOT287=(Token)input.LT(1);
-            	    match(input,DOT,FOLLOW_DOT_in_accessor_path4614); if (failed) return retval;
-            	    if ( backtracking==0 ) stream_DOT.add(DOT287);
+            	    DOT278=(Token)match(input,DOT,FOLLOW_DOT_in_accessor_path4565); if (state.failed) return retval; 
+            	    if ( state.backtracking==0 ) stream_DOT.add(DOT278);
 
-            	    if ( backtracking==0 ) {
-            	      	emit(DOT287, DroolsEditorType.IDENTIFIER);	
+            	    if ( state.backtracking==0 ) {
+            	      	emit(DOT278, DroolsEditorType.IDENTIFIER);	
             	    }
-            	    pushFollow(FOLLOW_accessor_element_in_accessor_path4618);
-            	    accessor_element288=accessor_element();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_accessor_element.add(accessor_element288.getTree());
+            	    pushFollow(FOLLOW_accessor_element_in_accessor_path4569);
+            	    accessor_element279=accessor_element();
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_accessor_element.add(accessor_element279.getTree());
+
             	    }
             	    break;
 
             	default :
-            	    break loop97;
+            	    break loop98;
                 }
             } 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();
-            // 1324:2: -> ^( VT_ACCESSOR_PATH ( accessor_element )+ )
+            // 1345:2: -> ^( VT_ACCESSOR_PATH ( accessor_element )+ )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1324:5: ^( VT_ACCESSOR_PATH ( accessor_element )+ )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1345:5: ^( VT_ACCESSOR_PATH ( accessor_element )+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(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();
@@ -13022,110 +12398,113 @@
 
             }
 
+            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:1327: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1348:1: accessor_element : ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) ;
+    public final DRLParser.accessor_element_return accessor_element() throws RecognitionException {
+        DRLParser.accessor_element_return retval = new DRLParser.accessor_element_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token ID289=null;
-        square_chunk_return square_chunk290 = null;
+        Token ID280=null;
+        DRLParser.square_chunk_return square_chunk281 = null;
 
 
-        Object ID289_tree=null;
+        Object ID280_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:1328:2: ( ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) )
-            // src/main/resources/org/drools/lang/DRL.g:1328:4: ID ( square_chunk )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1349:2: ( ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1349:4: ID ( square_chunk )*
             {
-            ID289=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_accessor_element4642); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID289);
+            ID280=(Token)match(input,ID,FOLLOW_ID_in_accessor_element4593); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID280);
 
-            if ( backtracking==0 ) {
-              	emit(ID289, DroolsEditorType.IDENTIFIER);	
+            if ( state.backtracking==0 ) {
+              	emit(ID280, DroolsEditorType.IDENTIFIER);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:1329:3: ( square_chunk )*
-            loop98:
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1350:3: ( square_chunk )*
+            loop99:
             do {
-                int alt98=2;
-                int LA98_0 = input.LA(1);
+                int alt99=2;
+                int LA99_0 = input.LA(1);
 
-                if ( (LA98_0==LEFT_SQUARE) ) {
-                    alt98=1;
+                if ( (LA99_0==LEFT_SQUARE) ) {
+                    alt99=1;
                 }
 
 
-                switch (alt98) {
+                switch (alt99) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1329:3: square_chunk
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1350:3: square_chunk
             	    {
-            	    pushFollow(FOLLOW_square_chunk_in_accessor_element4648);
-            	    square_chunk290=square_chunk();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_square_chunk.add(square_chunk290.getTree());
+            	    pushFollow(FOLLOW_square_chunk_in_accessor_element4599);
+            	    square_chunk281=square_chunk();
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_square_chunk.add(square_chunk281.getTree());
+
             	    }
             	    break;
 
             	default :
-            	    break loop98;
+            	    break loop99;
                 }
             } while (true);
 
 
+
             // AST REWRITE
-            // elements: square_chunk, ID
+            // elements: ID, square_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();
-            // 1330:2: -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
+            // 1351:2: -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1330:5: ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1351:5: ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(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:1330:30: ( square_chunk )*
+                adaptor.addChild(root_1, stream_ID.nextNode());
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1351:30: ( square_chunk )*
                 while ( stream_square_chunk.hasNext() ) {
-                    adaptor.addChild(root_1, stream_square_chunk.next());
+                    adaptor.addChild(root_1, stream_square_chunk.nextTree());
 
                 }
                 stream_square_chunk.reset();
@@ -13135,168 +12514,172 @@
 
             }
 
+            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:1333: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1354:1: rhs_chunk : rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] ;
+    public final DRLParser.rhs_chunk_return rhs_chunk() throws RecognitionException {
+        DRLParser.rhs_chunk_return retval = new DRLParser.rhs_chunk_return();
         retval.start = input.LT(1);
 
         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:1336:3: (rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] )
-            // src/main/resources/org/drools/lang/DRL.g:1336:5: rc= rhs_chunk_data
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1357:3: (rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1357:5: rc= rhs_chunk_data
             {
-            pushFollow(FOLLOW_rhs_chunk_data_in_rhs_chunk4677);
+            pushFollow(FOLLOW_rhs_chunk_data_in_rhs_chunk4628);
             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();
-            // 1337:2: -> VT_RHS_CHUNK[$rc.start,text]
+            // 1358: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:1340: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1361:1: rhs_chunk_data : THEN (any=~ END )* end1= END ( SEMICOLON )? ;
+    public final DRLParser.rhs_chunk_data_return rhs_chunk_data() throws RecognitionException {
+        DRLParser.rhs_chunk_data_return retval = new DRLParser.rhs_chunk_data_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
         Token any=null;
         Token end1=null;
-        Token THEN291=null;
-        Token SEMICOLON292=null;
+        Token THEN282=null;
+        Token SEMICOLON283=null;
 
         Object any_tree=null;
         Object end1_tree=null;
-        Object THEN291_tree=null;
-        Object SEMICOLON292_tree=null;
+        Object THEN282_tree=null;
+        Object SEMICOLON283_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1341:2: ( THEN (any=~ END )* end1= END ( SEMICOLON )? )
-            // src/main/resources/org/drools/lang/DRL.g:1341:4: THEN (any=~ END )* end1= END ( SEMICOLON )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1362:2: ( THEN (any=~ END )* end1= END ( SEMICOLON )? )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1362:4: THEN (any=~ END )* end1= END ( SEMICOLON )?
             {
             root_0 = (Object)adaptor.nil();
 
-            THEN291=(Token)input.LT(1);
-            match(input,THEN,FOLLOW_THEN_in_rhs_chunk_data4696); if (failed) return retval;
-            if ( backtracking==0 ) {
-            THEN291_tree = (Object)adaptor.create(THEN291);
-            adaptor.addChild(root_0, THEN291_tree);
+            THEN282=(Token)match(input,THEN,FOLLOW_THEN_in_rhs_chunk_data4647); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            THEN282_tree = (Object)adaptor.create(THEN282);
+            adaptor.addChild(root_0, THEN282_tree);
             }
-            if ( backtracking==0 ) {
-              	if (THEN291.getText().equalsIgnoreCase("then")){
-              			emit(THEN291, DroolsEditorType.KEYWORD);
+            if ( state.backtracking==0 ) {
+              	if ((THEN282!=null?THEN282.getText():null).equalsIgnoreCase("then")){
+              			emit(THEN282, DroolsEditorType.KEYWORD);
               			emit(Location.LOCATION_RHS);
               		}	
             }
-            // src/main/resources/org/drools/lang/DRL.g:1346:4: (any=~ END )*
-            loop99:
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1367:4: (any=~ END )*
+            loop100:
             do {
-                int alt99=2;
-                int LA99_0 = input.LA(1);
+                int alt100=2;
+                int LA100_0 = input.LA(1);
 
-                if ( ((LA99_0>=VT_COMPILATION_UNIT && LA99_0<=DOT_STAR)||(LA99_0>=STRING && LA99_0<=MULTI_LINE_COMMENT)) ) {
-                    alt99=1;
+                if ( ((LA100_0>=VT_COMPILATION_UNIT && LA100_0<=DOT_STAR)||(LA100_0>=STRING && LA100_0<=MULTI_LINE_COMMENT)) ) {
+                    alt100=1;
                 }
 
 
-                switch (alt99) {
+                switch (alt100) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1346:6: any=~ END
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1367:6: any=~ END
             	    {
             	    any=(Token)input.LT(1);
             	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=DOT_STAR)||(input.LA(1)>=STRING && input.LA(1)<=MULTI_LINE_COMMENT) ) {
             	        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_data4709);    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); 
             	    }
 
@@ -13304,35 +12687,33 @@
             	    break;
 
             	default :
-            	    break loop99;
+            	    break loop100;
                 }
             } while (true);
 
-            end1=(Token)input.LT(1);
-            match(input,END,FOLLOW_END_in_rhs_chunk_data4722); if (failed) return retval;
-            if ( backtracking==0 ) {
+            end1=(Token)match(input,END,FOLLOW_END_in_rhs_chunk_data4673); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             end1_tree = (Object)adaptor.create(end1);
             adaptor.addChild(root_0, end1_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	emit(end1, DroolsEditorType.KEYWORD);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:1348:3: ( SEMICOLON )?
-            int alt100=2;
-            int LA100_0 = input.LA(1);
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1369:3: ( SEMICOLON )?
+            int alt101=2;
+            int LA101_0 = input.LA(1);
 
-            if ( (LA100_0==SEMICOLON) ) {
-                alt100=1;
+            if ( (LA101_0==SEMICOLON) ) {
+                alt101=1;
             }
-            switch (alt100) {
+            switch (alt101) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1348:3: SEMICOLON
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1369:3: SEMICOLON
                     {
-                    SEMICOLON292=(Token)input.LT(1);
-                    match(input,SEMICOLON,FOLLOW_SEMICOLON_in_rhs_chunk_data4728); if (failed) return retval;
-                    if ( backtracking==0 ) {
-                    SEMICOLON292_tree = (Object)adaptor.create(SEMICOLON292);
-                    adaptor.addChild(root_0, SEMICOLON292_tree);
+                    SEMICOLON283=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_rhs_chunk_data4679); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    SEMICOLON283_tree = (Object)adaptor.create(SEMICOLON283);
+                    adaptor.addChild(root_0, SEMICOLON283_tree);
                     }
 
                     }
@@ -13340,109 +12721,116 @@
 
             }
 
-            if ( backtracking==0 ) {
-              	emit(SEMICOLON292, DroolsEditorType.KEYWORD);	
+            if ( state.backtracking==0 ) {
+              	emit(SEMICOLON283, 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:1351: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1372:1: curly_chunk : cc= curly_chunk_data[false] -> VT_CURLY_CHUNK[$cc.start,text] ;
+    public final DRLParser.curly_chunk_return curly_chunk() throws RecognitionException {
+        DRLParser.curly_chunk_return retval = new DRLParser.curly_chunk_return();
         retval.start = input.LT(1);
 
         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:1354:3: (cc= curly_chunk_data[false] -> VT_CURLY_CHUNK[$cc.start,text] )
-            // src/main/resources/org/drools/lang/DRL.g:1354:5: cc= curly_chunk_data[false]
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1375:3: (cc= curly_chunk_data[false] -> VT_CURLY_CHUNK[$cc.start,text] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1375:5: cc= curly_chunk_data[false]
             {
-            pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk4747);
+            pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk4698);
             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();
-            // 1355:2: -> VT_CURLY_CHUNK[$cc.start,text]
+            // 1376: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:1358: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1379:1: curly_chunk_data[boolean isRecursive] : lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY ;
+    public final DRLParser.curly_chunk_data_return curly_chunk_data(boolean isRecursive) throws RecognitionException {
+        DRLParser.curly_chunk_data_return retval = new DRLParser.curly_chunk_data_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -13450,7 +12838,7 @@
         Token lc1=null;
         Token any=null;
         Token rc1=null;
-        curly_chunk_data_return curly_chunk_data293 = null;
+        DRLParser.curly_chunk_data_return curly_chunk_data284 = null;
 
 
         Object lc1_tree=null;
@@ -13458,18 +12846,17 @@
         Object rc1_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1359:2: (lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY )
-            // src/main/resources/org/drools/lang/DRL.g:1359:4: lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1380:2: (lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1380:4: lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY
             {
             root_0 = (Object)adaptor.nil();
 
-            lc1=(Token)input.LT(1);
-            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_curly_chunk_data4770); if (failed) return retval;
-            if ( backtracking==0 ) {
+            lc1=(Token)match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_curly_chunk_data4721); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             lc1_tree = (Object)adaptor.create(lc1);
             adaptor.addChild(root_0, lc1_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	if (!isRecursive) {
               				emit(lc1, DroolsEditorType.SYMBOL);
               			} else {
@@ -13477,67 +12864,66 @@
               			}	
               		
             }
-            // src/main/resources/org/drools/lang/DRL.g:1366:4: (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )*
-            loop101:
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1387:4: (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )*
+            loop102:
             do {
-                int alt101=3;
-                int LA101_0 = input.LA(1);
+                int alt102=3;
+                int LA102_0 = input.LA(1);
 
-                if ( ((LA101_0>=VT_COMPILATION_UNIT && LA101_0<=THEN)||(LA101_0>=MISC && LA101_0<=MULTI_LINE_COMMENT)) ) {
-                    alt101=1;
+                if ( ((LA102_0>=VT_COMPILATION_UNIT && LA102_0<=THEN)||(LA102_0>=MISC && LA102_0<=MULTI_LINE_COMMENT)) ) {
+                    alt102=1;
                 }
-                else if ( (LA101_0==LEFT_CURLY) ) {
-                    alt101=2;
+                else if ( (LA102_0==LEFT_CURLY) ) {
+                    alt102=2;
                 }
 
 
-                switch (alt101) {
+                switch (alt102) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1366:5: any=~ ( LEFT_CURLY | RIGHT_CURLY )
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1387:5: any=~ ( LEFT_CURLY | RIGHT_CURLY )
             	    {
             	    any=(Token)input.LT(1);
             	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=THEN)||(input.LA(1)>=MISC && input.LA(1)<=MULTI_LINE_COMMENT) ) {
             	        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_data4782);    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:1366:87: curly_chunk_data[true]
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1387:87: curly_chunk_data[true]
             	    {
-            	    pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk_data4798);
-            	    curly_chunk_data293=curly_chunk_data(true);
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, curly_chunk_data293.getTree());
+            	    pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk_data4749);
+            	    curly_chunk_data284=curly_chunk_data(true);
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, curly_chunk_data284.getTree());
+
             	    }
             	    break;
 
             	default :
-            	    break loop101;
+            	    break loop102;
                 }
             } while (true);
 
-            rc1=(Token)input.LT(1);
-            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_curly_chunk_data4809); if (failed) return retval;
-            if ( backtracking==0 ) {
+            rc1=(Token)match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_curly_chunk_data4760); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             rc1_tree = (Object)adaptor.create(rc1);
             adaptor.addChild(root_0, rc1_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	if (!isRecursive) {
               				emit(rc1, DroolsEditorType.SYMBOL);
               			} else {
@@ -13550,101 +12936,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:1376: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1397:1: paren_chunk : pc= paren_chunk_data[false] -> VT_PAREN_CHUNK[$pc.start,text] ;
+    public final DRLParser.paren_chunk_return paren_chunk() throws RecognitionException {
+        DRLParser.paren_chunk_return retval = new DRLParser.paren_chunk_return();
         retval.start = input.LT(1);
 
         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:1379:3: (pc= paren_chunk_data[false] -> VT_PAREN_CHUNK[$pc.start,text] )
-            // src/main/resources/org/drools/lang/DRL.g:1379:5: pc= paren_chunk_data[false]
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1400:3: (pc= paren_chunk_data[false] -> VT_PAREN_CHUNK[$pc.start,text] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1400:5: pc= paren_chunk_data[false]
             {
-            pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk4830);
+            pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk4781);
             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();
-            // 1380:2: -> VT_PAREN_CHUNK[$pc.start,text]
+            // 1401: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:1383: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1404:1: paren_chunk_data[boolean isRecursive] : lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN ;
+    public final DRLParser.paren_chunk_data_return paren_chunk_data(boolean isRecursive) throws RecognitionException {
+        DRLParser.paren_chunk_data_return retval = new DRLParser.paren_chunk_data_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -13652,7 +13045,7 @@
         Token lp1=null;
         Token any=null;
         Token rp1=null;
-        paren_chunk_data_return paren_chunk_data294 = null;
+        DRLParser.paren_chunk_data_return paren_chunk_data285 = null;
 
 
         Object lp1_tree=null;
@@ -13660,18 +13053,17 @@
         Object rp1_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1384:2: (lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN )
-            // src/main/resources/org/drools/lang/DRL.g:1384:4: lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1405:2: (lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1405:4: lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN
             {
             root_0 = (Object)adaptor.nil();
 
-            lp1=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_paren_chunk_data4854); if (failed) return retval;
-            if ( backtracking==0 ) {
+            lp1=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_paren_chunk_data4805); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             lp1_tree = (Object)adaptor.create(lp1);
             adaptor.addChild(root_0, lp1_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	if (!isRecursive) {
               				emit(lp1, DroolsEditorType.SYMBOL);
               			} else {
@@ -13679,67 +13071,66 @@
               			}	
               		
             }
-            // src/main/resources/org/drools/lang/DRL.g:1391:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )*
-            loop102:
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1412:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )*
+            loop103:
             do {
-                int alt102=3;
-                int LA102_0 = input.LA(1);
+                int alt103=3;
+                int LA103_0 = input.LA(1);
 
-                if ( ((LA102_0>=VT_COMPILATION_UNIT && LA102_0<=STRING)||LA102_0==COMMA||(LA102_0>=AT && LA102_0<=MULTI_LINE_COMMENT)) ) {
-                    alt102=1;
+                if ( ((LA103_0>=VT_COMPILATION_UNIT && LA103_0<=STRING)||LA103_0==COMMA||(LA103_0>=AT && LA103_0<=MULTI_LINE_COMMENT)) ) {
+                    alt103=1;
                 }
-                else if ( (LA102_0==LEFT_PAREN) ) {
-                    alt102=2;
+                else if ( (LA103_0==LEFT_PAREN) ) {
+                    alt103=2;
                 }
 
 
-                switch (alt102) {
+                switch (alt103) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1391:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1412:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
             	    {
             	    any=(Token)input.LT(1);
             	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=STRING)||input.LA(1)==COMMA||(input.LA(1)>=AT && input.LA(1)<=MULTI_LINE_COMMENT) ) {
             	        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_data4866);    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:1391:87: paren_chunk_data[true]
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1412:87: paren_chunk_data[true]
             	    {
-            	    pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk_data4882);
-            	    paren_chunk_data294=paren_chunk_data(true);
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, paren_chunk_data294.getTree());
+            	    pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk_data4833);
+            	    paren_chunk_data285=paren_chunk_data(true);
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk_data285.getTree());
+
             	    }
             	    break;
 
             	default :
-            	    break loop102;
+            	    break loop103;
                 }
             } while (true);
 
-            rp1=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk_data4893); if (failed) return retval;
-            if ( backtracking==0 ) {
+            rp1=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk_data4844); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             rp1_tree = (Object)adaptor.create(rp1);
             adaptor.addChild(root_0, rp1_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	if (!isRecursive) {
               				emit(rp1, DroolsEditorType.SYMBOL);
               			} else {
@@ -13752,101 +13143,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:1401: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1422:1: square_chunk : sc= square_chunk_data[false] -> VT_SQUARE_CHUNK[$sc.start,text] ;
+    public final DRLParser.square_chunk_return square_chunk() throws RecognitionException {
+        DRLParser.square_chunk_return retval = new DRLParser.square_chunk_return();
         retval.start = input.LT(1);
 
         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:1404:3: (sc= square_chunk_data[false] -> VT_SQUARE_CHUNK[$sc.start,text] )
-            // src/main/resources/org/drools/lang/DRL.g:1404:5: sc= square_chunk_data[false]
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1425:3: (sc= square_chunk_data[false] -> VT_SQUARE_CHUNK[$sc.start,text] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1425:5: sc= square_chunk_data[false]
             {
-            pushFollow(FOLLOW_square_chunk_data_in_square_chunk4914);
+            pushFollow(FOLLOW_square_chunk_data_in_square_chunk4865);
             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();
-            // 1405:2: -> VT_SQUARE_CHUNK[$sc.start,text]
+            // 1426: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:1408: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1429:1: square_chunk_data[boolean isRecursive] : ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE ;
+    public final DRLParser.square_chunk_data_return square_chunk_data(boolean isRecursive) throws RecognitionException {
+        DRLParser.square_chunk_data_return retval = new DRLParser.square_chunk_data_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -13854,7 +13252,7 @@
         Token ls1=null;
         Token any=null;
         Token rs1=null;
-        square_chunk_data_return square_chunk_data295 = null;
+        DRLParser.square_chunk_data_return square_chunk_data286 = null;
 
 
         Object ls1_tree=null;
@@ -13862,18 +13260,17 @@
         Object rs1_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1409:2: (ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE )
-            // src/main/resources/org/drools/lang/DRL.g:1409:4: ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1430:2: (ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1430:4: ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE
             {
             root_0 = (Object)adaptor.nil();
 
-            ls1=(Token)input.LT(1);
-            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_square_chunk_data4937); if (failed) return retval;
-            if ( backtracking==0 ) {
+            ls1=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_square_chunk_data4888); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             ls1_tree = (Object)adaptor.create(ls1);
             adaptor.addChild(root_0, ls1_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	if (!isRecursive) {
               				emit(ls1, DroolsEditorType.SYMBOL);
               			} else {
@@ -13881,67 +13278,66 @@
               			}	
               		
             }
-            // src/main/resources/org/drools/lang/DRL.g:1416:4: (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )*
-            loop103:
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1437:4: (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )*
+            loop104:
             do {
-                int alt103=3;
-                int LA103_0 = input.LA(1);
+                int alt104=3;
+                int LA104_0 = input.LA(1);
 
-                if ( ((LA103_0>=VT_COMPILATION_UNIT && LA103_0<=NULL)||(LA103_0>=THEN && LA103_0<=MULTI_LINE_COMMENT)) ) {
-                    alt103=1;
+                if ( ((LA104_0>=VT_COMPILATION_UNIT && LA104_0<=NULL)||(LA104_0>=THEN && LA104_0<=MULTI_LINE_COMMENT)) ) {
+                    alt104=1;
                 }
-                else if ( (LA103_0==LEFT_SQUARE) ) {
-                    alt103=2;
+                else if ( (LA104_0==LEFT_SQUARE) ) {
+                    alt104=2;
                 }
 
 
-                switch (alt103) {
+                switch (alt104) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1416:5: any=~ ( LEFT_SQUARE | RIGHT_SQUARE )
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1437:5: any=~ ( LEFT_SQUARE | RIGHT_SQUARE )
             	    {
             	    any=(Token)input.LT(1);
             	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=NULL)||(input.LA(1)>=THEN && input.LA(1)<=MULTI_LINE_COMMENT) ) {
             	        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_data4949);    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:1416:88: square_chunk_data[true]
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1437:88: square_chunk_data[true]
             	    {
-            	    pushFollow(FOLLOW_square_chunk_data_in_square_chunk_data4964);
-            	    square_chunk_data295=square_chunk_data(true);
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, square_chunk_data295.getTree());
+            	    pushFollow(FOLLOW_square_chunk_data_in_square_chunk_data4915);
+            	    square_chunk_data286=square_chunk_data(true);
 
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, square_chunk_data286.getTree());
+
             	    }
             	    break;
 
             	default :
-            	    break loop103;
+            	    break loop104;
                 }
             } while (true);
 
-            rs1=(Token)input.LT(1);
-            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk_data4975); if (failed) return retval;
-            if ( backtracking==0 ) {
+            rs1=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk_data4926); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
             rs1_tree = (Object)adaptor.create(rs1);
             adaptor.addChild(root_0, rs1_tree);
             }
-            if ( backtracking==0 ) {
+            if ( state.backtracking==0 ) {
               	if (!isRecursive) {
               				emit(rs1, DroolsEditorType.SYMBOL);
               			} else {
@@ -13954,30 +13350,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:1426: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1447:1: lock_on_active_key : {...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID -> VK_LOCK_ON_ACTIVE[$start, text] ;
+    public final DRLParser.lock_on_active_key_return lock_on_active_key() throws RecognitionException {
+        DRLParser.lock_on_active_key_return retval = new DRLParser.lock_on_active_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -13996,41 +13395,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:1429: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:1429:5: {...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1450:3: ({...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID -> VK_LOCK_ON_ACTIVE[$start, text] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1450:5: {...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))) ) {
-                if (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_key4999); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id1);
+            id1=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key4950); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_lock_on_active_key5003); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(mis1);
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_lock_on_active_key4954); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_lock_on_active_key5007); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id2);
+            id2=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key4958); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
 
-            mis2=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_lock_on_active_key5011); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(mis2);
+            mis2=(Token)match(input,MISC,FOLLOW_MISC_in_lock_on_active_key4962); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis2);
 
-            id3=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_lock_on_active_key5015); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id3);
+            id3=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key4966); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id3);
 
-            if ( 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);
@@ -14038,53 +13432,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();
-            // 1435:3: -> VK_LOCK_ON_ACTIVE[$start, text]
+            // 1456: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:1438: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1459:1: date_effective_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EFFECTIVE[$start, text] ;
+    public final DRLParser.date_effective_key_return date_effective_key() throws RecognitionException {
+        DRLParser.date_effective_key_return retval = new DRLParser.date_effective_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -14099,85 +13496,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:1441:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EFFECTIVE[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1441:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1462:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EFFECTIVE[$start, text] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1462:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))) ) {
-                if (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_key5047); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id1);
+            id1=(Token)match(input,ID,FOLLOW_ID_in_date_effective_key4998); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_date_effective_key5051); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(mis1);
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_date_effective_key5002); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_date_effective_key5055); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id2);
+            id2=(Token)match(input,ID,FOLLOW_ID_in_date_effective_key5006); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
 
-            if ( 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();
-            // 1445:3: -> VK_DATE_EFFECTIVE[$start, text]
+            // 1466: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:1448: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1469:1: date_expires_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EXPIRES[$start, text] ;
+    public final DRLParser.date_expires_key_return date_expires_key() throws RecognitionException {
+        DRLParser.date_expires_key_return retval = new DRLParser.date_expires_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -14192,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:1451:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EXPIRES[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1451:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1472:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EXPIRES[$start, text] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1472:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))) ) {
-                if (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_key5087); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id1);
+            id1=(Token)match(input,ID,FOLLOW_ID_in_date_expires_key5038); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_date_expires_key5091); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(mis1);
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_date_expires_key5042); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_date_expires_key5095); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id2);
+            id2=(Token)match(input,ID,FOLLOW_ID_in_date_expires_key5046); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
 
-            if ( 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();
-            // 1455:3: -> VK_DATE_EXPIRES[$start, text]
+            // 1476: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:1458: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1479:1: no_loop_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_NO_LOOP[$start, text] ;
+    public final DRLParser.no_loop_key_return no_loop_key() throws RecognitionException {
+        DRLParser.no_loop_key_return retval = new DRLParser.no_loop_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -14285,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:1461:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_NO_LOOP[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1461:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1482:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_NO_LOOP[$start, text] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1482:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))) ) {
-                if (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_key5127); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id1);
+            id1=(Token)match(input,ID,FOLLOW_ID_in_no_loop_key5078); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_no_loop_key5131); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(mis1);
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_no_loop_key5082); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_no_loop_key5135); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id2);
+            id2=(Token)match(input,ID,FOLLOW_ID_in_no_loop_key5086); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
 
-            if ( 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();
-            // 1465:3: -> VK_NO_LOOP[$start, text]
+            // 1486: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:1468: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1489:1: auto_focus_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_AUTO_FOCUS[$start, text] ;
+    public final DRLParser.auto_focus_key_return auto_focus_key() throws RecognitionException {
+        DRLParser.auto_focus_key_return retval = new DRLParser.auto_focus_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -14378,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:1471:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AUTO_FOCUS[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1471:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1492:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AUTO_FOCUS[$start, text] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1492:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))) ) {
-                if (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_key5167); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id1);
+            id1=(Token)match(input,ID,FOLLOW_ID_in_auto_focus_key5118); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_auto_focus_key5171); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(mis1);
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_auto_focus_key5122); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_auto_focus_key5175); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id2);
+            id2=(Token)match(input,ID,FOLLOW_ID_in_auto_focus_key5126); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
 
-            if ( 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();
-            // 1475:3: -> VK_AUTO_FOCUS[$start, text]
+            // 1496: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:1478: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1499:1: activation_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_ACTIVATION_GROUP[$start, text] ;
+    public final DRLParser.activation_group_key_return activation_group_key() throws RecognitionException {
+        DRLParser.activation_group_key_return retval = new DRLParser.activation_group_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -14471,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:1481:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ACTIVATION_GROUP[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1481:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1502:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ACTIVATION_GROUP[$start, text] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1502:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))) ) {
-                if (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_key5207); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id1);
+            id1=(Token)match(input,ID,FOLLOW_ID_in_activation_group_key5158); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_activation_group_key5211); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(mis1);
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_activation_group_key5162); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_activation_group_key5215); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id2);
+            id2=(Token)match(input,ID,FOLLOW_ID_in_activation_group_key5166); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
 
-            if ( 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();
-            // 1485:3: -> VK_ACTIVATION_GROUP[$start, text]
+            // 1506: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:1488: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1509:1: agenda_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_AGENDA_GROUP[$start, text] ;
+    public final DRLParser.agenda_group_key_return agenda_group_key() throws RecognitionException {
+        DRLParser.agenda_group_key_return retval = new DRLParser.agenda_group_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -14564,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:1491:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AGENDA_GROUP[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1491:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1512:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AGENDA_GROUP[$start, text] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1512:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))) ) {
-                if (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_key5247); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id1);
+            id1=(Token)match(input,ID,FOLLOW_ID_in_agenda_group_key5198); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_agenda_group_key5251); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(mis1);
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_agenda_group_key5202); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_agenda_group_key5255); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id2);
+            id2=(Token)match(input,ID,FOLLOW_ID_in_agenda_group_key5206); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
 
-            if ( 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();
-            // 1495:3: -> VK_AGENDA_GROUP[$start, text]
+            // 1516: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:1498: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1519:1: ruleflow_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_RULEFLOW_GROUP[$start, text] ;
+    public final DRLParser.ruleflow_group_key_return ruleflow_group_key() throws RecognitionException {
+        DRLParser.ruleflow_group_key_return retval = new DRLParser.ruleflow_group_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -14657,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:1501:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_RULEFLOW_GROUP[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1501:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1522:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_RULEFLOW_GROUP[$start, text] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1522:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))) ) {
-                if (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_key5287); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id1);
+            id1=(Token)match(input,ID,FOLLOW_ID_in_ruleflow_group_key5238); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_ruleflow_group_key5291); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(mis1);
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_ruleflow_group_key5242); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_ruleflow_group_key5295); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id2);
+            id2=(Token)match(input,ID,FOLLOW_ID_in_ruleflow_group_key5246); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
 
-            if ( 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();
-            // 1505:3: -> VK_RULEFLOW_GROUP[$start, text]
+            // 1526: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:1508: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1529:1: entry_point_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_ENTRY_POINT[$start, text] ;
+    public final DRLParser.entry_point_key_return entry_point_key() throws RecognitionException {
+        DRLParser.entry_point_key_return retval = new DRLParser.entry_point_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -14750,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:1511:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ENTRY_POINT[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1511:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1532:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ENTRY_POINT[$start, text] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1532:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.POINT))) ) {
-                if (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_key5327); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id1);
+            id1=(Token)match(input,ID,FOLLOW_ID_in_entry_point_key5278); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_entry_point_key5331); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(mis1);
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_entry_point_key5282); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_entry_point_key5335); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id2);
+            id2=(Token)match(input,ID,FOLLOW_ID_in_entry_point_key5286); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
 
-            if ( 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();
-            // 1515:3: -> VK_ENTRY_POINT[$start, text]
+            // 1536: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:1518: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1539:1: duration_key : {...}? =>id= ID -> VK_DURATION[$id] ;
+    public final DRLParser.duration_key_return duration_key() throws RecognitionException {
+        DRLParser.duration_key_return retval = new DRLParser.duration_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -14839,68 +14236,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1519:2: ({...}? =>id= ID -> VK_DURATION[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1519:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1540:2: ({...}? =>id= ID -> VK_DURATION[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1540:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.DURATION))) ) {
-                if (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_key5364); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_duration_key5315); 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();
-            // 1521:3: -> VK_DURATION[$id]
+            // 1542: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:1524: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1545:1: package_key : {...}? =>id= ID -> VK_PACKAGE[$id] ;
+    public final DRLParser.package_key_return package_key() throws RecognitionException {
+        DRLParser.package_key_return retval = new DRLParser.package_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -14911,68 +14310,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1525:2: ({...}? =>id= ID -> VK_PACKAGE[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1525:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1546:2: ({...}? =>id= ID -> VK_PACKAGE[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1546:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.PACKAGE))) ) {
-                if (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_key5391); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_package_key5342); 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();
-            // 1527:3: -> VK_PACKAGE[$id]
+            // 1548: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:1530: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1551:1: import_key : {...}? =>id= ID -> VK_IMPORT[$id] ;
+    public final DRLParser.import_key_return import_key() throws RecognitionException {
+        DRLParser.import_key_return retval = new DRLParser.import_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -14983,68 +14384,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1531:2: ({...}? =>id= ID -> VK_IMPORT[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1531:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1552:2: ({...}? =>id= ID -> VK_IMPORT[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1552:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.IMPORT))) ) {
-                if (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_key5418); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_import_key5369); 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();
-            // 1533:3: -> VK_IMPORT[$id]
+            // 1554: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:1536: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1557:1: dialect_key : {...}? =>id= ID -> VK_DIALECT[$id] ;
+    public final DRLParser.dialect_key_return dialect_key() throws RecognitionException {
+        DRLParser.dialect_key_return retval = new DRLParser.dialect_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -15055,68 +14458,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1537:2: ({...}? =>id= ID -> VK_DIALECT[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1537:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1558:2: ({...}? =>id= ID -> VK_DIALECT[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1558:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.DIALECT))) ) {
-                if (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_key5445); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_dialect_key5396); 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();
-            // 1539:3: -> VK_DIALECT[$id]
+            // 1560: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:1542: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1563:1: salience_key : {...}? =>id= ID -> VK_SALIENCE[$id] ;
+    public final DRLParser.salience_key_return salience_key() throws RecognitionException {
+        DRLParser.salience_key_return retval = new DRLParser.salience_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -15127,68 +14532,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1543:2: ({...}? =>id= ID -> VK_SALIENCE[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1543:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1564:2: ({...}? =>id= ID -> VK_SALIENCE[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1564:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {
-                if (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_key5472); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_salience_key5423); 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();
-            // 1545:3: -> VK_SALIENCE[$id]
+            // 1566: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:1548: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1569:1: enabled_key : {...}? =>id= ID -> VK_ENABLED[$id] ;
+    public final DRLParser.enabled_key_return enabled_key() throws RecognitionException {
+        DRLParser.enabled_key_return retval = new DRLParser.enabled_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -15199,68 +14606,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1549:2: ({...}? =>id= ID -> VK_ENABLED[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1549:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1570:2: ({...}? =>id= ID -> VK_ENABLED[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1570:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.ENABLED))) ) {
-                if (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_key5499); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_enabled_key5450); 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();
-            // 1551:3: -> VK_ENABLED[$id]
+            // 1572: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:1554: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1575:1: attributes_key : {...}? =>id= ID -> VK_ATTRIBUTES[$id] ;
+    public final DRLParser.attributes_key_return attributes_key() throws RecognitionException {
+        DRLParser.attributes_key_return retval = new DRLParser.attributes_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -15271,68 +14680,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1555:2: ({...}? =>id= ID -> VK_ATTRIBUTES[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1555:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1576:2: ({...}? =>id= ID -> VK_ATTRIBUTES[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1576:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))) ) {
-                if (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_key5526); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_attributes_key5477); 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();
-            // 1557:3: -> VK_ATTRIBUTES[$id]
+            // 1578: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:1560: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1581:1: rule_key : {...}? =>id= ID -> VK_RULE[$id] ;
+    public final DRLParser.rule_key_return rule_key() throws RecognitionException {
+        DRLParser.rule_key_return retval = new DRLParser.rule_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -15343,68 +14754,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1561:2: ({...}? =>id= ID -> VK_RULE[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1561:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1582:2: ({...}? =>id= ID -> VK_RULE[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1582:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {
-                if (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_key5553); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_rule_key5504); 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();
-            // 1563:3: -> VK_RULE[$id]
+            // 1584: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:1566: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1587:1: extend_key : {...}? =>id= ID -> VK_EXTEND[$id] ;
+    public final DRLParser.extend_key_return extend_key() throws RecognitionException {
+        DRLParser.extend_key_return retval = new DRLParser.extend_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -15415,68 +14828,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1567:2: ({...}? =>id= ID -> VK_EXTEND[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1567:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1588:2: ({...}? =>id= ID -> VK_EXTEND[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1588:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.EXTEND))) ) {
-                if (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_key5580); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_extend_key5531); 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();
-            // 1569:3: -> VK_EXTEND[$id]
+            // 1590: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:1572: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1593:1: template_key : {...}? =>id= ID -> VK_TEMPLATE[$id] ;
+    public final DRLParser.template_key_return template_key() throws RecognitionException {
+        DRLParser.template_key_return retval = new DRLParser.template_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -15487,68 +14902,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1573:2: ({...}? =>id= ID -> VK_TEMPLATE[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1573:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1594:2: ({...}? =>id= ID -> VK_TEMPLATE[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1594:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))) ) {
-                if (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_key5607); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_template_key5558); 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();
-            // 1575:3: -> VK_TEMPLATE[$id]
+            // 1596: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:1578: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1599:1: query_key : {...}? =>id= ID -> VK_QUERY[$id] ;
+    public final DRLParser.query_key_return query_key() throws RecognitionException {
+        DRLParser.query_key_return retval = new DRLParser.query_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -15559,68 +14976,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1579:2: ({...}? =>id= ID -> VK_QUERY[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1579:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1600:2: ({...}? =>id= ID -> VK_QUERY[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1600:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.QUERY))) ) {
-                if (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_key5634); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_query_key5585); 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();
-            // 1581:3: -> VK_QUERY[$id]
+            // 1602: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:1584: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1605:1: declare_key : {...}? =>id= ID -> VK_DECLARE[$id] ;
+    public final DRLParser.declare_key_return declare_key() throws RecognitionException {
+        DRLParser.declare_key_return retval = new DRLParser.declare_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -15631,68 +15050,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1585:2: ({...}? =>id= ID -> VK_DECLARE[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1585:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1606:2: ({...}? =>id= ID -> VK_DECLARE[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1606:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.DECLARE))) ) {
-                if (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_key5661); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_declare_key5612); 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();
-            // 1587:3: -> VK_DECLARE[$id]
+            // 1608: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:1590: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1611:1: function_key : {...}? =>id= ID -> VK_FUNCTION[$id] ;
+    public final DRLParser.function_key_return function_key() throws RecognitionException {
+        DRLParser.function_key_return retval = new DRLParser.function_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -15703,68 +15124,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1591:2: ({...}? =>id= ID -> VK_FUNCTION[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1591:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1612:2: ({...}? =>id= ID -> VK_FUNCTION[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1612:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))) ) {
-                if (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_key5688); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_function_key5639); 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();
-            // 1593:3: -> VK_FUNCTION[$id]
+            // 1614: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:1596: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1617:1: global_key : {...}? =>id= ID -> VK_GLOBAL[$id] ;
+    public final DRLParser.global_key_return global_key() throws RecognitionException {
+        DRLParser.global_key_return retval = new DRLParser.global_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -15775,68 +15198,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1597:2: ({...}? =>id= ID -> VK_GLOBAL[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1597:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1618:2: ({...}? =>id= ID -> VK_GLOBAL[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1618:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))) ) {
-                if (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_key5715); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_global_key5666); 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();
-            // 1599:3: -> VK_GLOBAL[$id]
+            // 1620: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:1602: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1623:1: eval_key : {...}? =>id= ID -> VK_EVAL[$id] ;
+    public final DRLParser.eval_key_return eval_key() throws RecognitionException {
+        DRLParser.eval_key_return retval = new DRLParser.eval_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -15847,284 +15272,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1603:2: ({...}? =>id= ID -> VK_EVAL[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1603:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1624:2: ({...}? =>id= ID -> VK_EVAL[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1624:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.EVAL))) ) {
-                if (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_key5742); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_eval_key5693); 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 ) {
-            retval.tree = root_0;
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
-            root_0 = (Object)adaptor.nil();
-            // 1605:3: -> VK_EVAL[$id]
-            {
-                adaptor.addChild(root_0, adaptor.create(VK_EVAL, id));
-
-            }
-
-            }
-
-            }
-
-            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 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:1608: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();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token id=null;
-
-        Object id_tree=null;
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
-
-        try {
-            // src/main/resources/org/drools/lang/DRL.g:1609:2: ({...}? =>id= ID -> VK_CONTAINS[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1609:4: {...}? =>id= ID
-            {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.CONTAINS))) ) {
-                if (backtracking>0) {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_key5769); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
-
-            if ( 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();
-            // 1611:3: -> VK_CONTAINS[$id]
+            // 1626:3: -> VK_EVAL[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_CONTAINS, 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);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end contains_key
+            if ( state.backtracking==0 ) {
 
-    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:1614: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();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token id=null;
-
-        Object id_tree=null;
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
-
-        try {
-            // src/main/resources/org/drools/lang/DRL.g:1615:2: ({...}? =>id= ID -> VK_MATCHES[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1615:4: {...}? =>id= ID
-            {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.MATCHES))) ) {
-                if (backtracking>0) {failed=true; return retval;}
-                throw new FailedPredicateException(input, "matches_key", "(validateIdentifierKey(DroolsSoftKeywords.MATCHES))");
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_matches_key5796); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
-
-            if ( backtracking==0 ) {
-              	emit(id, DroolsEditorType.KEYWORD);	
-            }
-
-            // 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();
-            // 1617:3: -> VK_MATCHES[$id]
-            {
-                adaptor.addChild(root_0, adaptor.create(VK_MATCHES, id));
-
-            }
-
-            }
-
-            }
-
-            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 matches_key
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 
-    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:1620: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();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token id=null;
-
-        Object id_tree=null;
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
-
-        try {
-            // src/main/resources/org/drools/lang/DRL.g:1621:2: ({...}? =>id= ID -> VK_EXCLUDES[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1621:4: {...}? =>id= ID
-            {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.EXCLUDES))) ) {
-                if (backtracking>0) {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_key5823); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
-
-            if ( backtracking==0 ) {
-              	emit(id, DroolsEditorType.KEYWORD);	
-            }
-
-            // 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();
-            // 1623:3: -> VK_EXCLUDES[$id]
-            {
-                adaptor.addChild(root_0, adaptor.create(VK_EXCLUDES, id));
-
-            }
-
-            }
-
-            }
-
-            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 excludes_key
+    // $ANTLR end "eval_key"
 
-    public static class soundslike_key_return extends ParserRuleReturnScope {
+    public static class not_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
-    // $ANTLR start soundslike_key
-    // src/main/resources/org/drools/lang/DRL.g:1626: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 "not_key"
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1629:1: not_key : {...}? =>id= ID -> VK_NOT[$id] ;
+    public final DRLParser.not_key_return not_key() throws RecognitionException {
+        DRLParser.not_key_return retval = new DRLParser.not_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -16135,212 +15346,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1627:2: ({...}? =>id= ID -> VK_SOUNDSLIKE[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1627:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1630:2: ({...}? =>id= ID -> VK_NOT[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1630:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE))) ) {
-                if (backtracking>0) {failed=true; return retval;}
-                throw new FailedPredicateException(input, "soundslike_key", "(validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE))");
+            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_soundslike_key5850); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_not_key5720); 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();
-            // 1629:3: -> VK_SOUNDSLIKE[$id]
+            // 1632:3: -> VK_NOT[$id]
             {
-                adaptor.addChild(root_0, adaptor.create(VK_SOUNDSLIKE, 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);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end soundslike_key
+            if ( state.backtracking==0 ) {
 
-    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:1632: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();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token id=null;
-
-        Object id_tree=null;
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
-
-        try {
-            // src/main/resources/org/drools/lang/DRL.g:1633:2: ({...}? =>id= ID -> VK_MEMBEROF[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1633:4: {...}? =>id= ID
-            {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF))) ) {
-                if (backtracking>0) {failed=true; return retval;}
-                throw new FailedPredicateException(input, "memberof_key", "(validateIdentifierKey(DroolsSoftKeywords.MEMBEROF))");
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_memberof_key5877); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
-
-            if ( backtracking==0 ) {
-              	emit(id, DroolsEditorType.KEYWORD);	
-            }
-
-            // 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();
-            // 1635:3: -> VK_MEMBEROF[$id]
-            {
-                adaptor.addChild(root_0, adaptor.create(VK_MEMBEROF, id));
-
-            }
-
-            }
-
-            }
-
-            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 memberof_key
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 
-    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:1638: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();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token id=null;
-
-        Object id_tree=null;
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
-
-        try {
-            // src/main/resources/org/drools/lang/DRL.g:1639:2: ({...}? =>id= ID -> VK_NOT[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1639:4: {...}? =>id= ID
-            {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.NOT))) ) {
-                if (backtracking>0) {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_key5904); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
-
-            if ( backtracking==0 ) {
-              	emit(id, DroolsEditorType.KEYWORD);	
-            }
-
-            // 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();
-            // 1641:3: -> VK_NOT[$id]
-            {
-                adaptor.addChild(root_0, adaptor.create(VK_NOT, id));
-
-            }
-
-            }
-
-            }
-
-            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 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:1644: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1635:1: in_key : {...}? =>id= ID -> VK_IN[$id] ;
+    public final DRLParser.in_key_return in_key() throws RecognitionException {
+        DRLParser.in_key_return retval = new DRLParser.in_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -16351,68 +15420,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1645:2: ({...}? =>id= ID -> VK_IN[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1645:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1636:2: ({...}? =>id= ID -> VK_IN[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1636:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
-                if (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_key5931); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_in_key5747); 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();
-            // 1647:3: -> VK_IN[$id]
+            // 1638: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:1650: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1641:1: or_key : {...}? =>id= ID -> VK_OR[$id] ;
+    public final DRLParser.or_key_return or_key() throws RecognitionException {
+        DRLParser.or_key_return retval = new DRLParser.or_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -16423,68 +15494,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1651:2: ({...}? =>id= ID -> VK_OR[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1651:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1642:2: ({...}? =>id= ID -> VK_OR[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1642:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.OR))) ) {
-                if (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_key5958); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_or_key5774); 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();
-            // 1653:3: -> VK_OR[$id]
+            // 1644: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:1656: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1647:1: and_key : {...}? =>id= ID -> VK_AND[$id] ;
+    public final DRLParser.and_key_return and_key() throws RecognitionException {
+        DRLParser.and_key_return retval = new DRLParser.and_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -16495,68 +15568,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1657:2: ({...}? =>id= ID -> VK_AND[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1657:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1648:2: ({...}? =>id= ID -> VK_AND[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1648:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.AND))) ) {
-                if (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_key5985); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_and_key5801); 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();
-            // 1659:3: -> VK_AND[$id]
+            // 1650: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:1662: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1653:1: exists_key : {...}? =>id= ID -> VK_EXISTS[$id] ;
+    public final DRLParser.exists_key_return exists_key() throws RecognitionException {
+        DRLParser.exists_key_return retval = new DRLParser.exists_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -16567,68 +15642,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1663:2: ({...}? =>id= ID -> VK_EXISTS[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1663:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1654:2: ({...}? =>id= ID -> VK_EXISTS[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1654:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.EXISTS))) ) {
-                if (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_key6012); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_exists_key5828); 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();
-            // 1665:3: -> VK_EXISTS[$id]
+            // 1656: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:1668: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1659:1: forall_key : {...}? =>id= ID -> VK_FORALL[$id] ;
+    public final DRLParser.forall_key_return forall_key() throws RecognitionException {
+        DRLParser.forall_key_return retval = new DRLParser.forall_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -16639,68 +15716,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1669:2: ({...}? =>id= ID -> VK_FORALL[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1669:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1660:2: ({...}? =>id= ID -> VK_FORALL[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1660:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.FORALL))) ) {
-                if (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_key6039); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_forall_key5855); 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();
-            // 1671:3: -> VK_FORALL[$id]
+            // 1662: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:1674: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1665:1: action_key : {...}? =>id= ID -> VK_ACTION[$id] ;
+    public final DRLParser.action_key_return action_key() throws RecognitionException {
+        DRLParser.action_key_return retval = new DRLParser.action_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -16711,68 +15790,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1675:2: ({...}? =>id= ID -> VK_ACTION[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1675:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1666:2: ({...}? =>id= ID -> VK_ACTION[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1666:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.ACTION))) ) {
-                if (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_key6066); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_action_key5882); 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();
-            // 1677:3: -> VK_ACTION[$id]
+            // 1668: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:1680: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1671:1: reverse_key : {...}? =>id= ID -> VK_REVERSE[$id] ;
+    public final DRLParser.reverse_key_return reverse_key() throws RecognitionException {
+        DRLParser.reverse_key_return retval = new DRLParser.reverse_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -16783,68 +15864,70 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1681:2: ({...}? =>id= ID -> VK_REVERSE[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1681:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1672:2: ({...}? =>id= ID -> VK_REVERSE[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1672:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.REVERSE))) ) {
-                if (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_key6093); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_reverse_key5909); 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();
-            // 1683:3: -> VK_REVERSE[$id]
+            // 1674: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:1686: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1677:1: result_key : {...}? =>id= ID -> VK_RESULT[$id] ;
+    public final DRLParser.result_key_return result_key() throws RecognitionException {
+        DRLParser.result_key_return retval = new DRLParser.result_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
@@ -16855,235 +15938,243 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1687:2: ({...}? =>id= ID -> VK_RESULT[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1687:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1678:2: ({...}? =>id= ID -> VK_RESULT[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1678:4: {...}? =>id= ID
             {
-            if ( !((validateIdentifierKey(DroolsSoftKeywords.RESULT))) ) {
-                if (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_key6120); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(id);
+            id=(Token)match(input,ID,FOLLOW_ID_in_result_key5936); 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();
-            // 1689:3: -> VK_RESULT[$id]
+            // 1680: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:819:5: ( LEFT_PAREN or_key )
-        // src/main/resources/org/drools/lang/DRL.g:819:6: LEFT_PAREN or_key
+    // $ANTLR start synpred1_DRL
+    public final void synpred1_DRL_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:809:5: ( LEFT_PAREN or_key )
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:809:6: LEFT_PAREN or_key
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred12087); if (failed) return ;
-        pushFollow(FOLLOW_or_key_in_synpred12089);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred1_DRL2033); if (state.failed) return ;
+        pushFollow(FOLLOW_or_key_in_synpred1_DRL2035);
         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:827:5: ( or_key | DOUBLE_PIPE )
-        int alt104=2;
-        int LA104_0 = input.LA(1);
+    // $ANTLR start synpred2_DRL
+    public final void synpred2_DRL_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:817:5: ( or_key | DOUBLE_PIPE )
+        int alt105=2;
+        int LA105_0 = input.LA(1);
 
-        if ( (LA104_0==ID) && ((validateIdentifierKey(DroolsSoftKeywords.OR)))) {
-            alt104=1;
+        if ( (LA105_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.OR))))) {
+            alt105=1;
         }
-        else if ( (LA104_0==DOUBLE_PIPE) ) {
-            alt104=2;
+        else if ( (LA105_0==DOUBLE_PIPE) ) {
+            alt105=2;
         }
         else {
-            if (backtracking>0) {failed=true; return ;}
+            if (state.backtracking>0) {state.failed=true; return ;}
             NoViableAltException nvae =
-                new NoViableAltException("827:5: synpred2 : ( or_key | DOUBLE_PIPE );", 104, 0, input);
+                new NoViableAltException("", 105, 0, input);
 
             throw nvae;
         }
-        switch (alt104) {
+        switch (alt105) {
             case 1 :
-                // src/main/resources/org/drools/lang/DRL.g:827:6: or_key
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:817:6: or_key
                 {
-                pushFollow(FOLLOW_or_key_in_synpred22156);
+                pushFollow(FOLLOW_or_key_in_synpred2_DRL2102);
                 or_key();
-                _fsp--;
-                if (failed) return ;
 
+                state._fsp--;
+                if (state.failed) return ;
+
                 }
                 break;
             case 2 :
-                // src/main/resources/org/drools/lang/DRL.g:827:13: DOUBLE_PIPE
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:817:13: DOUBLE_PIPE
                 {
-                match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_synpred22158); if (failed) return ;
+                match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_synpred2_DRL2104); 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:836:5: ( LEFT_PAREN and_key )
-        // src/main/resources/org/drools/lang/DRL.g:836:6: LEFT_PAREN and_key
+    // $ANTLR start synpred3_DRL
+    public final void synpred3_DRL_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:826:5: ( LEFT_PAREN and_key )
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:826:6: LEFT_PAREN and_key
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred32215); if (failed) return ;
-        pushFollow(FOLLOW_and_key_in_synpred32217);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred3_DRL2161); if (state.failed) return ;
+        pushFollow(FOLLOW_and_key_in_synpred3_DRL2163);
         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:844:5: ( and_key | DOUBLE_AMPER )
-        int alt105=2;
-        int LA105_0 = input.LA(1);
+    // $ANTLR start synpred4_DRL
+    public final void synpred4_DRL_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:834:5: ( and_key | DOUBLE_AMPER )
+        int alt106=2;
+        int LA106_0 = input.LA(1);
 
-        if ( (LA105_0==ID) && ((validateIdentifierKey(DroolsSoftKeywords.AND)))) {
-            alt105=1;
+        if ( (LA106_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AND))))) {
+            alt106=1;
         }
-        else if ( (LA105_0==DOUBLE_AMPER) ) {
-            alt105=2;
+        else if ( (LA106_0==DOUBLE_AMPER) ) {
+            alt106=2;
         }
         else {
-            if (backtracking>0) {failed=true; return ;}
+            if (state.backtracking>0) {state.failed=true; return ;}
             NoViableAltException nvae =
-                new NoViableAltException("844:5: synpred4 : ( and_key | DOUBLE_AMPER );", 105, 0, input);
+                new NoViableAltException("", 106, 0, input);
 
             throw nvae;
         }
-        switch (alt105) {
+        switch (alt106) {
             case 1 :
-                // src/main/resources/org/drools/lang/DRL.g:844:6: and_key
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:834:6: and_key
                 {
-                pushFollow(FOLLOW_and_key_in_synpred42285);
+                pushFollow(FOLLOW_and_key_in_synpred4_DRL2231);
                 and_key();
-                _fsp--;
-                if (failed) return ;
 
+                state._fsp--;
+                if (state.failed) return ;
+
                 }
                 break;
             case 2 :
-                // src/main/resources/org/drools/lang/DRL.g:844:14: DOUBLE_AMPER
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:834:14: DOUBLE_AMPER
                 {
-                match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_synpred42287); if (failed) return ;
+                match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_synpred4_DRL2233); 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:861:4: ( SEMICOLON )
-        // src/main/resources/org/drools/lang/DRL.g:861:5: SEMICOLON
+    // $ANTLR start synpred5_DRL
+    public final void synpred5_DRL_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:851:4: ( SEMICOLON )
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:851:5: SEMICOLON
         {
-        match(input,SEMICOLON,FOLLOW_SEMICOLON_in_synpred52410); if (failed) return ;
+        match(input,SEMICOLON,FOLLOW_SEMICOLON_in_synpred5_DRL2356); 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:867:12: ( LEFT_PAREN ( or_key | and_key ) )
-        // src/main/resources/org/drools/lang/DRL.g:867:13: LEFT_PAREN ( or_key | and_key )
+    // $ANTLR start synpred6_DRL
+    public final void synpred6_DRL_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:857:12: ( LEFT_PAREN ( or_key | and_key ) )
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:857:13: LEFT_PAREN ( or_key | and_key )
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred62447); if (failed) return ;
-        // src/main/resources/org/drools/lang/DRL.g:867:24: ( or_key | and_key )
-        int alt106=2;
-        int LA106_0 = input.LA(1);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred6_DRL2393); if (state.failed) return ;
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:857:24: ( or_key | and_key )
+        int alt107=2;
+        int LA107_0 = input.LA(1);
 
-        if ( (LA106_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AND))||(validateIdentifierKey(DroolsSoftKeywords.OR))))) {
-            int LA106_1 = input.LA(2);
+        if ( (LA107_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.AND)))||((validateIdentifierKey(DroolsSoftKeywords.OR)))))) {
+            int LA107_1 = input.LA(2);
 
-            if ( ((validateIdentifierKey(DroolsSoftKeywords.OR))) ) {
-                alt106=1;
+            if ( (((validateIdentifierKey(DroolsSoftKeywords.OR)))) ) {
+                alt107=1;
             }
-            else if ( ((validateIdentifierKey(DroolsSoftKeywords.AND))) ) {
-                alt106=2;
+            else if ( (((validateIdentifierKey(DroolsSoftKeywords.AND)))) ) {
+                alt107=2;
             }
             else {
-                if (backtracking>0) {failed=true; return ;}
+                if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("867:24: ( or_key | and_key )", 106, 1, input);
+                    new NoViableAltException("", 107, 1, input);
 
                 throw nvae;
             }
         }
         else {
-            if (backtracking>0) {failed=true; return ;}
+            if (state.backtracking>0) {state.failed=true; return ;}
             NoViableAltException nvae =
-                new NoViableAltException("867:24: ( or_key | and_key )", 106, 0, input);
+                new NoViableAltException("", 107, 0, input);
 
             throw nvae;
         }
-        switch (alt106) {
+        switch (alt107) {
             case 1 :
-                // src/main/resources/org/drools/lang/DRL.g:867:25: or_key
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:857:25: or_key
                 {
-                pushFollow(FOLLOW_or_key_in_synpred62450);
+                pushFollow(FOLLOW_or_key_in_synpred6_DRL2396);
                 or_key();
-                _fsp--;
-                if (failed) return ;
 
+                state._fsp--;
+                if (state.failed) return ;
+
                 }
                 break;
             case 2 :
-                // src/main/resources/org/drools/lang/DRL.g:867:32: and_key
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:857:32: and_key
                 {
-                pushFollow(FOLLOW_and_key_in_synpred62452);
+                pushFollow(FOLLOW_and_key_in_synpred6_DRL2398);
                 and_key();
-                _fsp--;
-                if (failed) return ;
 
+                state._fsp--;
+                if (state.failed) return ;
+
                 }
                 break;
 
@@ -17092,61 +16183,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:883:5: ( LEFT_PAREN ( or_key | and_key ) )
-        // src/main/resources/org/drools/lang/DRL.g:883:6: LEFT_PAREN ( or_key | and_key )
+    // $ANTLR start synpred7_DRL
+    public final void synpred7_DRL_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:873:5: ( LEFT_PAREN ( or_key | and_key ) )
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:873:6: LEFT_PAREN ( or_key | and_key )
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred72575); if (failed) return ;
-        // src/main/resources/org/drools/lang/DRL.g:883:17: ( or_key | and_key )
-        int alt107=2;
-        int LA107_0 = input.LA(1);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred7_DRL2521); if (state.failed) return ;
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:873:17: ( or_key | and_key )
+        int alt108=2;
+        int LA108_0 = input.LA(1);
 
-        if ( (LA107_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AND))||(validateIdentifierKey(DroolsSoftKeywords.OR))))) {
-            int LA107_1 = input.LA(2);
+        if ( (LA108_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.AND)))||((validateIdentifierKey(DroolsSoftKeywords.OR)))))) {
+            int LA108_1 = input.LA(2);
 
-            if ( ((validateIdentifierKey(DroolsSoftKeywords.OR))) ) {
-                alt107=1;
+            if ( (((validateIdentifierKey(DroolsSoftKeywords.OR)))) ) {
+                alt108=1;
             }
-            else if ( ((validateIdentifierKey(DroolsSoftKeywords.AND))) ) {
-                alt107=2;
+            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("883:17: ( or_key | and_key )", 107, 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("883:17: ( or_key | and_key )", 107, 0, input);
+                new NoViableAltException("", 108, 0, input);
 
             throw nvae;
         }
-        switch (alt107) {
+        switch (alt108) {
             case 1 :
-                // src/main/resources/org/drools/lang/DRL.g:883:18: or_key
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:873:18: or_key
                 {
-                pushFollow(FOLLOW_or_key_in_synpred72578);
+                pushFollow(FOLLOW_or_key_in_synpred7_DRL2524);
                 or_key();
-                _fsp--;
-                if (failed) return ;
 
+                state._fsp--;
+                if (state.failed) return ;
+
                 }
                 break;
             case 2 :
-                // src/main/resources/org/drools/lang/DRL.g:883:25: and_key
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:873:25: and_key
                 {
-                pushFollow(FOLLOW_and_key_in_synpred72580);
+                pushFollow(FOLLOW_and_key_in_synpred7_DRL2526);
                 and_key();
-                _fsp--;
-                if (failed) return ;
 
+                state._fsp--;
+                if (state.failed) return ;
+
                 }
                 break;
 
@@ -17155,149 +16248,406 @@
 
         }
     }
-    // $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:1052:5: ( LEFT_PAREN )
-        // src/main/resources/org/drools/lang/DRL.g:1052:6: LEFT_PAREN
+    // $ANTLR start synpred8_DRL
+    public final void synpred8_DRL_fragment() throws RecognitionException {   
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1050:5: ( LEFT_PAREN )
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1050:6: LEFT_PAREN
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred83409); if (failed) return ;
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred8_DRL3355); 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\120\2\uffff\1\0\5\uffff";
+    static final String DFA1_maxS =
+        "\1\120\1\163\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\uffff\1\1\2\uffff\1\0\5\uffff}>";
+    static final String[] DFA1_transitionS = {
+            "\1\1",
+            "\1\4\3\uffff\1\5\1\7\6\uffff\1\10\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 "394: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_4 = input.LA(1);
+
+                         
+                        int index1_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.PACKAGE)))) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index1_4);
+                        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) ) {s = 4;}
+
+                        else if ( (LA1_1==STRING) ) {s = 5;}
+
+                        else if ( (LA1_1==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 6;}
+
+                        else if ( (LA1_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))))) {s = 7;}
+
+                        else if ( (LA1_1==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 8;}
+
+                         
+                        input.seek(index1_1);
+                        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\120\1\uffff\1\0\2\uffff\1\0\11\uffff";
+    static final String DFA5_maxS =
+        "\1\120\1\163\1\uffff\1\0\2\uffff\1\0\11\uffff";
+    static final String DFA5_acceptS =
+        "\2\uffff\1\1\1\uffff\2\1\1\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\uffff\1\0\1\uffff\1\1\2\uffff\1\2\11\uffff}>";
+    static final String[] DFA5_transitionS = {
+            "\1\1",
+            "\1\3\3\uffff\1\6\1\5\6\uffff\1\7\1\4\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 "452: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_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==ID) && ((!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((vali!
 dateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsS!
 oftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "
function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLA!
 RE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&!
 &((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((vali
dateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifier!
 Key(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSof!
 tKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLA
RE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))!
 ))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT!
 ))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((valida
teLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1,!
  DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(Droo!
 lsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKe
ywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.!
 QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)!
 ))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateL
T(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIde!
 ntifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifie!
 rKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoft
Keywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))!
 ||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!
 (((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKe
y(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSo!
 ftKeywords.TEMPLATE))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeyw!
 ords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QU
ERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))|!
 |((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((va!
 lidateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(Dro
olsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKe!
 y(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKey!
 words.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||
(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&(!
 (validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdenti!
 fierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && val
idateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)!
 )))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((v!
 alidateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateI
dentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifi!
 erKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeyw!
 ords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))
))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))!
 ||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateI!
 dentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, "i
mport") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(Dr!
 oolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, "import") && va!
 lidateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords
.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((val!
 idateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, 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))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifi!
 erKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywor
ds.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECL!
 ARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))!
 ))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdenti
fierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, Dr!
 oolsSoftKeywords.TEMPLATE))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSo!
 ftKeywords.DECLARE)))))))||!((((((validateLT(1, "import") && validateL
T(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUE!
 RY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))|!
 |((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1
, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKe!
 y(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifier!
 Key(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKey
words.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeyword!
 s.IMPORT))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)!
 ))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((val
idateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateId!
 entifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifi!
 erKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoft
Keywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!
 !(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((!
 validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifie
rKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifie!
 rKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSo!
 ftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "fun
ction") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((val!
 idateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((valid!
 ateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, Drool
sSoftKeywords.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))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(Drool!
 sSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && va!
 lidateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords
.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((!
 (validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((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.QUERY)))||((validateIdentif
ierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && v!
 alidateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeyword!
 s.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((va
lidateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validate!
 LT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, Dro!
 olsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords
.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE))!
 )&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))!
 ||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIde
ntifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifier!
 Key(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(Dr!
 oolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.
GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((!
 (((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!((((((va!
 lidateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(Dro
olsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(Drool!
 sSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoft!
 Keywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTIO
N)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT!
 (1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(!
 DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywor
ds.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKe!
 ywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLA!
 RE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((valida
teIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, 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, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "imp!
 ort") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsS
oftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKey!
 words.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.!
 IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((v
alidateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentif!
 ierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, !
 DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsS
oftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))))) {s = 3;}
+
+                        else if ( (LA5_1==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 4;}
+
+                        else if ( (LA5_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))))) {s = 5;}
+
+                        else if ( (LA5_1==STRING) && ((!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((vali!
 dateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, !
 DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsS
oftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords!
 .QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))|!
 |((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1
, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSof!
 tKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.!
 TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY))
)||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((valida!
 teIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifi!
 erKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeyword
s.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)!
 )))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!((!
 (((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdenti
fierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(Dro!
 olsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKey!
 words.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!
(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((valida!
 teIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, Dr!
 oolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSof
tKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.Q!
 UERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((vali!
 dateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey
(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoft!
 Keywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.D!
 IALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((va
lidateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, D!
 roolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftK!
 eywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords
.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||!
 ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validate!
 IdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSof
tKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.T!
 EMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))!
 )))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((valida
teIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifie!
 rKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))))) {s = 6;}
+
+                        else if ( (LA5_1==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 7;}
+
+                         
+                        input.seek(index5_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA5_3 = input.LA(1);
+
+                         
+                        int index5_3 = 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)))) ) {s = 12;}
+
+                        else if ( ((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))) ) {s = 13;}
+
+                        else if ( (!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))) ) {s = 14;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) ) {s = 15;}
+
+                         
+                        input.seek(index5_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        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)))) ) {s = 12;}
+
+                        else if ( (!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))) ) {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\124\1\uffff\1\124\1\uffff\1\124\1\164\3\124\2\164\1\131\1\124";
+        "\2\120\1\uffff\1\120\1\uffff\2\120\2\157\2\120\1\125\1\157\1\120";
     static final String DFA12_maxS =
-        "\1\131\1\133\1\uffff\1\163\1\uffff\1\124\1\164\3\163\2\164\2\163";
+        "\1\125\1\127\1\uffff\1\156\1\uffff\1\156\1\120\2\157\3\156\1\157"+
+        "\1\156";
     static final String DFA12_acceptS =
         "\2\uffff\1\2\1\uffff\1\1\11\uffff";
     static final String DFA12_specialS =
@@ -17306,17 +16656,17 @@
             "\1\2\2\uffff\1\2\1\uffff\1\1",
             "\1\3\4\uffff\1\2\1\uffff\1\4",
             "",
-            "\1\7\1\5\3\uffff\1\2\2\4\1\uffff\1\2\25\uffff\1\6",
+            "\1\5\1\6\3\uffff\1\2\2\4\1\uffff\1\2\24\uffff\1\7",
             "",
-            "\1\10",
+            "\2\2\3\uffff\1\2\2\4\1\uffff\1\2\24\uffff\1\10",
             "\1\11",
-            "\2\2\3\uffff\1\2\2\4\1\uffff\1\2\25\uffff\1\12",
-            "\1\4\1\5\3\uffff\1\2\31\uffff\1\13",
-            "\1\4\4\uffff\1\2\2\4\27\uffff\1\6",
-            "\1\14",
+            "\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",
             "\1\15",
-            "\1\2\2\4\27\uffff\1\12",
-            "\1\4\4\uffff\1\2\31\uffff\1\13"
+            "\1\4\4\uffff\1\2\30\uffff\1\14"
     };
 
     static final short[] DFA12_eot = DFA.unpackEncodedString(DFA12_eotS);
@@ -17349,7 +16699,7 @@
             this.transition = DFA12_transition;
         }
         public String getDescription() {
-            return "538:3: ( parameters )?";
+            return "523:3: ( parameters )?";
         }
     }
     static final String DFA17_eotS =
@@ -17357,20 +16707,20 @@
     static final String DFA17_eofS =
         "\6\uffff";
     static final String DFA17_minS =
-        "\2\124\1\uffff\1\164\1\uffff\1\124";
+        "\2\120\1\uffff\1\157\1\uffff\1\120";
     static final String DFA17_maxS =
-        "\1\124\1\163\1\uffff\1\164\1\uffff\1\163";
+        "\1\120\1\156\1\uffff\1\157\1\uffff\1\156";
     static final String DFA17_acceptS =
         "\2\uffff\1\1\1\uffff\1\2\1\uffff";
     static final String DFA17_specialS =
         "\6\uffff}>";
     static final String[] DFA17_transitionS = {
             "\1\1",
-            "\2\2\4\uffff\2\4\27\uffff\1\3",
+            "\2\2\4\uffff\2\4\26\uffff\1\3",
             "",
             "\1\5",
             "",
-            "\1\2\5\uffff\2\4\27\uffff\1\3"
+            "\1\2\5\uffff\2\4\26\uffff\1\3"
     };
 
     static final short[] DFA17_eot = DFA.unpackEncodedString(DFA17_eotS);
@@ -17403,2324 +16753,1254 @@
             this.transition = DFA17_transition;
         }
         public String getDescription() {
-            return "564:4: ( data_type )?";
+            return "549:4: ( data_type )?";
         }
     }
-    static final String DFA37_eotS =
-        "\31\uffff";
-    static final String DFA37_eofS =
-        "\31\uffff";
-    static final String DFA37_minS =
-        "\1\124\1\130\1\124\1\0\1\4\2\uffff\1\130\2\uffff\1\4\2\0\1\uffff"+
-        "\1\0\2\uffff\1\0\7\uffff";
-    static final String DFA37_maxS =
-        "\1\124\1\170\1\124\1\0\1\u0082\2\uffff\1\170\2\uffff\1\u0082\2\0"+
-        "\1\uffff\1\0\2\uffff\1\0\7\uffff";
-    static final String DFA37_acceptS =
-        "\5\uffff\1\14\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\3\1\12\1\5\1\1\2\uffff\1\4\2\uffff\1\11\1\0\1\2\1\uffff"+
-        "\1\6\2\uffff\1\7\7\uffff}>";
-    static final String[] DFA37_transitionS = {
-            "\1\1",
-            "\1\5\1\4\6\uffff\1\6\1\3\26\uffff\1\2",
-            "\1\7",
-            "\1\uffff",
-            "\125\12\1\13\1\12\1\14\47\12",
+    static final String DFA28_eotS =
+        "\12\uffff";
+    static final String DFA28_eofS =
+        "\12\uffff";
+    static final String DFA28_minS =
+        "\2\120\5\uffff\1\0\2\uffff";
+    static final String DFA28_maxS =
+        "\1\160\1\163\5\uffff\1\0\2\uffff";
+    static final String DFA28_acceptS =
+        "\2\uffff\5\2\1\uffff\1\1\1\2";
+    static final String DFA28_specialS =
+        "\1\2\1\0\5\uffff\1\1\2\uffff}>";
+    static final String[] DFA28_transitionS = {
+            "\1\1\7\uffff\1\2\2\uffff\1\2\24\uffff\1\2",
+            "\1\10\3\uffff\1\7\1\6\3\uffff\1\11\2\uffff\1\5\1\4\25\uffff"+
+            "\1\3",
             "",
             "",
-            "\1\16\37\uffff\1\15",
             "",
             "",
-            "\125\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 "685: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 "641: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_11 = input.LA(1);
+                        int LA28_1 = input.LA(1);
 
                          
-                        int index37_11 = input.index();
+                        int index28_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {s = 18;}
+                        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==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 4;}
 
-                         
-                        input.seek(index37_11);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 1 : 
-                        int LA37_4 = input.LA(1);
+                        else if ( (LA28_1==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 5;}
 
-                         
-                        int index37_4 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( ((LA37_4>=VT_COMPILATION_UNIT && LA37_4<=STRING)||LA37_4==COMMA||(LA37_4>=AT && LA37_4<=MULTI_LINE_COMMENT)) && (((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 10;}
+                        else if ( (LA28_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))))) {s = 6;}
 
-                        else if ( (LA37_4==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 11;}
+                        else if ( (LA28_1==STRING) && ((((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))))) {s = 7;}
 
-                        else if ( (LA37_4==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 12;}
+                        else if ( (LA28_1==ID) && (((validateIdentifierKey(DroolsSoftKeywords.EXTEND))))) {s = 8;}
 
-                         
-                        input.seek(index37_4);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 2 : 
-                        int LA37_12 = input.LA(1);
+                        else if ( (LA28_1==COLON) && (((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))))) {s = 9;}
 
                          
-                        int index37_12 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {s = 8;}
-
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.ENABLED))) ) {s = 6;}
-
-                         
-                        input.seek(index37_12);
+                        input.seek(index28_1);
                         if ( s>=0 ) return s;
                         break;
-                    case 3 : 
-                        int LA37_1 = input.LA(1);
+                    case 1 : 
+                        int LA28_7 = input.LA(1);
 
                          
-                        int index37_1 = input.index();
+                        int index28_7 = 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;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))) ) {s = 8;}
 
-                        else if ( (LA37_1==INT) && (((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))))) {s = 3;}
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) ) {s = 9;}
 
-                        else if ( (LA37_1==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 4;}
-
-                        else if ( (LA37_1==STRING) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 5;}
-
-                        else if ( (LA37_1==BOOL) && ((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))) {s = 6;}
-
                          
-                        input.seek(index37_1);
+                        input.seek(index28_7);
                         if ( s>=0 ) return s;
                         break;
-                    case 4 : 
-                        int LA37_7 = input.LA(1);
+                    case 2 : 
+                        int LA28_0 = input.LA(1);
 
                          
-                        int index37_7 = input.index();
+                        int index28_0 = 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;}
+                        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;}
 
-                        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 ( (LA28_0==AT||LA28_0==WHEN||LA28_0==THEN) ) {s = 2;}
 
-                        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 5 : 
-                        int LA37_3 = input.LA(1);
-
-                         
-                        int index37_3 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {s = 8;}
-
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.DURATION))) ) {s = 9;}
-
-                         
-                        input.seek(index37_3);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 6 : 
-                        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;
-                    case 7 : 
-                        int LA37_17 = input.LA(1);
-
-                         
-                        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);
-                        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.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))||(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_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 10 : 
-                        int LA37_2 = input.LA(1);
-
-                         
-                        int index37_2 = 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;}
-
-                         
-                        input.seek(index37_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(), 37, _s, input);
+                new NoViableAltException(getDescription(), 28, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA54_eotS =
-        "\u0082\uffff";
-    static final String DFA54_eofS =
-        "\u0082\uffff";
-    static final String DFA54_minS =
-        "\3\124\2\0\1\124\1\0\1\124\1\164\3\uffff\1\125\1\124\1\uffff\1\125"+
-        "\1\131\1\124\1\164\1\124\1\125\1\124\1\125\1\131\1\124\2\0\1\124"+
-        "\1\164\2\124\2\0\1\124\1\4\11\124\1\0\2\uffff\1\125\1\131\1\124"+
-        "\1\0\2\124\1\4\11\124\1\0\1\uffff\1\124\1\4\16\0\1\uffff\14\0\1"+
-        "\uffff\23\0\1\uffff\17\0";
-    static final String DFA54_maxS =
-        "\2\131\1\163\2\0\1\131\1\0\1\124\1\164\3\uffff\1\163\1\124\1\uffff"+
-        "\2\163\1\124\1\164\1\133\1\163\1\133\3\163\2\0\1\124\1\164\1\133"+
-        "\1\163\2\0\1\124\1\u0082\1\124\7\162\1\124\1\0\2\uffff\3\163\1\0"+
-        "\1\142\1\124\1\u0082\1\124\7\162\1\124\1\0\1\uffff\1\163\1\u0082"+
-        "\16\0\1\uffff\14\0\1\uffff\23\0\1\uffff\17\0";
-    static final String DFA54_acceptS =
-        "\11\uffff\1\1\2\2\2\uffff\1\3\36\uffff\2\3\21\uffff\1\3\20\uffff"+
-        "\1\3\14\uffff\1\3\23\uffff\1\3\17\uffff";
-    static final String DFA54_specialS =
-        "\2\uffff\1\4\1\12\1\0\1\uffff\1\10\22\uffff\1\7\1\2\4\uffff\1\6"+
-        "\1\3\13\uffff\1\5\5\uffff\1\11\14\uffff\1\1\102\uffff}>";
-    static final String[] DFA54_transitionS = {
-            "\1\2\4\uffff\1\1",
-            "\1\3\4\uffff\1\4",
-            "\1\11\1\7\3\uffff\1\6\3\uffff\1\5\25\uffff\1\10",
+    static final String DFA37_eotS =
+        "\16\uffff";
+    static final String DFA37_eofS =
+        "\16\uffff";
+    static final String DFA37_minS =
+        "\1\120\1\0\14\uffff";
+    static final String DFA37_maxS =
+        "\1\120\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\uffff",
-            "\1\17",
-            "\1\20",
             "",
             "",
             "",
-            "\1\21\3\uffff\1\23\31\uffff\1\22",
-            "\1\24",
             "",
-            "\1\7\3\uffff\1\25\31\uffff\1\10",
-            "\1\25\31\uffff\1\10",
-            "\1\26",
-            "\1\27",
-            "\1\30\4\uffff\1\31\1\uffff\1\32",
-            "\1\33\3\uffff\1\35\31\uffff\1\34",
-            "\1\36\4\uffff\1\37\1\uffff\1\40",
-            "\1\21\3\uffff\1\23\31\uffff\1\22",
-            "\1\23\31\uffff\1\22",
-            "\1\44\1\43\3\uffff\1\54\3\uffff\1\41\14\uffff\1\45\1\46\1\47"+
-            "\1\50\1\51\1\52\1\53\2\uffff\1\42",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\57",
-            "\1\60",
-            "\1\61\4\uffff\1\62\1\uffff\1\63",
-            "\1\67\1\66\3\uffff\1\77\3\uffff\1\64\14\uffff\1\70\1\71\1\72"+
-            "\1\73\1\74\1\75\1\76\2\uffff\1\65",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\101",
-            "\157\102\1\103\1\104\16\102",
-            "\1\105",
-            "\1\106\3\uffff\1\107\1\114\6\uffff\1\112\1\110\16\uffff\1\115"+
-            "\1\111\1\113",
-            "\1\116\3\uffff\1\107\1\117\6\uffff\1\112\1\110\17\uffff\1\111"+
-            "\1\113",
-            "\1\116\3\uffff\1\107\1\117\6\uffff\1\112\1\110\17\uffff\1\111"+
-            "\1\113",
-            "\1\116\3\uffff\1\107\1\117\6\uffff\1\112\1\110\17\uffff\1\111"+
-            "\1\113",
-            "\1\116\3\uffff\1\107\1\117\6\uffff\1\112\1\110\17\uffff\1\111"+
-            "\1\113",
-            "\1\116\3\uffff\1\107\1\117\6\uffff\1\112\1\110\17\uffff\1\111"+
-            "\1\113",
-            "\1\116\3\uffff\1\107\1\117\6\uffff\1\112\1\110\17\uffff\1\111"+
-            "\1\113",
-            "\1\120",
-            "\1\uffff",
             "",
             "",
-            "\1\33\3\uffff\1\35\31\uffff\1\34",
-            "\1\35\31\uffff\1\34",
-            "\1\126\1\125\3\uffff\1\123\3\uffff\1\122\14\uffff\1\127\1\130"+
-            "\1\131\1\132\1\133\1\134\1\135\2\uffff\1\124",
-            "\1\uffff",
-            "\1\137\6\uffff\1\141\6\uffff\1\140",
-            "\1\142",
-            "\157\143\1\144\1\145\16\143",
-            "\1\146",
-            "\1\147\3\uffff\1\150\1\155\6\uffff\1\153\1\151\16\uffff\1\156"+
-            "\1\152\1\154",
-            "\1\157\3\uffff\1\150\1\160\6\uffff\1\153\1\151\17\uffff\1\152"+
-            "\1\154",
-            "\1\157\3\uffff\1\150\1\160\6\uffff\1\153\1\151\17\uffff\1\152"+
-            "\1\154",
-            "\1\157\3\uffff\1\150\1\160\6\uffff\1\153\1\151\17\uffff\1\152"+
-            "\1\154",
-            "\1\157\3\uffff\1\150\1\160\6\uffff\1\153\1\151\17\uffff\1\152"+
-            "\1\154",
-            "\1\157\3\uffff\1\150\1\160\6\uffff\1\153\1\151\17\uffff\1\152"+
-            "\1\154",
-            "\1\157\3\uffff\1\150\1\160\6\uffff\1\153\1\151\17\uffff\1\152"+
-            "\1\154",
-            "\1\161",
-            "\1\uffff",
             "",
-            "\1\165\1\164\3\uffff\1\175\1\u0081\1\32\6\uffff\1\u0080\1\177"+
-            "\5\uffff\1\176\1\166\1\167\1\170\1\171\1\172\1\173\1\174\2\uffff"+
-            "\1\163",
-            "\157\102\1\103\1\104\16\102",
-            "\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",
-            "\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 "867:10: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )";
+            return "710: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_4 = input.LA(1);
+                        int LA37_0 = input.LA(1);
 
                          
-                        int index54_4 = 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 = 11;}
-
                          
-                        input.seek(index54_4);
+                        input.seek(index37_0);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA54_63 = input.LA(1);
+                        int LA37_1 = input.LA(1);
 
                          
-                        int index54_63 = 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 = 114;}
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))) ) {s = 3;}
 
-                         
-                        input.seek(index54_63);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 2 : 
-                        int LA54_26 = input.LA(1);
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))) ) {s = 4;}
 
-                         
-                        int index54_26 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred6()) ) {s = 9;}
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.DURATION)))) ) {s = 5;}
 
-                        else if ( (true) ) {s = 46;}
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))) ) {s = 6;}
 
-                         
-                        input.seek(index54_26);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 3 : 
-                        int LA54_32 = input.LA(1);
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))) ) {s = 7;}
 
-                         
-                        int index54_32 = 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 = 46;}
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))) ) {s = 9;}
 
-                         
-                        input.seek(index54_32);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 4 : 
-                        int LA54_2 = input.LA(1);
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))) ) {s = 10;}
 
-                         
-                        int index54_2 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (LA54_2==COLON) ) {s = 5;}
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))) ) {s = 11;}
 
-                        else if ( (LA54_2==LEFT_PAREN) ) {s = 6;}
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))) ) {s = 12;}
 
-                        else if ( (LA54_2==DOT) ) {s = 7;}
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) ) {s = 13;}
 
-                        else if ( (LA54_2==LEFT_SQUARE) ) {s = 8;}
-
-                        else if ( (LA54_2==ID) && (((synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||((synpred6()&&validateNotWithBinding())&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred!
 6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))))) {s = 9;}
-
                          
-                        input.seek(index54_2);
+                        input.seek(index37_1);
                         if ( s>=0 ) return s;
                         break;
-                    case 5 : 
-                        int LA54_44 = input.LA(1);
-
-                         
-                        int index54_44 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred6()) ) {s = 9;}
-
-                        else if ( (true) ) {s = 81;}
-
-                         
-                        input.seek(index54_44);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 6 : 
-                        int LA54_31 = input.LA(1);
-
-                         
-                        int index54_31 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred6()) ) {s = 9;}
-
-                        else if ( (true) ) {s = 64;}
-
-                         
-                        input.seek(index54_31);
-                        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 = 45;}
-
-                         
-                        input.seek(index54_25);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 8 : 
-                        int LA54_6 = input.LA(1);
-
-                         
-                        int index54_6 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (((synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||synpred6()||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EVAL)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.FORALL))))) ) {s = 9;}
-
-                        else if ( (true) ) {s = 14;}
-
-                         
-                        input.seek(index54_6);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 9 : 
-                        int LA54_50 = input.LA(1);
-
-                         
-                        int index54_50 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred6()) ) {s = 9;}
-
-                        else if ( (true) ) {s = 94;}
-
-                         
-                        input.seek(index54_50);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 10 : 
-                        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;
             }
-            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 =
-        "\u0082\uffff";
-    static final String DFA55_eofS =
-        "\u0082\uffff";
-    static final String DFA55_minS =
-        "\3\124\2\0\1\124\1\0\1\uffff\1\124\1\164\2\uffff\1\125\1\124\1\uffff"+
-        "\1\125\1\131\1\124\1\164\1\124\1\125\1\124\1\125\1\131\1\124\2\0"+
-        "\1\124\1\164\2\124\2\0\1\124\1\0\1\4\11\124\2\uffff\1\125\1\131"+
-        "\1\124\1\0\2\124\1\4\11\124\1\0\1\uffff\1\124\1\uffff\1\4\32\0\1"+
-        "\uffff\23\0\1\uffff\17\0";
-    static final String DFA55_maxS =
-        "\2\131\1\163\2\0\1\131\1\0\1\uffff\1\124\1\164\2\uffff\1\163\1\124"+
-        "\1\uffff\2\163\1\124\1\164\1\133\1\163\1\133\3\163\2\0\1\124\1\164"+
-        "\1\133\1\163\2\0\1\124\1\0\1\u0082\1\124\7\162\1\124\2\uffff\3\163"+
-        "\1\0\1\142\1\124\1\u0082\1\124\7\162\1\124\1\0\1\uffff\1\163\1\uffff"+
-        "\1\u0082\32\0\1\uffff\23\0\1\uffff\17\0";
-    static final String DFA55_acceptS =
-        "\7\uffff\1\1\2\uffff\2\2\2\uffff\1\3\36\uffff\2\3\21\uffff\1\3\1"+
-        "\uffff\1\3\33\uffff\1\3\23\uffff\1\3\17\uffff";
-    static final String DFA55_specialS =
-        "\2\uffff\1\2\1\0\1\1\1\uffff\1\3\22\uffff\1\7\1\6\4\uffff\1\12\1"+
-        "\11\1\uffff\1\4\17\uffff\1\10\14\uffff\1\5\102\uffff}>";
-    static final String[] DFA55_transitionS = {
-            "\1\2\4\uffff\1\1",
-            "\1\4\4\uffff\1\3",
-            "\1\7\1\10\3\uffff\1\6\3\uffff\1\5\25\uffff\1\11",
+    static final String DFA69_eotS =
+        "\15\uffff";
+    static final String DFA69_eofS =
+        "\15\uffff";
+    static final String DFA69_minS =
+        "\1\117\1\0\13\uffff";
+    static final String DFA69_maxS =
+        "\1\160\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\31\uffff\1\22",
-            "\1\24",
             "",
-            "\1\10\3\uffff\1\25\31\uffff\1\11",
-            "\1\25\31\uffff\1\11",
-            "\1\26",
-            "\1\27",
-            "\1\30\4\uffff\1\31\1\uffff\1\32",
-            "\1\33\3\uffff\1\35\31\uffff\1\34",
-            "\1\36\4\uffff\1\37\1\uffff\1\40",
-            "\1\21\3\uffff\1\23\31\uffff\1\22",
-            "\1\23\31\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\1\54\2\uffff\1\43",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\57",
-            "\1\60",
-            "\1\61\4\uffff\1\62\1\uffff\1\63",
-            "\1\67\1\66\3\uffff\1\77\3\uffff\1\64\14\uffff\1\70\1\71\1\72"+
-            "\1\73\1\74\1\75\1\76\2\uffff\1\65",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\101",
-            "\1\uffff",
-            "\157\103\1\104\1\105\16\103",
-            "\1\106",
-            "\1\107\3\uffff\1\110\1\115\6\uffff\1\113\1\111\16\uffff\1\116"+
-            "\1\112\1\114",
-            "\1\117\3\uffff\1\110\1\120\6\uffff\1\113\1\111\17\uffff\1\112"+
-            "\1\114",
-            "\1\117\3\uffff\1\110\1\120\6\uffff\1\113\1\111\17\uffff\1\112"+
-            "\1\114",
-            "\1\117\3\uffff\1\110\1\120\6\uffff\1\113\1\111\17\uffff\1\112"+
-            "\1\114",
-            "\1\117\3\uffff\1\110\1\120\6\uffff\1\113\1\111\17\uffff\1\112"+
-            "\1\114",
-            "\1\117\3\uffff\1\110\1\120\6\uffff\1\113\1\111\17\uffff\1\112"+
-            "\1\114",
-            "\1\117\3\uffff\1\110\1\120\6\uffff\1\113\1\111\17\uffff\1\112"+
-            "\1\114",
-            "\1\121",
             "",
             "",
-            "\1\33\3\uffff\1\35\31\uffff\1\34",
-            "\1\35\31\uffff\1\34",
-            "\1\126\1\125\3\uffff\1\123\3\uffff\1\122\14\uffff\1\127\1\130"+
-            "\1\131\1\132\1\133\1\134\1\135\2\uffff\1\124",
-            "\1\uffff",
-            "\1\137\6\uffff\1\141\6\uffff\1\140",
-            "\1\142",
-            "\157\143\1\144\1\145\16\143",
-            "\1\146",
-            "\1\147\3\uffff\1\150\1\155\6\uffff\1\153\1\151\16\uffff\1\156"+
-            "\1\152\1\154",
-            "\1\157\3\uffff\1\150\1\160\6\uffff\1\153\1\151\17\uffff\1\152"+
-            "\1\154",
-            "\1\157\3\uffff\1\150\1\160\6\uffff\1\153\1\151\17\uffff\1\152"+
-            "\1\154",
-            "\1\157\3\uffff\1\150\1\160\6\uffff\1\153\1\151\17\uffff\1\152"+
-            "\1\154",
-            "\1\157\3\uffff\1\150\1\160\6\uffff\1\153\1\151\17\uffff\1\152"+
-            "\1\154",
-            "\1\157\3\uffff\1\150\1\160\6\uffff\1\153\1\151\17\uffff\1\152"+
-            "\1\154",
-            "\1\157\3\uffff\1\150\1\160\6\uffff\1\153\1\151\17\uffff\1\152"+
-            "\1\154",
-            "\1\161",
-            "\1\uffff",
             "",
-            "\1\165\1\164\3\uffff\1\175\1\u0081\1\32\6\uffff\1\u0080\1\177"+
-            "\5\uffff\1\176\1\166\1\167\1\170\1\171\1\172\1\173\1\174\2\uffff"+
-            "\1\163",
             "",
-            "\157\103\1\104\1\105\16\103",
-            "\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",
-            "\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 "883:3: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )";
+            return "1050: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_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;
-                    case 2 : 
-                        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.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||((synpred7()&&validateNotWithBinding())&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred!
 7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(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 3 : 
-                        int LA55_6 = input.LA(1);
-
-                         
-                        int index55_6 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( ((synpred7()||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EVAL)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.FORALL))))) ) {s = 7;}
-
-                        else if ( (true) ) {s = 14;}
-
-                         
-                        input.seek(index55_6);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 4 : 
-                        int LA55_34 = input.LA(1);
-
-                         
-                        int index55_34 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred7()) ) {s = 7;}
-
-                        else if ( (true) ) {s = 66;}
-
-                         
-                        input.seek(index55_34);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 5 : 
-                        int LA55_63 = input.LA(1);
-
-                         
-                        int index55_63 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred7()) ) {s = 7;}
-
-                        else if ( (true) ) {s = 114;}
-
-                         
-                        input.seek(index55_63);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 6 : 
-                        int LA55_26 = input.LA(1);
-
-                         
-                        int index55_26 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred7()) ) {s = 7;}
-
-                        else if ( (true) ) {s = 46;}
-
-                         
-                        input.seek(index55_26);
-                        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 = 45;}
-
-                         
-                        input.seek(index55_25);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 8 : 
-                        int LA55_50 = input.LA(1);
-
-                         
-                        int index55_50 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred7()) ) {s = 7;}
-
-                        else if ( (true) ) {s = 94;}
-
-                         
-                        input.seek(index55_50);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 9 : 
-                        int LA55_32 = input.LA(1);
-
-                         
-                        int index55_32 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred7()) ) {s = 7;}
-
-                        else if ( (true) ) {s = 46;}
-
-                         
-                        input.seek(index55_32);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 10 : 
-                        int LA55_31 = input.LA(1);
-
-                         
-                        int index55_31 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred7()) ) {s = 7;}
-
-                        else if ( (true) ) {s = 64;}
-
-                         
-                        input.seek(index55_31);
-                        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\124\1\131\2\4\1\0\1\124\1\0\4\uffff";
-    static final String DFA66_maxS =
-        "\1\124\1\131\2\u0082\1\0\1\133\1\0\4\uffff";
-    static final String DFA66_acceptS =
-        "\7\uffff\1\1\1\2\1\1\1\2";
-    static final String DFA66_specialS =
-        "\1\5\1\1\1\4\1\0\1\3\1\2\1\6\4\uffff}>";
-    static final String[] DFA66_transitionS = {
-            "\1\1",
-            "\1\2",
-            "\125\3\1\4\1\3\1\5\47\3",
-            "\125\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\117\1\0\14\uffff";
+    static final String DFA71_maxS =
+        "\1\160\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\11\5\uffff\1\11\1\12",
-            "\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 "977:2: ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )?";
+            return "1064: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_3 = input.LA(1);
+                        int LA71_1 = input.LA(1);
 
                          
-                        int index66_3 = input.index();
+                        int index71_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA66_3==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 5;}
+                        if ( ((input.LA(1) == LEFT_PAREN)) ) {s = 13;}
 
-                        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 ( (true) ) {s = 3;}
 
-                        else if ( (LA66_3==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 6;}
-
                          
-                        input.seek(index66_3);
+                        input.seek(index71_1);
                         if ( s>=0 ) return s;
                         break;
-                    case 1 : 
-                        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 2 : 
-                        int LA66_5 = input.LA(1);
-
-                         
-                        int index66_5 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (LA66_5==ID||LA66_5==COMMA) && ((validateIdentifierKey(DroolsSoftKeywords.REVERSE)))) {s = 9;}
-
-                        else if ( (LA66_5==RIGHT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.RESULT)))) {s = 10;}
-
-                         
-                        input.seek(index66_5);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 3 : 
-                        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 4 : 
-                        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;
-                    case 5 : 
-                        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 6 : 
-                        int LA66_6 = input.LA(1);
-
-                         
-                        int index66_6 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.REVERSE))) ) {s = 9;}
-
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RESULT))) ) {s = 10;}
-
-                         
-                        input.seek(index66_6);
-                        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 =
-        "\40\uffff";
-    static final String DFA84_minS =
-        "\1\132\1\uffff\2\124\1\uffff\1\0\1\124\1\0\1\124\1\4\6\0\1\163\2"+
-        "\4\15\0";
-    static final String DFA84_maxS =
-        "\1\143\1\uffff\1\160\1\163\1\uffff\1\0\1\163\1\0\1\124\1\u0082\6"+
-        "\0\1\163\2\u0082\15\0";
-    static final String DFA84_acceptS =
-        "\1\uffff\1\2\2\uffff\1\1\33\uffff";
-    static final String DFA84_specialS =
-        "\2\uffff\1\12\1\7\1\uffff\1\3\1\11\1\4\2\uffff\1\2\1\1\1\6\1\0\1"+
-        "\5\1\10\20\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\120\13\uffff\1\0\1\uffff";
+    static final String DFA81_maxS =
+        "\1\125\1\156\13\uffff\1\0\1\uffff";
+    static final String DFA81_acceptS =
+        "\2\uffff\1\3\1\2\12\uffff\1\1";
+    static final String DFA81_specialS =
+        "\15\uffff\1\0\1\uffff}>";
+    static final String[] DFA81_transitionS = {
+            "\1\1\4\uffff\1\2",
+            "\2\3\3\uffff\1\15\3\uffff\1\3\14\uffff\6\3\2\uffff\1\3",
             "",
-            "\1\3\4\uffff\1\5\20\uffff\7\4",
-            "\1\6\1\1\2\uffff\1\4\1\7\3\uffff\1\1\2\uffff\2\4\10\uffff\6"+
-            "\1\1\10\2\4\1\1",
             "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
             "\1\uffff",
-            "\1\12\1\4\2\uffff\1\13\1\11\2\4\4\uffff\1\16\1\14\2\4\14\uffff"+
-            "\1\1\1\15\1\17\1\4",
-            "\1\uffff",
-            "\1\20",
-            "\120\30\1\21\3\30\1\22\1\27\1\30\1\31\4\30\1\25\1\23\17\30\1"+
-            "\24\1\26\20\30",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\32",
-            "\121\30\1\34\3\30\1\37\1\35\1\36\27\30\1\33\17\30",
-            "\125\30\1\37\1\35\1\36\47\30",
-            "\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 1176:25: ({...}? => DOUBLE_PIPE and_restr_connective )*";
+            return "1137:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );";
         }
-        public int specialStateTransition(int s, IntStream input) throws NoViableAltException {
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA84_13 = input.LA(1);
+                        int LA81_13 = input.LA(1);
 
                          
-                        int index84_13 = input.index();
+                        int index81_13 = 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_13);
+                        input.seek(index81_13);
                         if ( s>=0 ) return s;
                         break;
-                    case 1 : 
-                        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 2 : 
-                        int LA84_10 = input.LA(1);
-
-                         
-                        int index84_10 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( ((validateRestr())) ) {s = 4;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index84_10);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 3 : 
-                        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 4 : 
-                        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 5 : 
-                        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;
-                    case 6 : 
-                        int LA84_12 = input.LA(1);
-
-                         
-                        int index84_12 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( ((validateRestr())) ) {s = 4;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index84_12);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 7 : 
-                        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)||LA84_3==LEFT_SQUARE) ) {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==TILDE) ) {s = 8;}
-
-                         
-                        input.seek(index84_3);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 8 : 
-                        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 9 : 
-                        int LA84_6 = input.LA(1);
-
-                         
-                        int index84_6 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (LA84_6==LEFT_PAREN) ) {s = 9;}
-
-                        else if ( (LA84_6==ID) ) {s = 10;}
-
-                        else if ( (LA84_6==STRING) ) {s = 11;}
-
-                        else if ( (LA84_6==INT) ) {s = 12;}
-
-                        else if ( (LA84_6==FLOAT) ) {s = 13;}
-
-                        else if ( (LA84_6==BOOL) ) {s = 14;}
-
-                        else if ( (LA84_6==NULL) ) {s = 15;}
-
-                        else if ( (LA84_6==DOT||(LA84_6>=COMMA && LA84_6<=RIGHT_PAREN)||(LA84_6>=DOUBLE_PIPE && LA84_6<=DOUBLE_AMPER)||LA84_6==LEFT_SQUARE) && ((validateRestr()))) {s = 4;}
-
-                        else if ( (LA84_6==TILDE) ) {s = 1;}
-
-                         
-                        input.seek(index84_6);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 10 : 
-                        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<=TILDE)) && ((validateRestr()))) {s = 4;}
-
-                        else if ( (LA84_2==LEFT_PAREN) ) {s = 5;}
-
-                         
-                        input.seek(index84_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(), 84, _s, input);
+                new NoViableAltException(getDescription(), 81, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA85_eotS =
-        "\74\uffff";
-    static final String DFA85_eofS =
-        "\74\uffff";
-    static final String DFA85_minS =
-        "\1\132\1\uffff\2\124\1\uffff\2\124\1\4\2\124\7\0\2\4\2\0\2\4\45"+
-        "\0";
-    static final String DFA85_maxS =
-        "\1\143\1\uffff\1\160\1\163\1\uffff\1\160\1\163\1\u0082\1\124\1\163"+
-        "\7\0\2\u0082\2\0\2\u0082\45\0";
-    static final String DFA85_acceptS =
-        "\1\uffff\1\2\2\uffff\1\1\67\uffff";
-    static final String DFA85_specialS =
-        "\2\uffff\1\7\1\3\1\uffff\1\5\1\12\2\uffff\1\4\1\15\1\2\1\11\1\1"+
-        "\1\13\1\14\1\0\2\uffff\1\6\1\10\47\uffff}>";
-    static final String[] DFA85_transitionS = {
-            "\2\1\6\uffff\1\1\1\2",
+    static final String DFA86_eotS =
+        "\50\uffff";
+    static final String DFA86_eofS =
+        "\50\uffff";
+    static final String DFA86_minS =
+        "\2\120\10\uffff\1\120\5\uffff\1\4\7\uffff\1\0\5\uffff\7\0\3\uffff";
+    static final String DFA86_maxS =
+        "\1\153\1\156\10\uffff\1\156\5\uffff\1\175\7\uffff\1\0\5\uffff\7"+
+        "\0\3\uffff";
+    static final String DFA86_acceptS =
+        "\2\uffff\1\2\5\uffff\1\3\1\2\7\uffff\2\2\6\uffff\1\2\15\uffff\1"+
+        "\1";
+    static final String DFA86_specialS =
+        "\1\0\1\1\10\uffff\1\2\5\uffff\1\3\7\uffff\1\4\5\uffff\1\5\1\6\1"+
+        "\7\1\10\1\11\1\12\1\13\3\uffff}>";
+    static final String[] DFA86_transitionS = {
+            "\1\1\4\uffff\1\10\20\uffff\6\2",
+            "\1\12\3\uffff\1\11\1\20\6\uffff\2\11\16\uffff\3\11",
             "",
-            "\1\3\4\uffff\1\5\20\uffff\7\4",
-            "\1\6\1\1\2\uffff\1\4\1\7\3\uffff\1\1\2\uffff\2\4\10\uffff\6"+
-            "\1\1\10\2\4\1\1",
             "",
-            "\1\11\4\uffff\1\12\20\uffff\7\4",
-            "\1\13\1\4\2\uffff\1\14\1\21\2\4\4\uffff\1\17\1\15\2\4\14\uffff"+
-            "\1\1\1\16\1\20\1\4",
-            "\120\41\1\22\3\41\1\25\1\23\1\41\1\24\4\41\1\30\1\26\10\41\1"+
-            "\32\1\33\1\34\1\35\1\36\1\37\1\40\1\27\1\31\20\41",
-            "\1\42",
-            "\1\44\1\1\2\uffff\1\4\1\43\3\uffff\1\1\2\uffff\2\4\10\uffff"+
-            "\6\1\1\45\2\4\1\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\22\1\31\2\uffff\1\22\1\30\2\31\4\uffff\2\22\2\31\14\uffff"+
+            "\2\22\1\21",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\114\31\1\36\3\31\1\37\1\44\6\31\1\42\1\40\16\31\1\41\1\43"+
+            "\20\31",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
             "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
-            "\120\56\1\46\3\56\1\51\1\47\1\56\1\50\4\56\1\54\1\52\17\56\1"+
-            "\53\1\55\20\56",
-            "\120\41\1\57\1\67\2\41\1\60\1\65\1\70\1\71\4\41\1\63\1\61\16"+
-            "\41\1\72\1\62\1\64\1\66\17\41",
             "\1\uffff",
-            "\1\uffff",
-            "\125\41\1\73\1\70\1\71\47\41",
-            "\125\41\1\73\1\70\1\71\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"
+            "",
+            "",
+            ""
     };
 
-    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 1181:26: ({...}? => DOUBLE_AMPER constraint_expression )*";
+            return "1201:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );";
         }
-        public int specialStateTransition(int s, IntStream input) throws NoViableAltException {
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA85_16 = input.LA(1);
+                        int LA86_0 = input.LA(1);
 
                          
-                        int index85_16 = input.index();
+                        int index86_0 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateRestr())) ) {s = 4;}
+                        if ( (LA86_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 1;}
 
-                        else if ( (true) ) {s = 1;}
+                        else if ( ((LA86_0>=EQUAL && LA86_0<=NOT_EQUAL)) ) {s = 2;}
 
+                        else if ( (LA86_0==LEFT_PAREN) ) {s = 8;}
+
                          
-                        input.seek(index85_16);
+                        input.seek(index86_0);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA85_13 = input.LA(1);
+                        int LA86_1 = input.LA(1);
 
                          
-                        int index85_13 = input.index();
+                        int index86_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateRestr())) ) {s = 4;}
+                        if ( (LA86_1==STRING||(LA86_1>=BOOL && LA86_1<=INT)||(LA86_1>=FLOAT && LA86_1<=LEFT_SQUARE)) && (((isPluggableEvaluator(false))))) {s = 9;}
 
-                        else if ( (true) ) {s = 1;}
+                        else if ( (LA86_1==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 10;}
 
+                        else if ( (LA86_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 16;}
+
                          
-                        input.seek(index85_13);
+                        input.seek(index86_1);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA85_11 = input.LA(1);
+                        int LA86_10 = input.LA(1);
 
                          
-                        int index85_11 = input.index();
+                        int index86_10 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateRestr())) ) {s = 4;}
+                        if ( (LA86_10==LEFT_SQUARE) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 17;}
 
-                        else if ( (true) ) {s = 1;}
+                        else if ( (LA86_10==ID||LA86_10==STRING||(LA86_10>=BOOL && LA86_10<=INT)||(LA86_10>=FLOAT && LA86_10<=NULL)) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {s = 18;}
 
+                        else if ( (LA86_10==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {s = 24;}
+
+                        else if ( (LA86_10==DOT||(LA86_10>=COMMA && LA86_10<=RIGHT_PAREN)||(LA86_10>=DOUBLE_PIPE && LA86_10<=DOUBLE_AMPER)) && (((isPluggableEvaluator(false))))) {s = 25;}
+
                          
-                        input.seek(index85_11);
+                        input.seek(index86_10);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA85_3 = input.LA(1);
+                        int LA86_16 = input.LA(1);
 
                          
-                        int index85_3 = input.index();
+                        int index86_16 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA85_3==DOT||LA85_3==COLON||(LA85_3>=EQUAL && LA85_3<=NOT_EQUAL)||LA85_3==LEFT_SQUARE) ) {s = 1;}
+                        if ( (LA86_16==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 30;}
 
-                        else if ( (LA85_3==ID) ) {s = 6;}
+                        else if ( (LA86_16==STRING) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 31;}
 
-                        else if ( (LA85_3==STRING||(LA85_3>=BOOL && LA85_3<=INT)||(LA85_3>=FLOAT && LA85_3<=NULL)) && ((validateRestr()))) {s = 4;}
+                        else if ( (LA86_16==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 32;}
 
-                        else if ( (LA85_3==LEFT_PAREN) ) {s = 7;}
+                        else if ( (LA86_16==FLOAT) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 33;}
 
-                        else if ( (LA85_3==TILDE) ) {s = 8;}
+                        else if ( (LA86_16==BOOL) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 34;}
 
+                        else if ( (LA86_16==NULL) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 35;}
+
+                        else if ( (LA86_16==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 36;}
+
+                        else if ( ((LA86_16>=VT_COMPILATION_UNIT && LA86_16<=SEMICOLON)||(LA86_16>=DOT && LA86_16<=END)||(LA86_16>=COMMA && LA86_16<=WHEN)||(LA86_16>=DOUBLE_PIPE && LA86_16<=NOT_EQUAL)||(LA86_16>=LEFT_SQUARE && LA86_16<=MULTI_LINE_COMMENT)) && (((isPluggableEvaluator(false))))) {s = 25;}
+
                          
-                        input.seek(index85_3);
+                        input.seek(index86_16);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA85_9 = input.LA(1);
+                        int LA86_24 = input.LA(1);
 
                          
-                        int index85_9 = input.index();
+                        int index86_24 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA85_9==DOT||LA85_9==COLON||(LA85_9>=EQUAL && LA85_9<=NOT_EQUAL)||LA85_9==LEFT_SQUARE) ) {s = 1;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {s = 39;}
 
-                        else if ( (LA85_9==LEFT_PAREN) ) {s = 35;}
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {s = 25;}
 
-                        else if ( (LA85_9==ID) ) {s = 36;}
-
-                        else if ( (LA85_9==TILDE) ) {s = 37;}
-
-                        else if ( (LA85_9==STRING||(LA85_9>=BOOL && LA85_9<=INT)||(LA85_9>=FLOAT && LA85_9<=NULL)) && ((validateRestr()))) {s = 4;}
-
                          
-                        input.seek(index85_9);
+                        input.seek(index86_24);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA85_5 = input.LA(1);
+                        int LA86_30 = input.LA(1);
 
                          
-                        int index85_5 = input.index();
+                        int index86_30 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA85_5==ID) ) {s = 9;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 39;}
 
-                        else if ( (LA85_5==LEFT_PAREN) ) {s = 10;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 25;}
 
-                        else if ( ((LA85_5>=EQUAL && LA85_5<=TILDE)) && ((validateRestr()))) {s = 4;}
-
                          
-                        input.seek(index85_5);
+                        input.seek(index86_30);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA85_19 = input.LA(1);
+                        int LA86_31 = input.LA(1);
 
                          
-                        int index85_19 = input.index();
+                        int index86_31 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateRestr())) ) {s = 4;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 39;}
 
-                        else if ( (true) ) {s = 1;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 25;}
 
                          
-                        input.seek(index85_19);
+                        input.seek(index86_31);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
-                        int LA85_2 = input.LA(1);
+                        int LA86_32 = input.LA(1);
 
                          
-                        int index85_2 = input.index();
+                        int index86_32 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA85_2==ID) ) {s = 3;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 39;}
 
-                        else if ( ((LA85_2>=EQUAL && LA85_2<=TILDE)) && ((validateRestr()))) {s = 4;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 25;}
 
-                        else if ( (LA85_2==LEFT_PAREN) ) {s = 5;}
-
                          
-                        input.seek(index85_2);
+                        input.seek(index86_32);
                         if ( s>=0 ) return s;
                         break;
                     case 8 : 
-                        int LA85_20 = input.LA(1);
+                        int LA86_33 = input.LA(1);
 
                          
-                        int index85_20 = input.index();
+                        int index86_33 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateRestr())) ) {s = 4;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 39;}
 
-                        else if ( (true) ) {s = 1;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 25;}
 
                          
-                        input.seek(index85_20);
+                        input.seek(index86_33);
                         if ( s>=0 ) return s;
                         break;
                     case 9 : 
-                        int LA85_12 = input.LA(1);
+                        int LA86_34 = input.LA(1);
 
                          
-                        int index85_12 = input.index();
+                        int index86_34 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateRestr())) ) {s = 4;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 39;}
 
-                        else if ( (true) ) {s = 1;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 25;}
 
                          
-                        input.seek(index85_12);
+                        input.seek(index86_34);
                         if ( s>=0 ) return s;
                         break;
                     case 10 : 
-                        int LA85_6 = input.LA(1);
+                        int LA86_35 = input.LA(1);
 
                          
-                        int index85_6 = input.index();
+                        int index86_35 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA85_6==ID) ) {s = 11;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 39;}
 
-                        else if ( (LA85_6==STRING) ) {s = 12;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 25;}
 
-                        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==DOT||(LA85_6>=COMMA && LA85_6<=RIGHT_PAREN)||(LA85_6>=DOUBLE_PIPE && LA85_6<=DOUBLE_AMPER)||LA85_6==LEFT_SQUARE) && ((validateRestr()))) {s = 4;}
-
-                        else if ( (LA85_6==TILDE) ) {s = 1;}
-
                          
-                        input.seek(index85_6);
+                        input.seek(index86_35);
                         if ( s>=0 ) return s;
                         break;
                     case 11 : 
-                        int LA85_14 = input.LA(1);
+                        int LA86_36 = input.LA(1);
 
                          
-                        int index85_14 = input.index();
+                        int index86_36 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateRestr())) ) {s = 4;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 39;}
 
-                        else if ( (true) ) {s = 1;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 25;}
 
                          
-                        input.seek(index85_14);
+                        input.seek(index86_36);
                         if ( s>=0 ) return s;
                         break;
-                    case 12 : 
-                        int LA85_15 = input.LA(1);
-
-                         
-                        int index85_15 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( ((validateRestr())) ) {s = 4;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index85_15);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 13 : 
-                        int LA85_10 = input.LA(1);
-
-                         
-                        int index85_10 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( ((validateRestr())) ) {s = 4;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index85_10);
-                        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;
         }
     }
  
 
-    public static final BitSet FOLLOW_package_statement_in_compilation_unit392 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_statement_in_compilation_unit397 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_EOF_in_compilation_unit402 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_package_key_in_package_statement462 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_package_id_in_package_statement466 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
-    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,0x0000000000200000L});
-    public static final BitSet FOLLOW_DOT_in_package_id501 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_ID_in_package_id505 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L});
-    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_statement627 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_import_name_in_import_statement629 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_import_statement632 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_import_key_in_function_import_statement675 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_function_key_in_function_import_statement677 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_import_name_in_function_import_statement679 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_function_import_statement682 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_import_name716 = new BitSet(new long[]{0x0000000000000002L,0x0000000000600000L});
-    public static final BitSet FOLLOW_DOT_in_import_name722 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_ID_in_import_name726 = new BitSet(new long[]{0x0000000000000002L,0x0000000000600000L});
-    public static final BitSet FOLLOW_DOT_STAR_in_import_name733 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_global_key_in_global778 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_data_type_in_global780 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_global_id_in_global782 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_global784 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_global_id813 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_function_key_in_function850 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_data_type_in_function852 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_function_id_in_function855 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_parameters_in_function857 = new BitSet(new long[]{0x0000000000000000L,0x0040000000000000L});
-    public static final BitSet FOLLOW_curly_chunk_in_function859 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_function_id889 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_query_key_in_query926 = new BitSet(new long[]{0x0000000000000000L,0x0000000001100000L});
-    public static final BitSet FOLLOW_query_id_in_query928 = new BitSet(new long[]{0x0000000000000000L,0x0000000002900000L});
-    public static final BitSet FOLLOW_parameters_in_query936 = new BitSet(new long[]{0x0000000000000000L,0x0000000002900000L});
-    public static final BitSet FOLLOW_normal_lhs_block_in_query945 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_END_in_query950 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_query952 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_query_id987 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_query_id1003 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_parameters1022 = new BitSet(new long[]{0x0000000000000000L,0x0000000008100000L});
-    public static final BitSet FOLLOW_param_definition_in_parameters1031 = new BitSet(new long[]{0x0000000000000000L,0x000000000C000000L});
-    public static final BitSet FOLLOW_COMMA_in_parameters1034 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_param_definition_in_parameters1038 = new BitSet(new long[]{0x0000000000000000L,0x000000000C000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_parameters1047 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_data_type_in_param_definition1073 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_argument_in_param_definition1076 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_argument1087 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
-    public static final BitSet FOLLOW_dimension_definition_in_argument1093 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
-    public static final BitSet FOLLOW_declare_key_in_type_declaration1121 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_type_declare_id_in_type_declaration1124 = new BitSet(new long[]{0x0000000000000000L,0x0000000010900000L});
-    public static final BitSet FOLLOW_decl_metadata_in_type_declaration1128 = new BitSet(new long[]{0x0000000000000000L,0x0000000010900000L});
-    public static final BitSet FOLLOW_decl_field_in_type_declaration1133 = new BitSet(new long[]{0x0000000000000000L,0x0000000000900000L});
-    public static final BitSet FOLLOW_END_in_type_declaration1138 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_type_declare_id1173 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_AT_in_decl_metadata1192 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_ID_in_decl_metadata1200 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_decl_metadata1207 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_decl_field1230 = new BitSet(new long[]{0x0000000000000000L,0x0000000060000000L});
-    public static final BitSet FOLLOW_decl_field_initialization_in_decl_field1236 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
-    public static final BitSet FOLLOW_COLON_in_decl_field1242 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_data_type_in_decl_field1248 = new BitSet(new long[]{0x0000000000000002L,0x0000000010000000L});
-    public static final BitSet FOLLOW_decl_metadata_in_decl_field1252 = new BitSet(new long[]{0x0000000000000002L,0x0000000010000000L});
-    public static final BitSet FOLLOW_EQUALS_in_decl_field_initialization1280 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_decl_field_initialization1286 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_template_key_in_template1323 = new BitSet(new long[]{0x0000000000000000L,0x0000000001100000L});
-    public static final BitSet FOLLOW_template_id_in_template1325 = new BitSet(new long[]{0x0000000000000000L,0x0000000000180000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_template1332 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_template_slot_in_template1340 = new BitSet(new long[]{0x0000000000000000L,0x0000000000900000L});
-    public static final BitSet FOLLOW_END_in_template1345 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_template1349 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_template_id1382 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_template_id1398 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_data_type_in_template_slot1418 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_slot_id_in_template_slot1420 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_template_slot1422 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_slot_id1451 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_rule_key_in_rule1488 = new BitSet(new long[]{0x0000000000000000L,0x0000000001100000L});
-    public static final BitSet FOLLOW_rule_id_in_rule1490 = new BitSet(new long[]{0x0000000000000000L,0x0020000090100000L});
-    public static final BitSet FOLLOW_extend_key_in_rule1499 = new BitSet(new long[]{0x0000000000000000L,0x0000000001100000L});
-    public static final BitSet FOLLOW_rule_id_in_rule1501 = new BitSet(new long[]{0x0000000000000000L,0x0020000090100000L});
-    public static final BitSet FOLLOW_decl_metadata_in_rule1505 = new BitSet(new long[]{0x0000000000000000L,0x0020000090100000L});
-    public static final BitSet FOLLOW_rule_attributes_in_rule1508 = new BitSet(new long[]{0x0000000000000000L,0x0020000080000000L});
-    public static final BitSet FOLLOW_when_part_in_rule1511 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
-    public static final BitSet FOLLOW_rhs_chunk_in_rule1514 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_WHEN_in_when_part1554 = new BitSet(new long[]{0x0000000000000002L,0x0000000022100000L});
-    public static final BitSet FOLLOW_COLON_in_when_part1560 = new BitSet(new long[]{0x0000000000000002L,0x0000000002100000L});
-    public static final BitSet FOLLOW_normal_lhs_block_in_when_part1570 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_rule_id1591 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_rule_id1607 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_attributes_key_in_rule_attributes1628 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
-    public static final BitSet FOLLOW_COLON_in_rule_attributes1630 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1640 = new BitSet(new long[]{0x0000000000000002L,0x0000000004100000L});
-    public static final BitSet FOLLOW_COMMA_in_rule_attributes1644 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1651 = new BitSet(new long[]{0x0000000000000002L,0x0000000004100000L});
-    public static final BitSet FOLLOW_salience_in_rule_attribute1690 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_no_loop_in_rule_attribute1696 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_agenda_group_in_rule_attribute1701 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_duration_in_rule_attribute1708 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_activation_group_in_rule_attribute1715 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_auto_focus_in_rule_attribute1721 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_effective_in_rule_attribute1727 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_expires_in_rule_attribute1733 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_enabled_in_rule_attribute1739 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ruleflow_group_in_rule_attribute1745 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lock_on_active_in_rule_attribute1751 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_dialect_in_rule_attribute1756 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_effective_key_in_date_effective1772 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_STRING_in_date_effective1777 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_expires_key_in_date_expires1791 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_STRING_in_date_expires1796 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_enabled_key_in_enabled1811 = new BitSet(new long[]{0x0000000000000000L,0x0000000102000000L});
-    public static final BitSet FOLLOW_BOOL_in_enabled1824 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_enabled1835 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_salience_key_in_salience1855 = new BitSet(new long[]{0x0000000000000000L,0x0000000202000000L});
-    public static final BitSet FOLLOW_INT_in_salience1864 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_salience1873 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_no_loop_key_in_no_loop1888 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
-    public static final BitSet FOLLOW_BOOL_in_no_loop1893 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_auto_focus_key_in_auto_focus1908 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
-    public static final BitSet FOLLOW_BOOL_in_auto_focus1913 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_activation_group_key_in_activation_group1930 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_STRING_in_activation_group1935 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ruleflow_group_key_in_ruleflow_group1949 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_STRING_in_ruleflow_group1954 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_agenda_group_key_in_agenda_group1968 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_STRING_in_agenda_group1973 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_duration_key_in_duration1987 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
-    public static final BitSet FOLLOW_INT_in_duration1992 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_dialect_key_in_dialect2008 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_STRING_in_dialect2013 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lock_on_active_key_in_lock_on_active2031 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
-    public static final BitSet FOLLOW_BOOL_in_lock_on_active2036 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_in_normal_lhs_block2051 = new BitSet(new long[]{0x0000000000000002L,0x0000000002100000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs2072 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2096 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_or_key_in_lhs_or2106 = new BitSet(new long[]{0x0000000000000000L,0x0000000002100000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2114 = new BitSet(new long[]{0x0000000000000000L,0x000000000A100000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2120 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2143 = new BitSet(new long[]{0x0000000000000002L,0x0000000400100000L});
-    public static final BitSet FOLLOW_or_key_in_lhs_or2165 = new BitSet(new long[]{0x0000000000000000L,0x0000000002100000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_lhs_or2172 = new BitSet(new long[]{0x0000000000000000L,0x0000000002100000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2183 = new BitSet(new long[]{0x0000000000000002L,0x0000000400100000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_and2224 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_and_key_in_lhs_and2234 = new BitSet(new long[]{0x0000000000000000L,0x0000000002100000L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2242 = new BitSet(new long[]{0x0000000000000000L,0x000000000A100000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_and2248 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2272 = new BitSet(new long[]{0x0000000000000002L,0x0000000800100000L});
-    public static final BitSet FOLLOW_and_key_in_lhs_and2294 = new BitSet(new long[]{0x0000000000000000L,0x0000000002100000L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_lhs_and2301 = new BitSet(new long[]{0x0000000000000000L,0x0000000002100000L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2312 = new BitSet(new long[]{0x0000000000000002L,0x0000000800100000L});
-    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary2343 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
-    public static final BitSet FOLLOW_lhs_not_binding_in_lhs_unary2351 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
-    public static final BitSet FOLLOW_lhs_not_in_lhs_unary2357 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
-    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary2363 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
-    public static final BitSet FOLLOW_lhs_forall_in_lhs_unary2369 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_unary2375 = new BitSet(new long[]{0x0000000000000000L,0x0000000002100000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_unary2386 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_unary2392 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
-    public static final BitSet FOLLOW_pattern_source_in_lhs_unary2400 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_lhs_unary2414 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_exists_key_in_lhs_exist2430 = new BitSet(new long[]{0x0000000000000000L,0x0000000002100000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_exist2457 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_exist2464 = new BitSet(new long[]{0x0000000000000000L,0x0000000002100000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_exist2472 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_exist2479 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_exist2494 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_not_key_in_lhs_not_binding2540 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_fact_binding_in_lhs_not_binding2542 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_not_key_in_lhs_not2565 = new BitSet(new long[]{0x0000000000000000L,0x0000000002100000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_not2587 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_not2594 = new BitSet(new long[]{0x0000000000000000L,0x0000000002100000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_not2603 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_not2609 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_not2619 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_eval_key_in_lhs_eval2658 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_lhs_eval2667 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forall_key_in_lhs_forall2694 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forall2699 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_forall2707 = new BitSet(new long[]{0x0000000000000000L,0x0000000008100000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forall2713 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_pattern_source2749 = new BitSet(new long[]{0x0000000000000002L,0x0000003000000000L});
-    public static final BitSet FOLLOW_over_clause_in_pattern_source2753 = new BitSet(new long[]{0x0000000000000002L,0x0000001000000000L});
-    public static final BitSet FOLLOW_FROM_in_pattern_source2763 = new BitSet(new long[]{0x0000000000000000L,0x0000014000100000L});
-    public static final BitSet FOLLOW_accumulate_statement_in_pattern_source2783 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_collect_statement_in_pattern_source2799 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_entrypoint_statement_in_pattern_source2816 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_from_source_in_pattern_source2832 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_OVER_in_over_clause2864 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_over_elements_in_over_clause2869 = new BitSet(new long[]{0x0000000000000002L,0x0000000004000000L});
-    public static final BitSet FOLLOW_COMMA_in_over_clause2876 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_over_elements_in_over_clause2881 = new BitSet(new long[]{0x0000000000000002L,0x0000000004000000L});
-    public static final BitSet FOLLOW_ID_in_over_elements2896 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
-    public static final BitSet FOLLOW_COLON_in_over_elements2903 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_ID_in_over_elements2912 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_over_elements2919 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ACCUMULATE_in_accumulate_statement2945 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_statement2954 = new BitSet(new long[]{0x0000000000000000L,0x0000000002100000L});
-    public static final BitSet FOLLOW_lhs_or_in_accumulate_statement2962 = new BitSet(new long[]{0x0000000000000000L,0x0000008004100000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_statement2967 = new BitSet(new long[]{0x0000000000000000L,0x0000008000100000L});
-    public static final BitSet FOLLOW_accumulate_init_clause_in_accumulate_statement2977 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
-    public static final BitSet FOLLOW_accumulate_id_clause_in_accumulate_statement2983 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_statement2991 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INIT_in_accumulate_init_clause3037 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3048 = new BitSet(new long[]{0x0000000000000000L,0x0000000004100000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3053 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_action_key_in_accumulate_init_clause3064 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3068 = new BitSet(new long[]{0x0000000000000000L,0x0000000004100000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3073 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_reverse_key_in_accumulate_init_clause3086 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3090 = new BitSet(new long[]{0x0000000000000000L,0x0000000004100000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3095 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_result_key_in_accumulate_init_clause3110 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3116 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3174 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data3198 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000007L});
-    public static final BitSet FOLLOW_set_in_accumulate_paren_chunk_data3210 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000007L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3226 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000007L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3237 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_accumulate_id_clause3253 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_accumulate_id_clause3259 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_COLLECT_in_collect_statement3281 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_collect_statement3290 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_pattern_source_in_collect_statement3297 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_collect_statement3302 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_entry_point_key_in_entrypoint_statement3329 = new BitSet(new long[]{0x0000000000000000L,0x0000000001100000L});
-    public static final BitSet FOLLOW_entrypoint_id_in_entrypoint_statement3337 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_entrypoint_id3363 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_entrypoint_id3380 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_from_source3400 = new BitSet(new long[]{0x0000000000000002L,0x0000000002200000L});
-    public static final BitSet FOLLOW_paren_chunk_in_from_source3415 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L});
-    public static final BitSet FOLLOW_expression_chain_in_from_source3422 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DOT_in_expression_chain3455 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_ID_in_expression_chain3462 = new BitSet(new long[]{0x0000000000000002L,0x0008000002200000L});
-    public static final BitSet FOLLOW_paren_chunk_in_expression_chain3478 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L});
-    public static final BitSet FOLLOW_square_chunk_in_expression_chain3492 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L});
-    public static final BitSet FOLLOW_expression_chain_in_expression_chain3503 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_binding_in_lhs_pattern3536 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_lhs_pattern3549 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_label_in_fact_binding3569 = new BitSet(new long[]{0x0000000000000000L,0x0000000002100000L});
-    public static final BitSet FOLLOW_fact_in_fact_binding3575 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_binding3582 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_fact_binding_expression_in_fact_binding3590 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_binding3598 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_fact_binding_expression3639 = new BitSet(new long[]{0x0000000000000002L,0x0000000400100000L});
-    public static final BitSet FOLLOW_or_key_in_fact_binding_expression3651 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_fact_binding_expression3657 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_fact_in_fact_binding_expression3662 = new BitSet(new long[]{0x0000000000000002L,0x0000000400100000L});
-    public static final BitSet FOLLOW_pattern_type_in_fact3702 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_fact3707 = new BitSet(new long[]{0x0000000000000000L,0x000000000A100000L});
-    public static final BitSet FOLLOW_constraints_in_fact3718 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact3724 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_constraint_in_constraints3758 = new BitSet(new long[]{0x0000000000000002L,0x0000000004000000L});
-    public static final BitSet FOLLOW_COMMA_in_constraints3762 = new BitSet(new long[]{0x0000000000000000L,0x0000000002100000L});
-    public static final BitSet FOLLOW_constraint_in_constraints3769 = new BitSet(new long[]{0x0000000000000002L,0x0000000004000000L});
-    public static final BitSet FOLLOW_or_constr_in_constraint3783 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_constr_in_or_constr3794 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_constr3798 = new BitSet(new long[]{0x0000000000000000L,0x0000000002100000L});
-    public static final BitSet FOLLOW_and_constr_in_or_constr3805 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_unary_constr_in_and_constr3820 = new BitSet(new long[]{0x0000000000000002L,0x0000000800000000L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_constr3824 = new BitSet(new long[]{0x0000000000000000L,0x0000000002100000L});
-    public static final BitSet FOLLOW_unary_constr_in_and_constr3831 = new BitSet(new long[]{0x0000000000000002L,0x0000000800000000L});
-    public static final BitSet FOLLOW_eval_key_in_unary_constr3864 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_unary_constr3867 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_field_constraint_in_unary_constr3872 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_unary_constr3878 = new BitSet(new long[]{0x0000000000000000L,0x0000000002100000L});
-    public static final BitSet FOLLOW_or_constr_in_unary_constr3888 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_unary_constr3893 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_label_in_field_constraint3913 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_accessor_path_in_field_constraint3915 = new BitSet(new long[]{0x0000000000000002L,0x0001FE0002100000L});
-    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint3922 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ARROW_in_field_constraint3928 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_field_constraint3932 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_path_in_field_constraint3986 = new BitSet(new long[]{0x0000000000000000L,0x0001FC0002100000L});
-    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint3988 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_label4013 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
-    public static final BitSet FOLLOW_COLON_in_label4020 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective4041 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_restr_connective4047 = new BitSet(new long[]{0x0000000000000000L,0x0001FC0002100000L});
-    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective4055 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective4070 = new BitSet(new long[]{0x0000000000000002L,0x0000000800000000L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_restr_connective4076 = new BitSet(new long[]{0x0000000000000000L,0x0001FC0002100000L});
-    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective4083 = new BitSet(new long[]{0x0000000000000002L,0x0000000800000000L});
-    public static final BitSet FOLLOW_compound_operator_in_constraint_expression4105 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_simple_operator_in_constraint_expression4110 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_constraint_expression4115 = new BitSet(new long[]{0x0000000000000000L,0x0001FC0002100000L});
-    public static final BitSet FOLLOW_or_restr_connective_in_constraint_expression4124 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_constraint_expression4129 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EQUAL_in_simple_operator4158 = new BitSet(new long[]{0x0000000000000000L,0x0006000303100000L});
-    public static final BitSet FOLLOW_GREATER_in_simple_operator4166 = new BitSet(new long[]{0x0000000000000000L,0x0006000303100000L});
-    public static final BitSet FOLLOW_GREATER_EQUAL_in_simple_operator4174 = new BitSet(new long[]{0x0000000000000000L,0x0006000303100000L});
-    public static final BitSet FOLLOW_LESS_in_simple_operator4182 = new BitSet(new long[]{0x0000000000000000L,0x0006000303100000L});
-    public static final BitSet FOLLOW_LESS_EQUAL_in_simple_operator4190 = new BitSet(new long[]{0x0000000000000000L,0x0006000303100000L});
-    public static final BitSet FOLLOW_NOT_EQUAL_in_simple_operator4198 = new BitSet(new long[]{0x0000000000000000L,0x0006000303100000L});
-    public static final BitSet FOLLOW_not_key_in_simple_operator4206 = new BitSet(new long[]{0x0000000000000000L,0x0001000000100000L});
-    public static final BitSet FOLLOW_contains_key_in_simple_operator4213 = new BitSet(new long[]{0x0000000000000000L,0x0006000303100000L});
-    public static final BitSet FOLLOW_soundslike_key_in_simple_operator4220 = new BitSet(new long[]{0x0000000000000000L,0x0006000303100000L});
-    public static final BitSet FOLLOW_matches_key_in_simple_operator4227 = new BitSet(new long[]{0x0000000000000000L,0x0006000303100000L});
-    public static final BitSet FOLLOW_memberof_key_in_simple_operator4234 = new BitSet(new long[]{0x0000000000000000L,0x0006000303100000L});
-    public static final BitSet FOLLOW_ID_in_simple_operator4243 = new BitSet(new long[]{0x0000000000000000L,0x0006000303100000L});
-    public static final BitSet FOLLOW_TILDE_in_simple_operator4254 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_ID_in_simple_operator4262 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_square_chunk_in_simple_operator4268 = new BitSet(new long[]{0x0000000000000000L,0x0006000303100000L});
-    public static final BitSet FOLLOW_contains_key_in_simple_operator4274 = new BitSet(new long[]{0x0000000000000000L,0x0006000303100000L});
-    public static final BitSet FOLLOW_excludes_key_in_simple_operator4280 = new BitSet(new long[]{0x0000000000000000L,0x0006000303100000L});
-    public static final BitSet FOLLOW_matches_key_in_simple_operator4286 = new BitSet(new long[]{0x0000000000000000L,0x0006000303100000L});
-    public static final BitSet FOLLOW_soundslike_key_in_simple_operator4292 = new BitSet(new long[]{0x0000000000000000L,0x0006000303100000L});
-    public static final BitSet FOLLOW_memberof_key_in_simple_operator4298 = new BitSet(new long[]{0x0000000000000000L,0x0006000303100000L});
-    public static final BitSet FOLLOW_ID_in_simple_operator4306 = new BitSet(new long[]{0x0000000000000000L,0x0006000303100000L});
-    public static final BitSet FOLLOW_TILDE_in_simple_operator4316 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_ID_in_simple_operator4324 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_square_chunk_in_simple_operator4330 = new BitSet(new long[]{0x0000000000000000L,0x0006000303100000L});
-    public static final BitSet FOLLOW_expression_value_in_simple_operator4337 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_in_key_in_compound_operator4355 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_not_key_in_compound_operator4360 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_in_key_in_compound_operator4362 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_compound_operator4373 = new BitSet(new long[]{0x0000000000000000L,0x0006000303100000L});
-    public static final BitSet FOLLOW_expression_value_in_compound_operator4381 = new BitSet(new long[]{0x0000000000000000L,0x000000000C000000L});
-    public static final BitSet FOLLOW_COMMA_in_compound_operator4385 = new BitSet(new long[]{0x0000000000000000L,0x0006000303100000L});
-    public static final BitSet FOLLOW_expression_value_in_compound_operator4390 = new BitSet(new long[]{0x0000000000000000L,0x000000000C000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_compound_operator4398 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_path_in_expression_value4419 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_constraint_in_expression_value4424 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_expression_value4430 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_literal_constraint4449 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INT_in_literal_constraint4456 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FLOAT_in_literal_constraint4463 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_BOOL_in_literal_constraint4470 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NULL_in_literal_constraint4477 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_pattern_type4492 = new BitSet(new long[]{0x0000000000000002L,0x0008000000200000L});
-    public static final BitSet FOLLOW_DOT_in_pattern_type4498 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_ID_in_pattern_type4502 = new BitSet(new long[]{0x0000000000000002L,0x0008000000200000L});
-    public static final BitSet FOLLOW_dimension_definition_in_pattern_type4517 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
-    public static final BitSet FOLLOW_ID_in_data_type4545 = new BitSet(new long[]{0x0000000000000002L,0x0008000000200000L});
-    public static final BitSet FOLLOW_DOT_in_data_type4551 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_ID_in_data_type4555 = new BitSet(new long[]{0x0000000000000002L,0x0008000000200000L});
-    public static final BitSet FOLLOW_dimension_definition_in_data_type4560 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_dimension_definition4589 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dimension_definition4596 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_element_in_accessor_path4610 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L});
-    public static final BitSet FOLLOW_DOT_in_accessor_path4614 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_accessor_element_in_accessor_path4618 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L});
-    public static final BitSet FOLLOW_ID_in_accessor_element4642 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
-    public static final BitSet FOLLOW_square_chunk_in_accessor_element4648 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
-    public static final BitSet FOLLOW_rhs_chunk_data_in_rhs_chunk4677 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_THEN_in_rhs_chunk_data4696 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000007L});
-    public static final BitSet FOLLOW_set_in_rhs_chunk_data4709 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000007L});
-    public static final BitSet FOLLOW_END_in_rhs_chunk_data4722 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_rhs_chunk_data4728 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk4747 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_curly_chunk_data4770 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000007L});
-    public static final BitSet FOLLOW_set_in_curly_chunk_data4782 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000007L});
-    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk_data4798 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000007L});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_curly_chunk_data4809 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk4830 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk_data4854 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000007L});
-    public static final BitSet FOLLOW_set_in_paren_chunk_data4866 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000007L});
-    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk_data4882 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000007L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk_data4893 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk4914 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk_data4937 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000007L});
-    public static final BitSet FOLLOW_set_in_square_chunk_data4949 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000007L});
-    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk_data4964 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000007L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk_data4975 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_lock_on_active_key4999 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
-    public static final BitSet FOLLOW_MISC_in_lock_on_active_key5003 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_ID_in_lock_on_active_key5007 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
-    public static final BitSet FOLLOW_MISC_in_lock_on_active_key5011 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_ID_in_lock_on_active_key5015 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_date_effective_key5047 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
-    public static final BitSet FOLLOW_MISC_in_date_effective_key5051 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_ID_in_date_effective_key5055 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_date_expires_key5087 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
-    public static final BitSet FOLLOW_MISC_in_date_expires_key5091 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_ID_in_date_expires_key5095 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_no_loop_key5127 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
-    public static final BitSet FOLLOW_MISC_in_no_loop_key5131 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_ID_in_no_loop_key5135 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_auto_focus_key5167 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
-    public static final BitSet FOLLOW_MISC_in_auto_focus_key5171 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_ID_in_auto_focus_key5175 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_activation_group_key5207 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
-    public static final BitSet FOLLOW_MISC_in_activation_group_key5211 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_ID_in_activation_group_key5215 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_agenda_group_key5247 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
-    public static final BitSet FOLLOW_MISC_in_agenda_group_key5251 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_ID_in_agenda_group_key5255 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_ruleflow_group_key5287 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
-    public static final BitSet FOLLOW_MISC_in_ruleflow_group_key5291 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_ID_in_ruleflow_group_key5295 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_entry_point_key5327 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
-    public static final BitSet FOLLOW_MISC_in_entry_point_key5331 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_ID_in_entry_point_key5335 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_duration_key5364 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_package_key5391 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_import_key5418 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_dialect_key5445 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_salience_key5472 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_enabled_key5499 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_attributes_key5526 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_rule_key5553 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_extend_key5580 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_template_key5607 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_query_key5634 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_declare_key5661 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_function_key5688 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_global_key5715 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_eval_key5742 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_contains_key5769 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_matches_key5796 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_excludes_key5823 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_soundslike_key5850 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_memberof_key5877 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_not_key5904 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_in_key5931 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_or_key5958 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_and_key5985 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_exists_key6012 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_forall_key6039 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_action_key6066 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_reverse_key6093 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_result_key6120 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred12087 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_or_key_in_synpred12089 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_or_key_in_synpred22156 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_synpred22158 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred32215 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_and_key_in_synpred32217 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_key_in_synpred42285 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_synpred42287 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SEMICOLON_in_synpred52410 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred62447 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_or_key_in_synpred62450 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_key_in_synpred62452 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred72575 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_or_key_in_synpred72578 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_key_in_synpred72580 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred83409 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_package_statement_in_compilation_unit376 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_statement_in_compilation_unit381 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_EOF_in_compilation_unit386 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_package_key_in_package_statement441 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_package_id_in_package_statement445 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_package_statement447 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_package_id474 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_DOT_in_package_id480 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_package_id484 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_rule_attribute_in_statement522 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_import_statement_in_statement529 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_import_statement_in_statement535 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_global_in_statement541 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_in_statement547 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_template_in_statement555 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_type_declaration_in_statement563 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule_in_statement568 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_query_in_statement573 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_import_key_in_import_statement595 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_import_name_in_import_statement597 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_import_statement600 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_import_key_in_function_import_statement638 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_function_key_in_function_import_statement640 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_import_name_in_function_import_statement642 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_function_import_statement645 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_import_name679 = new BitSet(new long[]{0x0000000000000002L,0x0000000000060000L});
+    public static final BitSet FOLLOW_DOT_in_import_name685 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_import_name689 = new BitSet(new long[]{0x0000000000000002L,0x0000000000060000L});
+    public static final BitSet FOLLOW_DOT_STAR_in_import_name696 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_global_key_in_global736 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_data_type_in_global738 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_global_id_in_global740 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_global742 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_global_id771 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_key_in_function803 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_data_type_in_function805 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_function_id_in_function808 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_parameters_in_function810 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_curly_chunk_in_function812 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_function_id842 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_query_key_in_query874 = new BitSet(new long[]{0x0000000000000000L,0x0000000000110000L});
+    public static final BitSet FOLLOW_query_id_in_query876 = new BitSet(new long[]{0x0000000000000000L,0x0000000000290000L});
+    public static final BitSet FOLLOW_parameters_in_query884 = new BitSet(new long[]{0x0000000000000000L,0x0000000000290000L});
+    public static final BitSet FOLLOW_normal_lhs_block_in_query893 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_END_in_query898 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_query900 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_query_id935 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_query_id951 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_parameters970 = new BitSet(new long[]{0x0000000000000000L,0x0000000000810000L});
+    public static final BitSet FOLLOW_param_definition_in_parameters979 = new BitSet(new long[]{0x0000000000000000L,0x0000000000C00000L});
+    public static final BitSet FOLLOW_COMMA_in_parameters982 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_param_definition_in_parameters986 = new BitSet(new long[]{0x0000000000000000L,0x0000000000C00000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_parameters995 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_data_type_in_param_definition1021 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_argument_in_param_definition1024 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_argument1035 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
+    public static final BitSet FOLLOW_dimension_definition_in_argument1041 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
+    public static final BitSet FOLLOW_declare_key_in_type_declaration1064 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_type_declare_id_in_type_declaration1067 = new BitSet(new long[]{0x0000000000000000L,0x0000000001090000L});
+    public static final BitSet FOLLOW_decl_metadata_in_type_declaration1071 = new BitSet(new long[]{0x0000000000000000L,0x0000000001090000L});
+    public static final BitSet FOLLOW_decl_field_in_type_declaration1076 = new BitSet(new long[]{0x0000000000000000L,0x0000000000090000L});
+    public static final BitSet FOLLOW_END_in_type_declaration1081 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_type_declare_id1116 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_AT_in_decl_metadata1135 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_decl_metadata1143 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_paren_chunk_in_decl_metadata1150 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_decl_field1173 = new BitSet(new long[]{0x0000000000000000L,0x0000000006000000L});
+    public static final BitSet FOLLOW_decl_field_initialization_in_decl_field1179 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
+    public static final BitSet FOLLOW_COLON_in_decl_field1185 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_data_type_in_decl_field1191 = new BitSet(new long[]{0x0000000000000002L,0x0000000001000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_decl_field1195 = new BitSet(new long[]{0x0000000000000002L,0x0000000001000000L});
+    public static final BitSet FOLLOW_EQUALS_in_decl_field_initialization1223 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_paren_chunk_in_decl_field_initialization1229 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_template_key_in_template1266 = new BitSet(new long[]{0x0000000000000000L,0x0000000000110000L});
+    public static final BitSet FOLLOW_template_id_in_template1268 = new BitSet(new long[]{0x0000000000000000L,0x0000000000018000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_template1275 = new BitSet(new long[]{0x0000000000000000L,0x0000000000018000L});
+    public static final BitSet FOLLOW_template_slot_in_template1283 = new BitSet(new long[]{0x0000000000000000L,0x0000000000098000L});
+    public static final BitSet FOLLOW_END_in_template1288 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_template1292 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_template_id1325 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_template_id1341 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_data_type_in_template_slot1361 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_slot_id_in_template_slot1363 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_template_slot1365 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_slot_id1394 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule_key_in_rule1431 = new BitSet(new long[]{0x0000000000000000L,0x0000000000110000L});
+    public static final BitSet FOLLOW_rule_id_in_rule1433 = new BitSet(new long[]{0x0000000000000000L,0x0001000009010000L});
+    public static final BitSet FOLLOW_extend_key_in_rule1442 = new BitSet(new long[]{0x0000000000000000L,0x0000000000110000L});
+    public static final BitSet FOLLOW_rule_id_in_rule1444 = new BitSet(new long[]{0x0000000000000000L,0x0001000009010000L});
+    public static final BitSet FOLLOW_decl_metadata_in_rule1448 = new BitSet(new long[]{0x0000000000000000L,0x0001000009010000L});
+    public static final BitSet FOLLOW_rule_attributes_in_rule1451 = new BitSet(new long[]{0x0000000000000000L,0x0001000009010000L});
+    public static final BitSet FOLLOW_when_part_in_rule1454 = new BitSet(new long[]{0x0000000000000000L,0x0001000009010000L});
+    public static final BitSet FOLLOW_rhs_chunk_in_rule1457 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_WHEN_in_when_part1501 = new BitSet(new long[]{0x0000000000000000L,0x0000000002210000L});
+    public static final BitSet FOLLOW_COLON_in_when_part1507 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_normal_lhs_block_in_when_part1517 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_rule_id1538 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_rule_id1554 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_attributes_key_in_rule_attributes1575 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
+    public static final BitSet FOLLOW_COLON_in_rule_attributes1577 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1587 = new BitSet(new long[]{0x0000000000000002L,0x0000000000410000L});
+    public static final BitSet FOLLOW_COMMA_in_rule_attributes1591 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1598 = new BitSet(new long[]{0x0000000000000002L,0x0000000000410000L});
+    public static final BitSet FOLLOW_salience_in_rule_attribute1637 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_no_loop_in_rule_attribute1643 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_agenda_group_in_rule_attribute1648 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_duration_in_rule_attribute1655 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_activation_group_in_rule_attribute1662 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_auto_focus_in_rule_attribute1668 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_effective_in_rule_attribute1674 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_expires_in_rule_attribute1680 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_enabled_in_rule_attribute1686 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleflow_group_in_rule_attribute1692 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lock_on_active_in_rule_attribute1698 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_dialect_in_rule_attribute1703 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_effective_key_in_date_effective1718 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+    public static final BitSet FOLLOW_STRING_in_date_effective1723 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_expires_key_in_date_expires1737 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+    public static final BitSet FOLLOW_STRING_in_date_expires1742 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_enabled_key_in_enabled1757 = new BitSet(new long[]{0x0000000000000000L,0x0000000010200000L});
+    public static final BitSet FOLLOW_BOOL_in_enabled1770 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_enabled1781 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_salience_key_in_salience1801 = new BitSet(new long[]{0x0000000000000000L,0x0000000020200000L});
+    public static final BitSet FOLLOW_INT_in_salience1810 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_salience1819 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_no_loop_key_in_no_loop1834 = new BitSet(new long[]{0x0000000000000002L,0x0000000010000000L});
+    public static final BitSet FOLLOW_BOOL_in_no_loop1839 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_auto_focus_key_in_auto_focus1854 = new BitSet(new long[]{0x0000000000000002L,0x0000000010000000L});
+    public static final BitSet FOLLOW_BOOL_in_auto_focus1859 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_activation_group_key_in_activation_group1876 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+    public static final BitSet FOLLOW_STRING_in_activation_group1881 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleflow_group_key_in_ruleflow_group1895 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+    public static final BitSet FOLLOW_STRING_in_ruleflow_group1900 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_agenda_group_key_in_agenda_group1914 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+    public static final BitSet FOLLOW_STRING_in_agenda_group1919 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_duration_key_in_duration1933 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
+    public static final BitSet FOLLOW_INT_in_duration1938 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_dialect_key_in_dialect1954 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+    public static final BitSet FOLLOW_STRING_in_dialect1959 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lock_on_active_key_in_lock_on_active1977 = new BitSet(new long[]{0x0000000000000002L,0x0000000010000000L});
+    public static final BitSet FOLLOW_BOOL_in_lock_on_active1982 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_in_normal_lhs_block1997 = new BitSet(new long[]{0x0000000000000002L,0x0000000000210000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs2018 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2042 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_or_key_in_lhs_or2052 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2060 = new BitSet(new long[]{0x0000000000000000L,0x0000000000A10000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2066 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2089 = new BitSet(new long[]{0x0000000000000002L,0x0000000040010000L});
+    public static final BitSet FOLLOW_or_key_in_lhs_or2111 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_lhs_or2118 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2129 = new BitSet(new long[]{0x0000000000000002L,0x0000000040010000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_and2170 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_and_key_in_lhs_and2180 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2188 = new BitSet(new long[]{0x0000000000000000L,0x0000000000A10000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_and2194 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2218 = new BitSet(new long[]{0x0000000000000002L,0x0000000080010000L});
+    public static final BitSet FOLLOW_and_key_in_lhs_and2240 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_lhs_and2247 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2258 = new BitSet(new long[]{0x0000000000000002L,0x0000000080010000L});
+    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary2289 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
+    public static final BitSet FOLLOW_lhs_not_binding_in_lhs_unary2297 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
+    public static final BitSet FOLLOW_lhs_not_in_lhs_unary2303 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
+    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary2309 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
+    public static final BitSet FOLLOW_lhs_forall_in_lhs_unary2315 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_unary2321 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_unary2332 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_unary2338 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
+    public static final BitSet FOLLOW_pattern_source_in_lhs_unary2346 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_lhs_unary2360 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_exists_key_in_lhs_exist2376 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_exist2403 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_exist2410 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_exist2418 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_exist2425 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_exist2440 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_not_key_in_lhs_not_binding2486 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_fact_binding_in_lhs_not_binding2488 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_not_key_in_lhs_not2511 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_not2533 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_not2540 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_not2549 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_not2555 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_not2565 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_eval_key_in_lhs_eval2604 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_paren_chunk_in_lhs_eval2613 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forall_key_in_lhs_forall2640 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forall2645 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_forall2653 = new BitSet(new long[]{0x0000000000000000L,0x0000000000A10000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forall2659 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_pattern_source2695 = new BitSet(new long[]{0x0000000000000002L,0x0000000300000000L});
+    public static final BitSet FOLLOW_over_clause_in_pattern_source2699 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
+    public static final BitSet FOLLOW_FROM_in_pattern_source2709 = new BitSet(new long[]{0x0000000000000000L,0x0000001400010000L});
+    public static final BitSet FOLLOW_accumulate_statement_in_pattern_source2729 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_collect_statement_in_pattern_source2745 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_entrypoint_statement_in_pattern_source2762 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_from_source_in_pattern_source2778 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_OVER_in_over_clause2810 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_over_elements_in_over_clause2815 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
+    public static final BitSet FOLLOW_COMMA_in_over_clause2822 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_over_elements_in_over_clause2827 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
+    public static final BitSet FOLLOW_ID_in_over_elements2842 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
+    public static final BitSet FOLLOW_COLON_in_over_elements2849 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_over_elements2858 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_paren_chunk_in_over_elements2865 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ACCUMULATE_in_accumulate_statement2891 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_statement2900 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_lhs_or_in_accumulate_statement2908 = new BitSet(new long[]{0x0000000000000000L,0x0000000800410000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_statement2913 = new BitSet(new long[]{0x0000000000000000L,0x0000000800410000L});
+    public static final BitSet FOLLOW_accumulate_init_clause_in_accumulate_statement2923 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_accumulate_id_clause_in_accumulate_statement2929 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_statement2937 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INIT_in_accumulate_init_clause2983 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause2994 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause2999 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
+    public static final BitSet FOLLOW_action_key_in_accumulate_init_clause3010 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3014 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3019 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
+    public static final BitSet FOLLOW_reverse_key_in_accumulate_init_clause3031 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3035 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3040 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
+    public static final BitSet FOLLOW_result_key_in_accumulate_init_clause3056 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3062 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3120 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data3144 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_set_in_accumulate_paren_chunk_data3156 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3172 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3183 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_accumulate_id_clause3199 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_paren_chunk_in_accumulate_id_clause3205 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_COLLECT_in_collect_statement3227 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_collect_statement3236 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_pattern_source_in_collect_statement3243 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_collect_statement3248 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_entry_point_key_in_entrypoint_statement3275 = new BitSet(new long[]{0x0000000000000000L,0x0000000000110000L});
+    public static final BitSet FOLLOW_entrypoint_id_in_entrypoint_statement3283 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_entrypoint_id3309 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_entrypoint_id3326 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_from_source3346 = new BitSet(new long[]{0x0000000000000002L,0x0000000000220000L});
+    public static final BitSet FOLLOW_paren_chunk_in_from_source3361 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_expression_chain_in_from_source3368 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOT_in_expression_chain3401 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_expression_chain3408 = new BitSet(new long[]{0x0000000000000002L,0x0000400000220000L});
+    public static final BitSet FOLLOW_paren_chunk_in_expression_chain3424 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_square_chunk_in_expression_chain3438 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_expression_chain_in_expression_chain3449 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_binding_in_lhs_pattern3482 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_lhs_pattern3495 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_label_in_fact_binding3515 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_fact_in_fact_binding3521 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_binding3528 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_fact_binding_expression_in_fact_binding3536 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_binding3544 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_fact_binding_expression3585 = new BitSet(new long[]{0x0000000000000002L,0x0000000040010000L});
+    public static final BitSet FOLLOW_or_key_in_fact_binding_expression3597 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_fact_binding_expression3603 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_fact_in_fact_binding_expression3608 = new BitSet(new long[]{0x0000000000000002L,0x0000000040010000L});
+    public static final BitSet FOLLOW_pattern_type_in_fact3648 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact3653 = new BitSet(new long[]{0x0000000000000000L,0x0000000000A10000L});
+    public static final BitSet FOLLOW_constraints_in_fact3664 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact3670 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_constraint_in_constraints3704 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
+    public static final BitSet FOLLOW_COMMA_in_constraints3708 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_constraint_in_constraints3715 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
+    public static final BitSet FOLLOW_or_constr_in_constraint3729 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr3740 = new BitSet(new long[]{0x0000000000000002L,0x0000000040000000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_constr3744 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr3751 = new BitSet(new long[]{0x0000000000000002L,0x0000000040000000L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr3766 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_constr3770 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr3777 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
+    public static final BitSet FOLLOW_eval_key_in_unary_constr3810 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_paren_chunk_in_unary_constr3813 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_field_constraint_in_unary_constr3818 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_unary_constr3824 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_or_constr_in_unary_constr3834 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_unary_constr3839 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_label_in_field_constraint3859 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_accessor_path_in_field_constraint3861 = new BitSet(new long[]{0x0000000000000002L,0x00000FE000210000L});
+    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint3868 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ARROW_in_field_constraint3874 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_paren_chunk_in_field_constraint3878 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_path_in_field_constraint3932 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000210000L});
+    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint3934 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_label3959 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
+    public static final BitSet FOLLOW_COLON_in_label3966 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective3987 = new BitSet(new long[]{0x0000000000000002L,0x0000000040000000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_restr_connective3993 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000210000L});
+    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective4001 = new BitSet(new long[]{0x0000000000000002L,0x0000000040000000L});
+    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective4022 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_restr_connective4028 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000210000L});
+    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective4035 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
+    public static final BitSet FOLLOW_compound_operator_in_constraint_expression4063 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_simple_operator_in_constraint_expression4068 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_constraint_expression4073 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000210000L});
+    public static final BitSet FOLLOW_or_restr_connective_in_constraint_expression4082 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_constraint_expression4087 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EQUAL_in_simple_operator4122 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
+    public static final BitSet FOLLOW_GREATER_in_simple_operator4130 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
+    public static final BitSet FOLLOW_GREATER_EQUAL_in_simple_operator4138 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
+    public static final BitSet FOLLOW_LESS_in_simple_operator4146 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
+    public static final BitSet FOLLOW_LESS_EQUAL_in_simple_operator4154 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
+    public static final BitSet FOLLOW_NOT_EQUAL_in_simple_operator4162 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
+    public static final BitSet FOLLOW_not_key_in_simple_operator4170 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000010000L});
+    public static final BitSet FOLLOW_operator_key_in_simple_operator4177 = new BitSet(new long[]{0x0000000000000000L,0x0000700030310000L});
+    public static final BitSet FOLLOW_square_chunk_in_simple_operator4180 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
+    public static final BitSet FOLLOW_expression_value_in_simple_operator4192 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_in_key_in_compound_operator4214 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_not_key_in_compound_operator4219 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_in_key_in_compound_operator4221 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_compound_operator4232 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
+    public static final BitSet FOLLOW_expression_value_in_compound_operator4240 = new BitSet(new long[]{0x0000000000000000L,0x0000000000C00000L});
+    public static final BitSet FOLLOW_COMMA_in_compound_operator4244 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
+    public static final BitSet FOLLOW_expression_value_in_compound_operator4249 = new BitSet(new long[]{0x0000000000000000L,0x0000000000C00000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_compound_operator4257 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_operator_key4288 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_neg_operator_key4333 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_path_in_expression_value4370 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_constraint_in_expression_value4375 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_expression_value4381 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_literal_constraint4400 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INT_in_literal_constraint4407 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FLOAT_in_literal_constraint4414 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_BOOL_in_literal_constraint4421 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NULL_in_literal_constraint4428 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_pattern_type4443 = new BitSet(new long[]{0x0000000000000002L,0x0000400000020000L});
+    public static final BitSet FOLLOW_DOT_in_pattern_type4449 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_pattern_type4453 = new BitSet(new long[]{0x0000000000000002L,0x0000400000020000L});
+    public static final BitSet FOLLOW_dimension_definition_in_pattern_type4468 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
+    public static final BitSet FOLLOW_ID_in_data_type4496 = new BitSet(new long[]{0x0000000000000002L,0x0000400000020000L});
+    public static final BitSet FOLLOW_DOT_in_data_type4502 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_data_type4506 = new BitSet(new long[]{0x0000000000000002L,0x0000400000020000L});
+    public static final BitSet FOLLOW_dimension_definition_in_data_type4511 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_dimension_definition4540 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dimension_definition4547 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_element_in_accessor_path4561 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_DOT_in_accessor_path4565 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_accessor_element_in_accessor_path4569 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_ID_in_accessor_element4593 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
+    public static final BitSet FOLLOW_square_chunk_in_accessor_element4599 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
+    public static final BitSet FOLLOW_rhs_chunk_data_in_rhs_chunk4628 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_THEN_in_rhs_chunk_data4647 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_set_in_rhs_chunk_data4660 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_END_in_rhs_chunk_data4673 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_rhs_chunk_data4679 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk4698 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_curly_chunk_data4721 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_set_in_curly_chunk_data4733 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk_data4749 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_curly_chunk_data4760 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk4781 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk_data4805 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_set_in_paren_chunk_data4817 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk_data4833 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk_data4844 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk4865 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk_data4888 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_set_in_square_chunk_data4900 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk_data4915 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk_data4926 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key4950 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_lock_on_active_key4954 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key4958 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_lock_on_active_key4962 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key4966 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_date_effective_key4998 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_date_effective_key5002 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_date_effective_key5006 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_date_expires_key5038 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_date_expires_key5042 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_date_expires_key5046 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_no_loop_key5078 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_no_loop_key5082 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_no_loop_key5086 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_auto_focus_key5118 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_auto_focus_key5122 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_auto_focus_key5126 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_activation_group_key5158 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_activation_group_key5162 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_activation_group_key5166 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_agenda_group_key5198 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_agenda_group_key5202 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_agenda_group_key5206 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_ruleflow_group_key5238 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_ruleflow_group_key5242 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_ruleflow_group_key5246 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_entry_point_key5278 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_entry_point_key5282 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_entry_point_key5286 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_duration_key5315 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_package_key5342 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_import_key5369 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_dialect_key5396 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_salience_key5423 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_enabled_key5450 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_attributes_key5477 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_rule_key5504 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_extend_key5531 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_template_key5558 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_query_key5585 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_declare_key5612 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_function_key5639 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_global_key5666 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_eval_key5693 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_not_key5720 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_in_key5747 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_or_key5774 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_and_key5801 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_exists_key5828 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_forall_key5855 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_action_key5882 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_reverse_key5909 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_result_key5936 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred1_DRL2033 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_or_key_in_synpred1_DRL2035 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_or_key_in_synpred2_DRL2102 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_synpred2_DRL2104 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred3_DRL2161 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_and_key_in_synpred3_DRL2163 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_key_in_synpred4_DRL2231 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_synpred4_DRL2233 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SEMICOLON_in_synpred5_DRL2356 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred6_DRL2393 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_or_key_in_synpred6_DRL2396 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_key_in_synpred6_DRL2398 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred7_DRL2521 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_or_key_in_synpred7_DRL2524 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_key_in_synpred7_DRL2526 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred8_DRL3355 = new BitSet(new long[]{0x0000000000000002L});
 
-}
+}
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java	2008-11-25 18:08:44 UTC (rev 24099)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 src/main/resources/org/drools/lang/DescrBuilderTree.g 2008-11-13 19:22:18
+// $ANTLR 3.1.1 /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g 2008-11-24 14:42:07
 
 	package org.drools.lang;
 
@@ -36,144 +36,147 @@
 
 public class DescrBuilderTree 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_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", "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", "TILDE", "FLOAT", "NULL", "LEFT_SQUARE", "RIGHT_SQUARE", "THEN", "LEFT_CURLY", "RIGHT_CURLY", "MISC", "EOL", "WS", "EscapeSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "GRAVE_ACCENT", "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_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", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT"
     };
-    public static final int COMMA=90;
+    public static final int COMMA=86;
     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=65;
-    public static final int END=87;
-    public static final int HexDigit=124;
+    public static final int END=83;
+    public static final int HexDigit=119;
     public static final int VK_ATTRIBUTES=57;
     public static final int VT_EXPRESSION_CHAIN=30;
-    public static final int MISC=120;
+    public static final int MISC=115;
     public static final int VT_AND_PREFIX=23;
     public static final int VK_QUERY=63;
-    public static final int THEN=117;
+    public static final int THEN=112;
     public static final int VK_AUTO_FOCUS=49;
-    public static final int TILDE=112;
-    public static final int DOT=85;
+    public static final int DOT=81;
     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=115;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=128;
+    public static final int LEFT_SQUARE=110;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=123;
     public static final int VT_DATA_TYPE=38;
-    public static final int VK_MATCHES=69;
     public static final int VT_FACT=6;
-    public static final int LEFT_CURLY=118;
-    public static final int AT=92;
-    public static final int LEFT_PAREN=89;
-    public static final int DOUBLE_AMPER=99;
+    public static final int LEFT_CURLY=113;
+    public static final int AT=88;
+    public static final int LEFT_PAREN=85;
+    public static final int DOUBLE_AMPER=95;
     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=95;
+    public static final int WHEN=91;
     public static final int VT_ENTRYPOINT_ID=13;
-    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=122;
-    public static final int OVER=101;
-    public static final int STRING=88;
-    public static final int VK_AND=77;
+    public static final int WS=117;
+    public static final int OVER=97;
+    public static final int STRING=84;
+    public static final int VK_AND=72;
     public static final int VT_ACCESSOR_ELEMENT=37;
-    public static final int VT_ACCUMULATE_INIT_CLAUSE=27;
     public static final int VK_GLOBAL=66;
-    public static final int VK_REVERSE=81;
+    public static final int VT_ACCUMULATE_INIT_CLAUSE=27;
+    public static final int VK_REVERSE=76;
     public static final int VT_BEHAVIOR=21;
-    public static final int GRAVE_ACCENT=127;
+    public static final int GRAVE_ACCENT=122;
     public static final int VK_DURATION=53;
     public static final int VT_SQUARE_CHUNK=19;
-    public static final int VK_FORALL=79;
+    public static final int VK_FORALL=74;
     public static final int VT_PAREN_CHUNK=20;
     public static final int VT_COMPILATION_UNIT=4;
-    public static final int COLLECT=104;
+    public static final int COLLECT=100;
     public static final int VK_ENABLED=56;
-    public static final int EQUALS=94;
-    public static final int VK_RESULT=82;
-    public static final int UnicodeEscape=125;
+    public static final int VK_RESULT=77;
+    public static final int EQUALS=90;
+    public static final int UnicodeEscape=120;
     public static final int VK_PACKAGE=61;
     public static final int VT_RULE_ID=12;
-    public static final int EQUAL=106;
+    public static final int EQUAL=102;
     public static final int VK_NO_LOOP=48;
-    public static final int SEMICOLON=83;
+    public static final int SEMICOLON=79;
     public static final int VK_TEMPLATE=62;
     public static final int VT_AND_IMPLICIT=22;
-    public static final int NULL=114;
-    public static final int COLON=93;
-    public static final int MULTI_LINE_COMMENT=130;
+    public static final int NULL=109;
+    public static final int COLON=89;
+    public static final int MULTI_LINE_COMMENT=125;
     public static final int VT_RULE_ATTRIBUTES=16;
-    public static final int RIGHT_SQUARE=116;
+    public static final int RIGHT_SQUARE=111;
     public static final int VK_AGENDA_GROUP=51;
     public static final int VT_FACT_OR=33;
-    public static final int VK_NOT=74;
+    public static final int VK_NOT=69;
     public static final int VK_DATE_EXPIRES=46;
-    public static final int ARROW=105;
-    public static final int FLOAT=113;
-    public static final int INIT=103;
+    public static final int ARROW=101;
+    public static final int FLOAT=108;
+    public static final int INIT=99;
     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=98;
-    public static final int LESS=109;
+    public static final int DOUBLE_PIPE=94;
+    public static final int LESS=105;
     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=123;
-    public static final int VK_EXISTS=78;
-    public static final int INT=97;
+    public static final int EscapeSequence=118;
+    public static final int VK_EXISTS=73;
+    public static final int INT=93;
     public static final int VT_BIND_FIELD=34;
     public static final int VK_RULE=58;
     public static final int VK_EVAL=67;
-    public static final int GREATER=107;
+    public static final int GREATER=103;
     public static final int VT_FACT_BINDING=32;
-    public static final int ID=84;
-    public static final int FROM=100;
-    public static final int NOT_EQUAL=111;
-    public static final int RIGHT_CURLY=119;
-    public static final int VK_ENTRY_POINT=73;
+    public static final int ID=80;
+    public static final int FROM=96;
+    public static final int NOT_EQUAL=107;
+    public static final int RIGHT_CURLY=114;
+    public static final int VK_OPERATOR=78;
+    public static final int VK_ENTRY_POINT=68;
     public static final int VT_PARAM_LIST=44;
     public static final int VT_AND_INFIX=25;
-    public static final int BOOL=96;
+    public static final int BOOL=92;
     public static final int VT_FROM_SOURCE=29;
-    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=75;
+    public static final int VK_IN=70;
     public static final int VT_RHS_CHUNK=17;
-    public static final int VK_MEMBEROF=72;
-    public static final int GREATER_EQUAL=108;
+    public static final int GREATER_EQUAL=104;
     public static final int VT_OR_INFIX=26;
-    public static final int DOT_STAR=86;
-    public static final int VK_OR=76;
+    public static final int DOT_STAR=82;
+    public static final int VK_OR=71;
     public static final int VT_GLOBAL_ID=42;
-    public static final int LESS_EQUAL=110;
-    public static final int ACCUMULATE=102;
+    public static final int LESS_EQUAL=106;
+    public static final int ACCUMULATE=98;
     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=121;
+    public static final int EOL=116;
     public static final int VK_ACTIVATION_GROUP=50;
-    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=91;
+    public static final int OctalEscape=121;
+    public static final int VK_ACTION=75;
+    public static final int RIGHT_PAREN=87;
     public static final int VT_TEMPLATE_ID=10;
     public static final int VK_DECLARE=64;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=129;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=124;
 
+    // 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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g"; }
 
 
     	DescrFactory factory = new DescrFactory();
@@ -185,12 +188,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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:49:2: ( ^( VT_COMPILATION_UNIT package_statement ( statement )* ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/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); 
 
@@ -198,9 +201,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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:49:44: ( statement )*
                 loop1:
                 do {
                     int alt1=2;
@@ -213,13 +217,14 @@
 
                     switch (alt1) {
                 	case 1 :
-                	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:49:44: statement
+                	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:49:44: statement
                 	    {
                 	    pushFollow(FOLLOW_statement_in_compilation_unit53);
                 	    statement();
-                	    _fsp--;
 
+                	    state._fsp--;
 
+
                 	    }
                 	    break;
 
@@ -243,11 +248,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-trunk/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;
 
@@ -255,7 +260,7 @@
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:53:2: ( ^( VK_PACKAGE packageId= package_id ) | )
+            // /Users/porcelli/Documents/dev/drools-trunk/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);
 
@@ -267,22 +272,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-trunk/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();	
@@ -290,7 +296,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:57:2: 
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:57:2: 
                     {
                     	this.packageDescr = factory.createPackage(null);	
                     		packageName = "";	
@@ -308,11 +314,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-trunk/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;
 
@@ -320,13 +326,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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:62:2: ( ^( VT_PACKAGE_ID (tempList+= ID )+ ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:62:28: (tempList+= ID )+
             int cnt3=0;
             loop3:
             do {
@@ -340,10 +346,9 @@
 
                 switch (alt3) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:62:28: tempList+= ID
+            	    // /Users/porcelli/Documents/dev/drools-trunk/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);
 
@@ -375,11 +380,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-trunk/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;
 
@@ -387,21 +392,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-trunk/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:
@@ -462,107 +467,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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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);	
 
                     }
@@ -578,33 +592,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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:88:2: ( ^(importStart= VK_IMPORT importId= import_name ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/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));	
 
             }
 
@@ -617,34 +631,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-trunk/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-trunk/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-trunk/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));	
 
             }
 
@@ -657,17 +671,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-trunk/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;
@@ -675,13 +689,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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:98:27: (tempList+= ID )+
             int cnt5=0;
             loop5:
             do {
@@ -695,10 +709,9 @@
 
                 switch (alt5) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:98:27: tempList+= ID
+            	    // /Users/porcelli/Documents/dev/drools-trunk/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);
 
@@ -715,7 +728,7 @@
                 cnt5++;
             } while (true);
 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:98:44: (tempDotStar= DOT_STAR )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:98:44: (tempDotStar= DOT_STAR )?
             int alt6=2;
             int LA6_0 = input.LA(1);
 
@@ -724,10 +737,9 @@
             }
             switch (alt6) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:98:44: tempDotStar= DOT_STAR
+                    // /Users/porcelli/Documents/dev/drools-trunk/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;
@@ -750,16 +762,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-trunk/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;
@@ -768,20 +780,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-trunk/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-trunk/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);	
 
@@ -796,16 +807,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-trunk/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;
@@ -817,14 +828,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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:109:26: (dt= data_type )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -833,27 +843,27 @@
             }
             switch (alt7) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:109:26: dt= data_type
+                    // /Users/porcelli/Documents/dev/drools-trunk/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);	
 
@@ -868,16 +878,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-trunk/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;
@@ -890,16 +900,14 @@
         	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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:117:4: (ts= template_slot )+
             int cnt8=0;
             loop8:
             do {
@@ -913,12 +921,13 @@
 
                 switch (alt8) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:117:6: ts= template_slot
+            	    // /Users/porcelli/Documents/dev/drools-trunk/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);
 
             	    }
@@ -933,8 +942,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);	
@@ -950,11 +958,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-trunk/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;
 
@@ -963,19 +971,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-trunk/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-trunk/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);	
 
@@ -990,16 +998,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-trunk/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;
@@ -1011,16 +1019,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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:127:42: (params= parameters )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -1029,13 +1035,14 @@
             }
             switch (alt9) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:127:42: params= parameters
+                    // /Users/porcelli/Documents/dev/drools-trunk/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;
 
@@ -1043,11 +1050,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);	
 
@@ -1062,16 +1069,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-trunk/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;
@@ -1087,16 +1094,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-trunk/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-trunk/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-trunk/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);
 
@@ -1105,13 +1110,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-trunk/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); 
 
@@ -1120,7 +1124,7 @@
 
             }
 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:134:3: (dm= decl_metadata )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:134:3: (dm= decl_metadata )*
             loop11:
             do {
                 int alt11=2;
@@ -1133,12 +1137,13 @@
 
                 switch (alt11) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:134:4: dm= decl_metadata
+            	    // /Users/porcelli/Documents/dev/drools-trunk/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);	
 
             	    }
@@ -1149,7 +1154,7 @@
                 }
             } while (true);
 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:135:6: (ra= rule_attributes )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:135:6: (ra= rule_attributes )?
             int alt12=2;
             int LA12_0 = input.LA(1);
 
@@ -1158,19 +1163,20 @@
             }
             switch (alt12) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:135:6: ra= rule_attributes
+                    // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:136:6: (wn= when_part )?
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -1179,20 +1185,20 @@
             }
             switch (alt13) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:136:6: wn= when_part
+                    // /Users/porcelli/Documents/dev/drools-trunk/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);	
@@ -1208,11 +1214,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-trunk/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;
 
@@ -1220,14 +1226,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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:141:2: ( WHEN lh= lhs_block )
+            // /Users/porcelli/Documents/dev/drools-trunk/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;	
 
             }
@@ -1241,11 +1248,11 @@
         }
         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-trunk/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;
 
@@ -1256,13 +1263,13 @@
         	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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:148:26: ( VK_ATTRIBUTES )?
             int alt14=2;
             int LA14_0 = input.LA(1);
 
@@ -1271,7 +1278,7 @@
             }
             switch (alt14) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:148:26: VK_ATTRIBUTES
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:148:26: VK_ATTRIBUTES
                     {
                     match(input,VK_ATTRIBUTES,FOLLOW_VK_ATTRIBUTES_in_rule_attributes591); 
 
@@ -1280,7 +1287,7 @@
 
             }
 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:148:41: (rl= rule_attribute )+
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:148:41: (rl= rule_attribute )+
             int cnt15=0;
             loop15:
             do {
@@ -1294,12 +1301,13 @@
 
                 switch (alt15) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:148:42: rl= rule_attribute
+            	    // /Users/porcelli/Documents/dev/drools-trunk/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);
 
             	    }
@@ -1328,11 +1336,11 @@
         }
         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-trunk/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;
 
@@ -1343,14 +1351,14 @@
         	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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:154:3: ( ^( VT_PARAM_LIST (p= param_definition )* ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:154:21: (p= param_definition )*
                 loop16:
                 do {
                     int alt16=2;
@@ -1363,12 +1371,13 @@
 
                     switch (alt16) {
                 	case 1 :
-                	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:154:22: p= param_definition
+                	    // /Users/porcelli/Documents/dev/drools-trunk/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);
 
                 	    }
@@ -1394,11 +1403,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-trunk/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;
 
@@ -1408,10 +1417,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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:158:2: ( (dt= data_type )? a= argument )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:158:6: (dt= data_type )?
             int alt17=2;
             int LA17_0 = input.LA(1);
 
@@ -1420,13 +1429,14 @@
             }
             switch (alt17) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:158:6: dt= data_type
+                    // /Users/porcelli/Documents/dev/drools-trunk/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;
 
@@ -1434,8 +1444,9 @@
 
             pushFollow(FOLLOW_argument_in_param_definition653);
             a=argument();
-            _fsp--;
 
+            state._fsp--;
+
             	param = new HashMap<BaseDescr, BaseDescr>();
             		param.put(a, dt);	
 
@@ -1450,11 +1461,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-trunk/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;
 
@@ -1463,12 +1474,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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:164:2: (id= ID ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:164:10: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
             loop18:
             do {
                 int alt18=2;
@@ -1481,11 +1491,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-trunk/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);
 
@@ -1511,11 +1520,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-trunk/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;
 
@@ -1528,15 +1537,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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:172:4: (dm= decl_metadata )*
             loop19:
             do {
                 int alt19=2;
@@ -1549,12 +1557,13 @@
 
                 switch (alt19) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:172:5: dm= decl_metadata
+            	    // /Users/porcelli/Documents/dev/drools-trunk/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);	
 
             	    }
@@ -1565,7 +1574,7 @@
                 }
             } while (true);
 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:173:4: (df= decl_field )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:173:4: (df= decl_field )*
             loop20:
             do {
                 int alt20=2;
@@ -1578,12 +1587,13 @@
 
                 switch (alt20) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:173:5: df= decl_field
+            	    // /Users/porcelli/Documents/dev/drools-trunk/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);	
 
             	    }
@@ -1610,11 +1620,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-trunk/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;
 
@@ -1623,16 +1633,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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:179:2: ( ^( AT att= ID pc= VT_PAREN_CHUNK ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/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);	
@@ -1648,11 +1656,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-trunk/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;
 
@@ -1666,14 +1674,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-trunk/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-trunk/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-trunk/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);
 
@@ -1682,13 +1689,14 @@
             }
             switch (alt21) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:185:16: init= decl_field_initialization
+                    // /Users/porcelli/Documents/dev/drools-trunk/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;
 
@@ -1696,9 +1704,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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:185:57: (dm= decl_metadata )*
             loop22:
             do {
                 int alt22=2;
@@ -1711,12 +1720,13 @@
 
                 switch (alt22) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:185:58: dm= decl_metadata
+            	    // /Users/porcelli/Documents/dev/drools-trunk/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);
 
             	    }
@@ -1742,28 +1752,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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:190:2: ( ^( EQUALS pc= VT_PAREN_CHUNK ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/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();	
 
             }
 
@@ -1776,11 +1785,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-trunk/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;
 
@@ -1788,10 +1797,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-trunk/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-trunk/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-trunk/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:
@@ -1856,20 +1865,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-trunk/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-trunk/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);
 
@@ -1881,24 +1889,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-trunk/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-trunk/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;
@@ -1911,14 +1917,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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:196:31: (value= BOOL )?
                         int alt24=2;
                         int LA24_0 = input.LA(1);
 
@@ -1927,10 +1932,9 @@
                         }
                         switch (alt24) {
                             case 1 :
-                                // src/main/resources/org/drools/lang/DescrBuilderTree.g:196:31: value= BOOL
+                                // /Users/porcelli/Documents/dev/drools-trunk/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;
@@ -1944,56 +1948,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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:200:34: (value= BOOL )?
                         int alt25=2;
                         int LA25_0 = input.LA(1);
 
@@ -2002,10 +1999,9 @@
                         }
                         switch (alt25) {
                             case 1 :
-                                // src/main/resources/org/drools/lang/DescrBuilderTree.g:200:34: value= BOOL
+                                // /Users/porcelli/Documents/dev/drools-trunk/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;
@@ -2019,41 +2015,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-trunk/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-trunk/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-trunk/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-trunk/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);
 
@@ -2065,24 +2056,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-trunk/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-trunk/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;
@@ -2095,28 +2084,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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:205:38: (value= BOOL )?
                         int alt27=2;
                         int LA27_0 = input.LA(1);
 
@@ -2125,10 +2111,9 @@
                         }
                         switch (alt27) {
                             case 1 :
-                                // src/main/resources/org/drools/lang/DescrBuilderTree.g:205:38: value= BOOL
+                                // /Users/porcelli/Documents/dev/drools-trunk/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;
@@ -2142,14 +2127,12 @@
                     }
                     break;
                 case 12 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:206:4: ^(attrName= VK_DIALECT value= STRING )
+                    // /Users/porcelli/Documents/dev/drools-trunk/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); 
 
@@ -2171,29 +2154,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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:213:3: ( ^( VT_AND_IMPLICIT (dt= lhs )* ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:213:23: (dt= lhs )*
                 loop29:
                 do {
                     int alt29=2;
@@ -2206,14 +2189,15 @@
 
                     switch (alt29) {
                 	case 1 :
-                	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:213:24: dt= lhs
+                	    // /Users/porcelli/Documents/dev/drools-trunk/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;
 
@@ -2237,36 +2221,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-trunk/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-trunk/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:
@@ -2321,20 +2305,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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:219:26: (dt= lhs )+
                     int cnt30=0;
                     loop30:
                     do {
@@ -2348,14 +2331,15 @@
 
                         switch (alt30) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:219:27: dt= lhs
+                    	    // /Users/porcelli/Documents/dev/drools-trunk/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;
 
@@ -2375,36 +2359,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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:225:26: (dt= lhs )+
                     int cnt31=0;
                     loop31:
                     do {
@@ -2418,14 +2402,15 @@
 
                         switch (alt31) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:225:27: dt= lhs
+                    	    // /Users/porcelli/Documents/dev/drools-trunk/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;
 
@@ -2445,71 +2430,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-trunk/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-trunk/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-trunk/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-trunk/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);	
@@ -2517,13 +2501,12 @@
                     }
                     break;
                 case 8 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:237:4: ^(start= VK_FORALL (dt= lhs )+ )
+                    // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:237:22: (dt= lhs )+
                     int cnt32=0;
                     loop32:
                     do {
@@ -2537,14 +2520,15 @@
 
                         switch (alt32) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:237:23: dt= lhs
+                    	    // /Users/porcelli/Documents/dev/drools-trunk/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;
 
@@ -2564,32 +2548,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-trunk/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-trunk/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;	
 
                     }
@@ -2605,29 +2592,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-trunk/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-trunk/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:
@@ -2652,60 +2639,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-trunk/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-trunk/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-trunk/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);	
@@ -2713,14 +2699,15 @@
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:254:4: fs= from_source_clause
+                    // /Users/porcelli/Documents/dev/drools-trunk/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;
 
@@ -2734,21 +2721,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-trunk/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-trunk/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);
 
@@ -2760,29 +2747,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-trunk/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-trunk/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;	
 
                     }
@@ -2798,48 +2787,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-trunk/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-trunk/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-trunk/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-trunk/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);
 
@@ -2848,13 +2834,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-trunk/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;
 
@@ -2863,8 +2850,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); 
 
@@ -2872,7 +2858,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));
             		}	
 
             }
@@ -2886,32 +2872,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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:279:2: ( ^(vk= VK_REVERSE pc= VT_PAREN_CHUNK ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/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;
@@ -2928,11 +2912,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-trunk/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;
 
@@ -2940,16 +2924,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-trunk/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-trunk/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);	
@@ -2965,7 +2947,7 @@
         }
         return accumulateDescr;
     }
-    // $ANTLR end accumulate_id_clause
+    // $ANTLR end "accumulate_id_clause"
 
     protected static class from_source_clause_scope {
         AccessorDescr accessorDescr;
@@ -2977,26 +2959,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-trunk/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-trunk/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-trunk/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-trunk/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);
 
@@ -3005,10 +2986,9 @@
             }
             switch (alt37) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:292:30: pc= VT_PAREN_CHUNK
+                    // /Users/porcelli/Documents/dev/drools-trunk/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;
@@ -3017,7 +2997,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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:295:3: ( expression_chain )?
             int alt38=2;
             int LA38_0 = input.LA(1);
 
@@ -3026,13 +3006,14 @@
             }
             switch (alt38) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:295:3: expression_chain
+                    // /Users/porcelli/Documents/dev/drools-trunk/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;
 
@@ -3054,15 +3035,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-trunk/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;
@@ -3071,16 +3052,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-trunk/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-trunk/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-trunk/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);
 
@@ -3089,17 +3068,16 @@
             }
             switch (alt39) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:300:40: sc= VT_SQUARE_CHUNK
+                    // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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);
 
@@ -3108,10 +3086,9 @@
             }
             switch (alt40) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:300:60: pc= VT_PAREN_CHUNK
+                    // /Users/porcelli/Documents/dev/drools-trunk/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;
@@ -3120,7 +3097,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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:303:3: ( expression_chain )?
             int alt41=2;
             int LA41_0 = input.LA(1);
 
@@ -3129,13 +3106,14 @@
             }
             switch (alt41) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:303:3: expression_chain
+                    // /Users/porcelli/Documents/dev/drools-trunk/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;
 
@@ -3155,33 +3133,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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:307:39: (oc= over_clause )?
             int alt42=2;
             int LA42_0 = input.LA(1);
 
@@ -3190,19 +3169,20 @@
             }
             switch (alt42) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:307:39: oc= over_clause
+                    // /Users/porcelli/Documents/dev/drools-trunk/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);	
 
             }
 
@@ -3215,11 +3195,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-trunk/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;
 
@@ -3228,13 +3208,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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:313:2: ( ^( OVER (oe= over_element )+ ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:313:11: (oe= over_element )+
             int cnt43=0;
             loop43:
             do {
@@ -3248,12 +3228,13 @@
 
                 switch (alt43) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:313:12: oe= over_element
+            	    // /Users/porcelli/Documents/dev/drools-trunk/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);
 
             	    }
@@ -3282,11 +3263,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-trunk/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;
 
@@ -3294,17 +3275,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-trunk/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-trunk/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);	
@@ -3320,16 +3299,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= ID (n!
 ot= 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-trunk/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_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 rig!
 ht= 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;
@@ -3345,13 +3324,13 @@
         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;
 
@@ -3362,188 +3341,165 @@
         	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= ID (not= VK_NOT )? (param= VT_SQUARE_CHUN!
 K )? 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;
+            // /Users/porcelli/Documents/dev/drools-trunk/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_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_ACCESS!
 OR_PATH (ae= accessor_element )+ ) | s= STRING | i= INT | f= FLOAT | b= BOOL | n= NULL | pc= VT_PAREN_CHUNK )
+            int alt51=23;
             switch ( input.LA(1) ) {
             case VT_FACT:
                 {
-                alt56=1;
+                alt51=1;
                 }
                 break;
             case VT_FACT_BINDING:
                 {
-                alt56=2;
+                alt51=2;
                 }
                 break;
             case VT_FACT_OR:
                 {
-                alt56=3;
+                alt51=3;
                 }
                 break;
             case VT_FIELD:
                 {
-                alt56=4;
+                alt51=4;
                 }
                 break;
             case VT_BIND_FIELD:
                 {
-                alt56=5;
+                alt51=5;
                 }
                 break;
             case VK_EVAL:
                 {
-                alt56=6;
+                alt51=6;
                 }
                 break;
             case EQUAL:
                 {
-                alt56=7;
+                alt51=7;
                 }
                 break;
             case NOT_EQUAL:
                 {
-                alt56=8;
+                alt51=8;
                 }
                 break;
             case GREATER:
                 {
-                alt56=9;
+                alt51=9;
                 }
                 break;
             case GREATER_EQUAL:
                 {
-                alt56=10;
+                alt51=10;
                 }
                 break;
             case LESS:
                 {
-                alt56=11;
+                alt51=11;
                 }
                 break;
             case LESS_EQUAL:
                 {
-                alt56=12;
+                alt51=12;
                 }
                 break;
-            case VK_CONTAINS:
+            case VK_OPERATOR:
                 {
-                alt56=13;
+                alt51=13;
                 }
                 break;
-            case VK_EXCLUDES:
-                {
-                alt56=14;
-                }
-                break;
-            case VK_MATCHES:
-                {
-                alt56=15;
-                }
-                break;
-            case VK_SOUNDSLIKE:
-                {
-                alt56=16;
-                }
-                break;
-            case VK_MEMBEROF:
-                {
-                alt56=17;
-                }
-                break;
-            case ID:
-                {
-                alt56=18;
-                }
-                break;
             case VK_IN:
                 {
-                alt56=19;
+                alt51=14;
                 }
                 break;
             case DOUBLE_PIPE:
                 {
-                alt56=20;
+                alt51=15;
                 }
                 break;
             case DOUBLE_AMPER:
                 {
-                alt56=21;
+                alt51=16;
                 }
                 break;
             case VT_ACCESSOR_PATH:
                 {
-                alt56=22;
+                alt51=17;
                 }
                 break;
             case STRING:
                 {
-                alt56=23;
+                alt51=18;
                 }
                 break;
             case INT:
                 {
-                alt56=24;
+                alt51=19;
                 }
                 break;
             case FLOAT:
                 {
-                alt56=25;
+                alt51=20;
                 }
                 break;
             case BOOL:
                 {
-                alt56=26;
+                alt51=21;
                 }
                 break;
             case NULL:
                 {
-                alt56=27;
+                alt51=22;
                 }
                 break;
             case VT_PAREN_CHUNK:
                 {
-                alt56=28;
+                alt51=23;
                 }
                 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= ID (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("", 51, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt56) {
+            switch (alt51) {
                 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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:324:31: (fe= fact_expression )*
                     loop44:
                     do {
                         int alt44=2;
                         int LA44_0 = input.LA(1);
 
-                        if ( (LA44_0==VT_FACT||LA44_0==VT_PAREN_CHUNK||(LA44_0>=VT_FACT_BINDING && LA44_0<=VT_ACCESSOR_PATH)||(LA44_0>=VK_EVAL && LA44_0<=VK_MEMBEROF)||LA44_0==VK_IN||LA44_0==ID||LA44_0==STRING||(LA44_0>=BOOL && LA44_0<=DOUBLE_AMPER)||(LA44_0>=EQUAL && LA44_0<=NOT_EQUAL)||(LA44_0>=FLOAT && LA44_0<=NULL)) ) {
+                        if ( (LA44_0==VT_FACT||LA44_0==VT_PAREN_CHUNK||(LA44_0>=VT_FACT_BINDING && LA44_0<=VT_ACCESSOR_PATH)||LA44_0==VK_EVAL||LA44_0==VK_IN||LA44_0==VK_OPERATOR||LA44_0==STRING||(LA44_0>=BOOL && LA44_0<=DOUBLE_AMPER)||(LA44_0>=EQUAL && LA44_0<=NULL)) ) {
                             alt44=1;
                         }
 
 
                         switch (alt44) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:324:32: fe= fact_expression
+                    	    // /Users/porcelli/Documents/dev/drools-trunk/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;
 
@@ -3559,70 +3515,73 @@
                     }
                     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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:331:37: (fe= fact_expression )?
                     int alt45=2;
                     int LA45_0 = input.LA(1);
 
-                    if ( (LA45_0==VT_FACT||LA45_0==VT_PAREN_CHUNK||(LA45_0>=VT_FACT_BINDING && LA45_0<=VT_ACCESSOR_PATH)||(LA45_0>=VK_EVAL && LA45_0<=VK_MEMBEROF)||LA45_0==VK_IN||LA45_0==ID||LA45_0==STRING||(LA45_0>=BOOL && LA45_0<=DOUBLE_AMPER)||(LA45_0>=EQUAL && LA45_0<=NOT_EQUAL)||(LA45_0>=FLOAT && LA45_0<=NULL)) ) {
+                    if ( (LA45_0==VT_FACT||LA45_0==VT_PAREN_CHUNK||(LA45_0>=VT_FACT_BINDING && LA45_0<=VT_ACCESSOR_PATH)||LA45_0==VK_EVAL||LA45_0==VK_IN||LA45_0==VK_OPERATOR||LA45_0==STRING||(LA45_0>=BOOL && LA45_0<=DOUBLE_AMPER)||(LA45_0>=EQUAL && LA45_0<=NULL)) ) {
                         alt45=1;
                     }
                     switch (alt45) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:331:37: fe= fact_expression
+                            // /Users/porcelli/Documents/dev/drools-trunk/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;
 
@@ -3631,7 +3590,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);
                     		}	
@@ -3639,31 +3598,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-trunk/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-trunk/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);	
@@ -3671,115 +3629,114 @@
                     }
                     break;
                 case 7 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:343:4: ^(op= EQUAL fe= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:355:4: ^(op= VK_OPERATOR (not= VK_NOT )? (param= VT_SQUARE_CHUNK )? fe= fact_expression )
                     {
-                    op=(DroolsTree)input.LT(1);
-                    match(input,VK_CONTAINS,FOLLOW_VK_CONTAINS_in_fact_expression1905); 
+                    op=(DroolsTree)match(input,VK_OPERATOR,FOLLOW_VK_OPERATOR_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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:355:24: (not= VK_NOT )?
                     int alt46=2;
                     int LA46_0 = input.LA(1);
 
@@ -3788,70 +3745,51 @@
                     }
                     switch (alt46) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:355:24: not= VK_NOT
+                            // /Users/porcelli/Documents/dev/drools-trunk/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;
 
                     }
 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1914);
-                    fe=fact_expression();
-                    _fsp--;
-
-
-                    match(input, Token.UP, null); 
-                    	retval.descr = factory.setupRestriction(op, not, fe.descr);	
-
-                    }
-                    break;
-                case 14 :
-                    // 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); 
-
-                    match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:357:24: (not= VK_NOT )?
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:355:38: (param= VT_SQUARE_CHUNK )?
                     int alt47=2;
                     int LA47_0 = input.LA(1);
 
-                    if ( (LA47_0==VK_NOT) ) {
+                    if ( (LA47_0==VT_SQUARE_CHUNK) ) {
                         alt47=1;
                     }
                     switch (alt47) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:357:24: not= VK_NOT
+                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:355:38: param= VT_SQUARE_CHUNK
                             {
-                            not=(DroolsTree)input.LT(1);
-                            match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1930); 
+                            param=(DroolsTree)match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_fact_expression1914); 
 
                             }
                             break;
 
                     }
 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1935);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression1919);
                     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), param);	
 
                     }
                     break;
-                case 15 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:359:4: ^(op= VK_MATCHES (not= VK_NOT )? fe= fact_expression )
+                case 14 :
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:358:4: ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ )
                     {
-                    op=(DroolsTree)input.LT(1);
-                    match(input,VK_MATCHES,FOLLOW_VK_MATCHES_in_fact_expression1947); 
+                    match(input,VK_IN,FOLLOW_VK_IN_in_fact_expression1930); 
 
                     match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:359:23: (not= VK_NOT )?
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:358:15: (not= VK_NOT )?
                     int alt48=2;
                     int LA48_0 = input.LA(1);
 
@@ -3860,210 +3798,48 @@
                     }
                     switch (alt48) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:359:23: not= VK_NOT
+                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:358:15: 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_expression1934); 
 
                             }
                             break;
 
                     }
 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1956);
-                    fe=fact_expression();
-                    _fsp--;
-
-
-                    match(input, Token.UP, null); 
-                    	retval.descr = factory.setupRestriction(op, not, fe.descr);	
-
-                    }
-                    break;
-                case 16 :
-                    // 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); 
-
-                    match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:361:26: (not= VK_NOT )?
-                    int alt49=2;
-                    int LA49_0 = input.LA(1);
-
-                    if ( (LA49_0==VK_NOT) ) {
-                        alt49=1;
-                    }
-                    switch (alt49) {
-                        case 1 :
-                            // 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); 
-
-                            }
-                            break;
-
-                    }
-
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1977);
-                    fe=fact_expression();
-                    _fsp--;
-
-
-                    match(input, Token.UP, null); 
-                    	retval.descr = factory.setupRestriction(op, not, fe.descr);	
-
-                    }
-                    break;
-                case 17 :
-                    // 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); 
-
-                    match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:363:24: (not= VK_NOT )?
-                    int alt50=2;
-                    int LA50_0 = input.LA(1);
-
-                    if ( (LA50_0==VK_NOT) ) {
-                        alt50=1;
-                    }
-                    switch (alt50) {
-                        case 1 :
-                            // 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); 
-
-                            }
-                            break;
-
-                    }
-
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1998);
-                    fe=fact_expression();
-                    _fsp--;
-
-
-                    match(input, Token.UP, null); 
-                    	retval.descr = factory.setupRestriction(op, not, fe.descr);	
-
-                    }
-                    break;
-                case 18 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:365:4: ^(op= ID (not= VK_NOT )? (param= VT_SQUARE_CHUNK )? fe= fact_expression )
-                    {
-                    op=(DroolsTree)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_fact_expression2010); 
-
-                    match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:365:15: (not= VK_NOT )?
-                    int alt51=2;
-                    int LA51_0 = input.LA(1);
-
-                    if ( (LA51_0==VK_NOT) ) {
-                        alt51=1;
-                    }
-                    switch (alt51) {
-                        case 1 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:365:15: not= VK_NOT
-                            {
-                            not=(DroolsTree)input.LT(1);
-                            match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression2014); 
-
-                            }
-                            break;
-
-                    }
-
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:365:29: (param= VT_SQUARE_CHUNK )?
-                    int alt52=2;
-                    int LA52_0 = input.LA(1);
-
-                    if ( (LA52_0==VT_SQUARE_CHUNK) ) {
-                        alt52=1;
-                    }
-                    switch (alt52) {
-                        case 1 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:365:29: param= VT_SQUARE_CHUNK
-                            {
-                            param=(DroolsTree)input.LT(1);
-                            match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_fact_expression2019); 
-
-                            }
-                            break;
-
-                    }
-
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression2024);
-                    fe=fact_expression();
-                    _fsp--;
-
-
-                    match(input, Token.UP, null); 
-                    	retval.descr = factory.setupRestriction(op, not, fe.descr, param);	
-
-                    }
-                    break;
-                case 19 :
-                    // 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 )?
-                    int alt53=2;
-                    int LA53_0 = input.LA(1);
-
-                    if ( (LA53_0==VK_NOT) ) {
-                        alt53=1;
-                    }
-                    switch (alt53) {
-                        case 1 :
-                            // 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); 
-
-                            }
-                            break;
-
-                    }
-
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:368:24: (fe= fact_expression )+
-                    int cnt54=0;
-                    loop54:
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:358:24: (fe= fact_expression )+
+                    int cnt49=0;
+                    loop49:
                     do {
-                        int alt54=2;
-                        int LA54_0 = input.LA(1);
+                        int alt49=2;
+                        int LA49_0 = input.LA(1);
 
-                        if ( (LA54_0==VT_FACT||LA54_0==VT_PAREN_CHUNK||(LA54_0>=VT_FACT_BINDING && LA54_0<=VT_ACCESSOR_PATH)||(LA54_0>=VK_EVAL && LA54_0<=VK_MEMBEROF)||LA54_0==VK_IN||LA54_0==ID||LA54_0==STRING||(LA54_0>=BOOL && LA54_0<=DOUBLE_AMPER)||(LA54_0>=EQUAL && LA54_0<=NOT_EQUAL)||(LA54_0>=FLOAT && LA54_0<=NULL)) ) {
-                            alt54=1;
+                        if ( (LA49_0==VT_FACT||LA49_0==VT_PAREN_CHUNK||(LA49_0>=VT_FACT_BINDING && LA49_0<=VT_ACCESSOR_PATH)||LA49_0==VK_EVAL||LA49_0==VK_IN||LA49_0==VK_OPERATOR||LA49_0==STRING||(LA49_0>=BOOL && LA49_0<=DOUBLE_AMPER)||(LA49_0>=EQUAL && LA49_0<=NULL)) ) {
+                            alt49=1;
                         }
 
 
-                        switch (alt54) {
+                        switch (alt49) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:368:25: fe= fact_expression
+                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:358:25: fe= fact_expression
                     	    {
-                    	    pushFollow(FOLLOW_fact_expression_in_fact_expression2045);
+                    	    pushFollow(FOLLOW_fact_expression_in_fact_expression1940);
                     	    fe=fact_expression();
-                    	    _fsp--;
 
-                    	    exprList.add(fe.descr);
+                    	    state._fsp--;
 
+                    	    exprList.add((fe!=null?fe.descr:null));
+
                     	    }
                     	    break;
 
                     	default :
-                    	    if ( cnt54 >= 1 ) break loop54;
+                    	    if ( cnt49 >= 1 ) break loop49;
                                 EarlyExitException eee =
-                                    new EarlyExitException(54, input);
+                                    new EarlyExitException(49, input);
                                 throw eee;
                         }
-                        cnt54++;
+                        cnt49++;
                     } while (true);
 
 
@@ -4072,84 +3848,89 @@
 
                     }
                     break;
-                case 20 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:371:4: ^( DOUBLE_PIPE left= fact_expression right= fact_expression )
+                case 15 :
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:361:4: ^( DOUBLE_PIPE left= fact_expression right= fact_expression )
                     {
-                    match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_fact_expression2060); 
+                    match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_fact_expression1955); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression2064);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression1959);
                     left=fact_expression();
-                    _fsp--;
 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression2068);
+                    state._fsp--;
+
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression1963);
                     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 )
+                case 16 :
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:363:4: ^( DOUBLE_AMPER left= fact_expression right= fact_expression )
                     {
-                    match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_fact_expression2078); 
+                    match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_fact_expression1973); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression2082);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression1977);
                     left=fact_expression();
-                    _fsp--;
 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression2086);
+                    state._fsp--;
+
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression1981);
                     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 )+ )
+                case 17 :
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:366:4: ^( VT_ACCESSOR_PATH (ae= accessor_element )+ )
                     {
-                    match(input,VT_ACCESSOR_PATH,FOLLOW_VT_ACCESSOR_PATH_in_fact_expression2097); 
+                    match(input,VT_ACCESSOR_PATH,FOLLOW_VT_ACCESSOR_PATH_in_fact_expression1992); 
 
                     match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:376:23: (ae= accessor_element )+
-                    int cnt55=0;
-                    loop55:
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:366:23: (ae= accessor_element )+
+                    int cnt50=0;
+                    loop50:
                     do {
-                        int alt55=2;
-                        int LA55_0 = input.LA(1);
+                        int alt50=2;
+                        int LA50_0 = input.LA(1);
 
-                        if ( (LA55_0==VT_ACCESSOR_ELEMENT) ) {
-                            alt55=1;
+                        if ( (LA50_0==VT_ACCESSOR_ELEMENT) ) {
+                            alt50=1;
                         }
 
 
-                        switch (alt55) {
+                        switch (alt50) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:376:24: ae= accessor_element
+                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:366:24: ae= accessor_element
                     	    {
-                    	    pushFollow(FOLLOW_accessor_element_in_fact_expression2102);
+                    	    pushFollow(FOLLOW_accessor_element_in_fact_expression1997);
                     	    ae=accessor_element();
-                    	    _fsp--;
 
+                    	    state._fsp--;
+
                     	    exprList.add(ae);
 
                     	    }
                     	    break;
 
                     	default :
-                    	    if ( cnt55 >= 1 ) break loop55;
+                    	    if ( cnt50 >= 1 ) break loop50;
                                 EarlyExitException eee =
-                                    new EarlyExitException(55, input);
+                                    new EarlyExitException(50, input);
                                 throw eee;
                         }
-                        cnt55++;
+                        cnt50++;
                     } while (true);
 
 
@@ -4158,56 +3939,50 @@
 
                     }
                     break;
-                case 23 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:378:4: s= STRING
+                case 18 :
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:368: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_expression2012); 
                     	retval.descr = factory.createStringLiteralRestriction(s);	
 
                     }
                     break;
-                case 24 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:380:4: i= INT
+                case 19 :
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:370: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_expression2022); 
                     	retval.descr = factory.createIntLiteralRestriction(i);	
 
                     }
                     break;
-                case 25 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:382:4: f= FLOAT
+                case 20 :
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:372: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_expression2032); 
                     	retval.descr = factory.createFloatLiteralRestriction(f);	
 
                     }
                     break;
-                case 26 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:384:4: b= BOOL
+                case 21 :
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:374: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_expression2042); 
                     	retval.descr = factory.createBoolLiteralRestriction(b);	
 
                     }
                     break;
-                case 27 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:386:4: n= NULL
+                case 22 :
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:376: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_expression2052); 
                     	retval.descr = factory.createNullLiteralRestriction(n);	
 
                     }
                     break;
-                case 28 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:388:4: pc= VT_PAREN_CHUNK
+                case 23 :
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:378: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_expression2062); 
                     	retval.descr = factory.createReturnValue(pc);	
 
                     }
@@ -4223,11 +3998,11 @@
         }
         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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:382:1: field_element returns [FieldConstraintDescr element] : ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) ;
     public final FieldConstraintDescr field_element() throws RecognitionException {
         FieldConstraintDescr element = null;
 
@@ -4238,44 +4013,45 @@
         	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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:385:3: ( ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:385:5: ^( VT_ACCESSOR_PATH (ae= accessor_element )+ )
             {
-            match(input,VT_ACCESSOR_PATH,FOLLOW_VT_ACCESSOR_PATH_in_field_element2189); 
+            match(input,VT_ACCESSOR_PATH,FOLLOW_VT_ACCESSOR_PATH_in_field_element2084); 
 
             match(input, Token.DOWN, null); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:395:24: (ae= accessor_element )+
-            int cnt57=0;
-            loop57:
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:385:24: (ae= accessor_element )+
+            int cnt52=0;
+            loop52:
             do {
-                int alt57=2;
-                int LA57_0 = input.LA(1);
+                int alt52=2;
+                int LA52_0 = input.LA(1);
 
-                if ( (LA57_0==VT_ACCESSOR_ELEMENT) ) {
-                    alt57=1;
+                if ( (LA52_0==VT_ACCESSOR_ELEMENT) ) {
+                    alt52=1;
                 }
 
 
-                switch (alt57) {
+                switch (alt52) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:395:25: ae= accessor_element
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:385:25: ae= accessor_element
             	    {
-            	    pushFollow(FOLLOW_accessor_element_in_field_element2194);
+            	    pushFollow(FOLLOW_accessor_element_in_field_element2089);
             	    ae=accessor_element();
-            	    _fsp--;
 
+            	    state._fsp--;
+
             	    aeList.add(ae);
 
             	    }
             	    break;
 
             	default :
-            	    if ( cnt57 >= 1 ) break loop57;
+            	    if ( cnt52 >= 1 ) break loop52;
                         EarlyExitException eee =
-                            new EarlyExitException(57, input);
+                            new EarlyExitException(52, input);
                         throw eee;
                 }
-                cnt57++;
+                cnt52++;
             } while (true);
 
 
@@ -4293,11 +4069,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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:389: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;
 
@@ -4306,31 +4082,29 @@
         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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:390:2: ( ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:390:4: ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* )
             {
-            match(input,VT_ACCESSOR_ELEMENT,FOLLOW_VT_ACCESSOR_ELEMENT_in_accessor_element2218); 
+            match(input,VT_ACCESSOR_ELEMENT,FOLLOW_VT_ACCESSOR_ELEMENT_in_accessor_element2113); 
 
             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 )*
-            loop58:
+            id=(DroolsTree)match(input,ID,FOLLOW_ID_in_accessor_element2117); 
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:390:34: (sc+= VT_SQUARE_CHUNK )*
+            loop53:
             do {
-                int alt58=2;
-                int LA58_0 = input.LA(1);
+                int alt53=2;
+                int LA53_0 = input.LA(1);
 
-                if ( (LA58_0==VT_SQUARE_CHUNK) ) {
-                    alt58=1;
+                if ( (LA53_0==VT_SQUARE_CHUNK) ) {
+                    alt53=1;
                 }
 
 
-                switch (alt58) {
+                switch (alt53) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:400:34: sc+= VT_SQUARE_CHUNK
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:390: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_element2121); 
             	    if (list_sc==null) list_sc=new ArrayList();
             	    list_sc.add(sc);
 
@@ -4339,7 +4113,7 @@
             	    break;
 
             	default :
-            	    break loop58;
+            	    break loop53;
                 }
             } while (true);
 
@@ -4358,11 +4132,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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:394: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;
 
@@ -4372,30 +4146,29 @@
         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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:395:2: ( ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:395: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,VT_PATTERN_TYPE,FOLLOW_VT_PATTERN_TYPE_in_pattern_type2142); 
 
             match(input, Token.DOWN, null); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:405:28: (idList+= ID )+
-            int cnt59=0;
-            loop59:
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:395:28: (idList+= ID )+
+            int cnt54=0;
+            loop54:
             do {
-                int alt59=2;
-                int LA59_0 = input.LA(1);
+                int alt54=2;
+                int LA54_0 = input.LA(1);
 
-                if ( (LA59_0==ID) ) {
-                    alt59=1;
+                if ( (LA54_0==ID) ) {
+                    alt54=1;
                 }
 
 
-                switch (alt59) {
+                switch (alt54) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:405:28: idList+= ID
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:395: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_type2146); 
             	    if (list_idList==null) list_idList=new ArrayList();
             	    list_idList.add(idList);
 
@@ -4404,32 +4177,31 @@
             	    break;
 
             	default :
-            	    if ( cnt59 >= 1 ) break loop59;
+            	    if ( cnt54 >= 1 ) break loop54;
                         EarlyExitException eee =
-                            new EarlyExitException(59, input);
+                            new EarlyExitException(54, input);
                         throw eee;
                 }
-                cnt59++;
+                cnt54++;
             } while (true);
 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:405:34: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
-            loop60:
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:395:34: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
+            loop55:
             do {
-                int alt60=2;
-                int LA60_0 = input.LA(1);
+                int alt55=2;
+                int LA55_0 = input.LA(1);
 
-                if ( (LA60_0==LEFT_SQUARE) ) {
-                    alt60=1;
+                if ( (LA55_0==LEFT_SQUARE) ) {
+                    alt55=1;
                 }
 
 
-                switch (alt60) {
+                switch (alt55) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:405:35: LEFT_SQUARE rightList+= RIGHT_SQUARE
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:395: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); 
+            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_pattern_type2150); 
+            	    rightList=(DroolsTree)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_pattern_type2154); 
             	    if (list_rightList==null) list_rightList=new ArrayList();
             	    list_rightList.add(rightList);
 
@@ -4438,7 +4210,7 @@
             	    break;
 
             	default :
-            	    break loop60;
+            	    break loop55;
                 }
             } while (true);
 
@@ -4457,11 +4229,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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:399: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;
 
@@ -4471,30 +4243,29 @@
         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-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:2: ( ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400: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,VT_DATA_TYPE,FOLLOW_VT_DATA_TYPE_in_data_type2176); 
 
             match(input, Token.DOWN, null); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:410:25: (idList+= ID )+
-            int cnt61=0;
-            loop61:
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:25: (idList+= ID )+
+            int cnt56=0;
+            loop56:
             do {
-                int alt61=2;
-                int LA61_0 = input.LA(1);
+                int alt56=2;
+                int LA56_0 = input.LA(1);
 
-                if ( (LA61_0==ID) ) {
-                    alt61=1;
+                if ( (LA56_0==ID) ) {
+                    alt56=1;
                 }
 
 
-                switch (alt61) {
+                switch (alt56) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:410:25: idList+= ID
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400: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_type2180); 
             	    if (list_idList==null) list_idList=new ArrayList();
             	    list_idList.add(idList);
 
@@ -4503,32 +4274,31 @@
             	    break;
 
             	default :
-            	    if ( cnt61 >= 1 ) break loop61;
+            	    if ( cnt56 >= 1 ) break loop56;
                         EarlyExitException eee =
-                            new EarlyExitException(61, input);
+                            new EarlyExitException(56, input);
                         throw eee;
                 }
-                cnt61++;
+                cnt56++;
             } while (true);
 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:410:31: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
-            loop62:
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:31: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
+            loop57:
             do {
-                int alt62=2;
-                int LA62_0 = input.LA(1);
+                int alt57=2;
+                int LA57_0 = input.LA(1);
 
-                if ( (LA62_0==LEFT_SQUARE) ) {
-                    alt62=1;
+                if ( (LA57_0==LEFT_SQUARE) ) {
+                    alt57=1;
                 }
 
 
-                switch (alt62) {
+                switch (alt57) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:410:32: LEFT_SQUARE rightList+= RIGHT_SQUARE
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400: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); 
+            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_data_type2184); 
+            	    rightList=(DroolsTree)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_data_type2188); 
             	    if (list_rightList==null) list_rightList=new ArrayList();
             	    list_rightList.add(rightList);
 
@@ -4537,7 +4307,7 @@
             	    break;
 
             	default :
-            	    break loop62;
+            	    break loop57;
                 }
             } while (true);
 
@@ -4556,9 +4326,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});
@@ -4567,7 +4339,7 @@
     public static final BitSet FOLLOW_VK_PACKAGE_in_package_statement71 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_package_id_in_package_statement75 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_PACKAGE_ID_in_package_id102 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_package_id106 = new BitSet(new long[]{0x0000000000000008L,0x0000000000100000L});
+    public static final BitSet FOLLOW_ID_in_package_id106 = new BitSet(new long[]{0x0000000000000008L,0x0000000000010000L});
     public static final BitSet FOLLOW_rule_attribute_in_statement124 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_function_import_statement_in_statement134 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_import_statement_in_statement144 = new BitSet(new long[]{0x0000000000000002L});
@@ -4583,7 +4355,7 @@
     public static final BitSet FOLLOW_VK_FUNCTION_in_function_import_statement254 = new BitSet(new long[]{0x0000020000000000L});
     public static final BitSet FOLLOW_import_name_in_function_import_statement258 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_IMPORT_ID_in_import_name277 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_import_name281 = new BitSet(new long[]{0x0000000000000008L,0x0000000000500000L});
+    public static final BitSet FOLLOW_ID_in_import_name281 = new BitSet(new long[]{0x0000000000000008L,0x0000000000050000L});
     public static final BitSet FOLLOW_DOT_STAR_in_import_name286 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_GLOBAL_in_global309 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_data_type_in_global313 = new BitSet(new long[]{0x0000040000000000L});
@@ -4595,48 +4367,48 @@
     public static final BitSet FOLLOW_VT_CURLY_CHUNK_in_function356 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_TEMPLATE_in_template381 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_TEMPLATE_ID_in_template385 = new BitSet(new long[]{0x0000000000008000L});
-    public static final BitSet FOLLOW_template_slot_in_template394 = new BitSet(new long[]{0x0000000000008000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_template_slot_in_template394 = new BitSet(new long[]{0x0000000000008000L,0x0000000000080000L});
     public static final BitSet FOLLOW_END_in_template402 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_SLOT_in_template_slot422 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_data_type_in_template_slot426 = new BitSet(new long[]{0x0000000000004000L});
     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_lhs_block_in_query465 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    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,0x0000000000080000L});
     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});
-    public static final BitSet FOLLOW_VT_RULE_ID_in_rule500 = new BitSet(new long[]{0x0800000000030000L,0x0000000090000000L});
+    public static final BitSet FOLLOW_VT_RULE_ID_in_rule500 = new BitSet(new long[]{0x0800000000030000L,0x0000000009000000L});
     public static final BitSet FOLLOW_VK_EXTEND_in_rule505 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_RULE_ID_in_rule509 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_decl_metadata_in_rule519 = new BitSet(new long[]{0x0000000000030000L,0x0000000090000000L});
-    public static final BitSet FOLLOW_rule_attributes_in_rule530 = new BitSet(new long[]{0x0000000000020000L,0x0000000080000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_rule519 = new BitSet(new long[]{0x0000000000030000L,0x0000000009000000L});
+    public static final BitSet FOLLOW_rule_attributes_in_rule530 = new BitSet(new long[]{0x0000000000020000L,0x0000000008000000L});
     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,0x0000000000100000L});
-    public static final BitSet FOLLOW_data_type_in_param_definition648 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+    public static final BitSet FOLLOW_param_definition_in_parameters626 = new BitSet(new long[]{0x0000004000000008L,0x0000000000010000L});
+    public static final BitSet FOLLOW_data_type_in_param_definition648 = new BitSet(new long[]{0x0000004000000008L,0x0000000000010000L});
     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});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_argument680 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
+    public static final BitSet FOLLOW_ID_in_argument673 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_argument676 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_argument680 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
     public static final BitSet FOLLOW_VK_DECLARE_in_type_declaration706 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_TYPE_DECLARE_ID_in_type_declaration710 = new BitSet(new long[]{0x0000000000000000L,0x0000000010900000L});
-    public static final BitSet FOLLOW_decl_metadata_in_type_declaration719 = new BitSet(new long[]{0x0000000000000000L,0x0000000010900000L});
-    public static final BitSet FOLLOW_decl_field_in_type_declaration732 = new BitSet(new long[]{0x0000000000000000L,0x0000000000900000L});
+    public static final BitSet FOLLOW_VT_TYPE_DECLARE_ID_in_type_declaration710 = new BitSet(new long[]{0x0000000000000000L,0x0000000001090000L});
+    public static final BitSet FOLLOW_decl_metadata_in_type_declaration719 = new BitSet(new long[]{0x0000000000000000L,0x0000000001090000L});
+    public static final BitSet FOLLOW_decl_field_in_type_declaration732 = new BitSet(new long[]{0x0000000000000000L,0x0000000000090000L});
     public static final BitSet FOLLOW_END_in_type_declaration738 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_AT_in_decl_metadata763 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_ID_in_decl_metadata767 = new BitSet(new long[]{0x0000000000100000L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_decl_metadata771 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_ID_in_decl_field798 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_decl_field_initialization_in_decl_field802 = new BitSet(new long[]{0x0000004000000000L});
-    public static final BitSet FOLLOW_data_type_in_decl_field807 = new BitSet(new long[]{0x0000000000000008L,0x0000000010000000L});
-    public static final BitSet FOLLOW_decl_metadata_in_decl_field812 = new BitSet(new long[]{0x0000000000000008L,0x0000000010000000L});
+    public static final BitSet FOLLOW_data_type_in_decl_field807 = new BitSet(new long[]{0x0000000000000008L,0x0000000001000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_decl_field812 = new BitSet(new long[]{0x0000000000000008L,0x0000000001000000L});
     public static final BitSet FOLLOW_EQUALS_in_decl_field_initialization839 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_decl_field_initialization843 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_SALIENCE_in_rule_attribute866 = new BitSet(new long[]{0x0000000000000004L});
@@ -4666,16 +4438,16 @@
     public static final BitSet FOLLOW_VK_DIALECT_in_rule_attribute1038 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_STRING_in_rule_attribute1042 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_AND_IMPLICIT_in_lhs_block1067 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs_block1072 = new BitSet(new long[]{0x0000000087800008L,0x000000100000C408L});
+    public static final BitSet FOLLOW_lhs_in_lhs_block1072 = new BitSet(new long[]{0x0000000087800008L,0x0000000100000628L});
     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,0x000000100000C408L});
+    public static final BitSet FOLLOW_lhs_in_lhs1103 = new BitSet(new long[]{0x0000000087800008L,0x0000000100000628L});
     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,0x000000100000C408L});
+    public static final BitSet FOLLOW_lhs_in_lhs1123 = new BitSet(new long[]{0x0000000087800008L,0x0000000100000628L});
     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,0x000000100000C408L});
+    public static final BitSet FOLLOW_lhs_in_lhs1144 = new BitSet(new long[]{0x0000000087800008L,0x0000000100000628L});
     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,0x000000100000C408L});
+    public static final BitSet FOLLOW_lhs_in_lhs1164 = new BitSet(new long[]{0x0000000087800008L,0x0000000100000628L});
     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});
@@ -4684,9 +4456,9 @@
     public static final BitSet FOLLOW_VK_EVAL_in_lhs1212 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_lhs1216 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_FORALL_in_lhs1228 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1233 = new BitSet(new long[]{0x0000000087800008L,0x000000100000C408L});
+    public static final BitSet FOLLOW_lhs_in_lhs1233 = new BitSet(new long[]{0x0000000087800008L,0x0000000100000628L});
     public static final BitSet FOLLOW_FROM_in_lhs1247 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs1251 = new BitSet(new long[]{0x0000000020000000L,0x0000014000000200L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs1251 = new BitSet(new long[]{0x0000000020000000L,0x0000001400000010L});
     public static final BitSet FOLLOW_from_elements_in_lhs1255 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_lhs_pattern_in_lhs1266 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_ACCUMULATE_in_from_elements1287 = new BitSet(new long[]{0x0000000000000004L});
@@ -4704,7 +4476,7 @@
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1413 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_ACTION_in_accumulate_init_clause1421 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1425 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_accumulate_init_reverse_clause_in_accumulate_init_clause1434 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_accumulate_init_reverse_clause_in_accumulate_init_clause1434 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
     public static final BitSet FOLLOW_VK_RESULT_in_accumulate_init_clause1441 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1445 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_REVERSE_in_accumulate_init_reverse_clause1468 = new BitSet(new long[]{0x0000000000000004L});
@@ -4727,23 +4499,23 @@
     public static final BitSet FOLLOW_OVER_in_over_clause1633 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_over_element_in_over_clause1638 = new BitSet(new long[]{0x0000000000200008L});
     public static final BitSet FOLLOW_VT_BEHAVIOR_in_over_element1659 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_over_element1661 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+    public static final BitSet FOLLOW_ID_in_over_element1661 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
     public static final BitSet FOLLOW_ID_in_over_element1665 = new BitSet(new long[]{0x0000000000100000L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_over_element1669 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_FACT_in_fact_expression1692 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_pattern_type_in_fact_expression1696 = new BitSet(new long[]{0x0000001F00100048L,0x0006FC0F011009F8L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1701 = new BitSet(new long[]{0x0000001F00100048L,0x0006FC0F011009F8L});
+    public static final BitSet FOLLOW_pattern_type_in_fact_expression1696 = new BitSet(new long[]{0x0000001F00100048L,0x00003FC0F0104048L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1701 = new BitSet(new long[]{0x0000001F00100048L,0x00003FC0F0104048L});
     public static final BitSet FOLLOW_VT_FACT_BINDING_in_fact_expression1715 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression1719 = new BitSet(new long[]{0x0000001F00100040L,0x0006FC0F011009F8L});
+    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression1719 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC0F0104048L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1723 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_FACT_OR_in_fact_expression1735 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1739 = new BitSet(new long[]{0x0000001F00100040L,0x0006FC0F011009F8L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1739 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC0F0104048L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1743 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_FIELD_in_fact_expression1754 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_field_element_in_fact_expression1758 = new BitSet(new long[]{0x0000001F00100048L,0x0006FC0F011009F8L});
+    public static final BitSet FOLLOW_field_element_in_fact_expression1758 = new BitSet(new long[]{0x0000001F00100048L,0x00003FC0F0104048L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1762 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_BIND_FIELD_in_fact_expression1773 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression1777 = new BitSet(new long[]{0x0000001F00100040L,0x0006FC0F011009F8L});
+    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression1777 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC0F0104048L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1781 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_EVAL_in_fact_expression1792 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_fact_expression1796 = new BitSet(new long[]{0x0000000000000008L});
@@ -4759,54 +4531,39 @@
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1877 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_LESS_EQUAL_in_fact_expression1889 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1893 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_CONTAINS_in_fact_expression1905 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1909 = new BitSet(new long[]{0x0000001F00100040L,0x0006FC0F011009F8L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1914 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_EXCLUDES_in_fact_expression1926 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1930 = new BitSet(new long[]{0x0000001F00100040L,0x0006FC0F011009F8L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1935 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_MATCHES_in_fact_expression1947 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1951 = new BitSet(new long[]{0x0000001F00100040L,0x0006FC0F011009F8L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1956 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_SOUNDSLIKE_in_fact_expression1968 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1972 = new BitSet(new long[]{0x0000001F00100040L,0x0006FC0F011009F8L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1977 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_MEMBEROF_in_fact_expression1989 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1993 = new BitSet(new long[]{0x0000001F00100040L,0x0006FC0F011009F8L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1998 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_ID_in_fact_expression2010 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression2014 = new BitSet(new long[]{0x0000001F00180040L,0x0006FC0F011009F8L});
-    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_fact_expression2019 = new BitSet(new long[]{0x0000001F00100040L,0x0006FC0F011009F8L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2024 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_IN_in_fact_expression2035 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression2039 = new BitSet(new long[]{0x0000001F00100040L,0x0006FC0F011009F8L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2045 = new BitSet(new long[]{0x0000001F00100048L,0x0006FC0F011009F8L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_fact_expression2060 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2064 = new BitSet(new long[]{0x0000001F00100040L,0x0006FC0F011009F8L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2068 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_fact_expression2078 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2082 = new BitSet(new long[]{0x0000001F00100040L,0x0006FC0F011009F8L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2086 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_ACCESSOR_PATH_in_fact_expression2097 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_accessor_element_in_fact_expression2102 = new BitSet(new long[]{0x0000002000000008L});
-    public static final BitSet FOLLOW_STRING_in_fact_expression2117 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INT_in_fact_expression2127 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FLOAT_in_fact_expression2137 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_BOOL_in_fact_expression2147 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NULL_in_fact_expression2157 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_fact_expression2167 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_ACCESSOR_PATH_in_field_element2189 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_accessor_element_in_field_element2194 = new BitSet(new long[]{0x0000002000000008L});
-    public static final BitSet FOLLOW_VT_ACCESSOR_ELEMENT_in_accessor_element2218 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_accessor_element2222 = new BitSet(new long[]{0x0000000000080008L});
-    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_accessor_element2226 = new BitSet(new long[]{0x0000000000080008L});
-    public static final BitSet FOLLOW_VT_PATTERN_TYPE_in_pattern_type2247 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_pattern_type2251 = new BitSet(new long[]{0x0000000000000008L,0x0008000000100000L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_pattern_type2255 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_pattern_type2259 = new BitSet(new long[]{0x0000000000000008L,0x0008000000000000L});
-    public static final BitSet FOLLOW_VT_DATA_TYPE_in_data_type2281 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_data_type2285 = new BitSet(new long[]{0x0000000000000008L,0x0008000000100000L});
-    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});
+    public static final BitSet FOLLOW_VK_OPERATOR_in_fact_expression1905 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1909 = new BitSet(new long[]{0x0000001F00180040L,0x00003FC0F0104048L});
+    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_fact_expression1914 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC0F0104048L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1919 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_IN_in_fact_expression1930 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1934 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC0F0104048L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1940 = new BitSet(new long[]{0x0000001F00100048L,0x00003FC0F0104048L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_fact_expression1955 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1959 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC0F0104048L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1963 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_fact_expression1973 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1977 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC0F0104048L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1981 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_ACCESSOR_PATH_in_fact_expression1992 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_accessor_element_in_fact_expression1997 = new BitSet(new long[]{0x0000002000000008L});
+    public static final BitSet FOLLOW_STRING_in_fact_expression2012 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INT_in_fact_expression2022 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FLOAT_in_fact_expression2032 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_BOOL_in_fact_expression2042 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NULL_in_fact_expression2052 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_fact_expression2062 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_ACCESSOR_PATH_in_field_element2084 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_accessor_element_in_field_element2089 = new BitSet(new long[]{0x0000002000000008L});
+    public static final BitSet FOLLOW_VT_ACCESSOR_ELEMENT_in_accessor_element2113 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_accessor_element2117 = new BitSet(new long[]{0x0000000000080008L});
+    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_accessor_element2121 = new BitSet(new long[]{0x0000000000080008L});
+    public static final BitSet FOLLOW_VT_PATTERN_TYPE_in_pattern_type2142 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_pattern_type2146 = new BitSet(new long[]{0x0000000000000008L,0x0000400000010000L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_pattern_type2150 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_pattern_type2154 = new BitSet(new long[]{0x0000000000000008L,0x0000400000000000L});
+    public static final BitSet FOLLOW_VT_DATA_TYPE_in_data_type2176 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_data_type2180 = new BitSet(new long[]{0x0000000000000008L,0x0000400000010000L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_data_type2184 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_data_type2188 = new BitSet(new long[]{0x0000000000000008L,0x0000400000000000L});
 
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsParserExceptionFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsParserExceptionFactory.java	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsParserExceptionFactory.java	2008-11-25 18:08:44 UTC (rev 24099)
@@ -100,7 +100,7 @@
 		String message = "";
 		if (e instanceof MismatchedTokenException) {
 			MismatchedTokenException mte = (MismatchedTokenException) e;
-			if (mte.expecting >= 0 && mte.expecting < tokenNames.length) {
+			if (tokenNames != null && mte.expecting >= 0 && mte.expecting < tokenNames.length) {
 				message = String
 						.format(
 								DroolsParserExceptionFactory.MISMATCHED_TOKEN_MESSAGE_COMPLETE,
@@ -192,18 +192,20 @@
 	 */
 	private String formatParserLocation() {
 		StringBuilder sb = new StringBuilder();
-		for (Map<DroolsParaphraseTypes, String> map : paraphrases) {
-			for (Entry<DroolsParaphraseTypes, String> activeEntry : map
-					.entrySet()) {
-				if (activeEntry.getValue().length() == 0) {
-					sb.append(String.format(PARSER_LOCATION_MESSAGE_PART,
-							getLocationName(activeEntry.getKey())));
-				} else {
-					sb.append(String.format(PARSER_LOCATION_MESSAGE_COMPLETE,
-							getLocationName(activeEntry.getKey()), activeEntry
-									.getValue()));
+		if (paraphrases != null){
+			for (Map<DroolsParaphraseTypes, String> map : paraphrases) {
+				for (Entry<DroolsParaphraseTypes, String> activeEntry : map
+						.entrySet()) {
+					if (activeEntry.getValue().length() == 0) {
+						sb.append(String.format(PARSER_LOCATION_MESSAGE_PART,
+								getLocationName(activeEntry.getKey())));
+					} else {
+						sb.append(String.format(PARSER_LOCATION_MESSAGE_COMPLETE,
+								getLocationName(activeEntry.getKey()), activeEntry
+										.getValue()));
+					}
 				}
-			}
+			}			
 		}
 		return sb.toString();
 	}
@@ -250,6 +252,9 @@
 	 * @return user friendly token definition
 	 */
 	private String getBetterToken(Token token) {
+		if (token == null){
+			return "";
+		}
 		return getBetterToken(token.getType(), token.getText());
 	}
 

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsSentenceType.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsSentenceType.java	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsSentenceType.java	2008-11-25 18:08:44 UTC (rev 24099)
@@ -8,5 +8,5 @@
  * @see DroolsSentence
  */
 public enum DroolsSentenceType {
-	PACKAGE, RULE_ATTRIBUTE, FUNCTION_IMPORT_STATEMENT, IMPORT_STATEMENT, GLOBAL, FUNCTION, TEMPLATE, TYPE_DECLARATION, RULE, QUERY;
+	PACKAGE, FUNCTION_IMPORT_STATEMENT, IMPORT_STATEMENT, GLOBAL, FUNCTION, TEMPLATE, TYPE_DECLARATION, RULE, QUERY;
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsSoftKeywords.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsSoftKeywords.java	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsSoftKeywords.java	2008-11-25 18:08:44 UTC (rev 24099)
@@ -1,5 +1,11 @@
 package org.drools.lang;
 
+import java.util.HashSet;
+import java.util.Set;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.base.evaluators.Operator;
+
 /**
  * Simple holder class identifying all the DRL soft keywords. This is used by
  * DRLParser.
@@ -52,4 +58,13 @@
 	public static final String ACTION = "action";
 	public static final String REVERSE = "reverse";
 	public static final String RESULT = "result";
+	
+	public static boolean isOperator( final String operator, final boolean negated ) {
+	    try {
+	        Operator.determineOperator( operator, negated );
+	        return true;
+	    } catch( RuntimeDroolsException rde )  {
+	        return false;
+	    }
+	}
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsTreeAdaptor.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsTreeAdaptor.java	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsTreeAdaptor.java	2008-11-25 18:08:44 UTC (rev 24099)
@@ -42,7 +42,6 @@
 					|| token.getType() == DRLLexer.VK_ATTRIBUTES
 					|| token.getType() == DRLLexer.VK_AUTO_FOCUS
 					|| token.getType() == DRLLexer.COLLECT
-					|| token.getType() == DRLLexer.VK_CONTAINS
 					|| token.getType() == DRLLexer.VK_DATE_EFFECTIVE
 					|| token.getType() == DRLLexer.VK_DATE_EXPIRES
 					|| token.getType() == DRLLexer.VK_DECLARE
@@ -50,7 +49,6 @@
 					|| token.getType() == DRLLexer.VK_DURATION
 					|| token.getType() == DRLLexer.VK_ENABLED
 					|| token.getType() == DRLLexer.VK_ENTRY_POINT
-					|| token.getType() == DRLLexer.VK_EXCLUDES
 					|| token.getType() == DRLLexer.VK_EXISTS
 					|| token.getType() == DRLLexer.VK_FORALL
 					|| token.getType() == DRLLexer.FROM
@@ -60,8 +58,6 @@
 					|| token.getType() == DRLLexer.VK_IN
 					|| token.getType() == DRLLexer.INIT
 					|| token.getType() == DRLLexer.VK_LOCK_ON_ACTIVE
-					|| token.getType() == DRLLexer.VK_MATCHES
-					|| token.getType() == DRLLexer.VK_MEMBEROF
 					|| token.getType() == DRLLexer.VK_NO_LOOP
 					|| token.getType() == DRLLexer.VK_NOT
 					|| token.getType() == DRLLexer.VK_OR
@@ -72,7 +68,6 @@
 					|| token.getType() == DRLLexer.VK_RULE
 					|| token.getType() == DRLLexer.VK_RULEFLOW_GROUP
 					|| token.getType() == DRLLexer.VK_SALIENCE
-					|| token.getType() == DRLLexer.VK_SOUNDSLIKE
 					|| token.getType() == DRLLexer.VK_TEMPLATE) {
 				tree.setEditorElementType(DroolsEditorType.KEYWORD);
 			} else if (token.getType() == DRLLexer.FLOAT
@@ -140,9 +135,13 @@
 			result
 					.setStartCharOffset(((DroolsToken) fromToken)
 							.getStartIndex());
-			result
-					.setEndCharOffset(result.getStartCharOffset()
-							+ text.length());
+			if (text == null) {
+				result.setEndCharOffset(((DroolsToken) fromToken)
+						.getStopIndex());
+			} else {
+				result.setEndCharOffset(result.getStartCharOffset()
+						+ text.length());
+			}
 			return result;
 		}
 		return super.create(tokenType, fromToken, text);
@@ -163,18 +162,19 @@
 	 */
 	public void addChild(Object t, Object child) {
 		if (t != null && child != null) {
-			DroolsTree tParent = (DroolsTree) t;
-			DroolsTree tChild = (DroolsTree) child;
+			if (t instanceof DroolsTree && child instanceof DroolsTree) {
+				DroolsTree tParent = (DroolsTree) t;
+				DroolsTree tChild = (DroolsTree) child;
 
-			if (0 >= tParent.getStartCharOffset()) {
-				tParent.setStartCharOffset(tChild.getStartCharOffset());
-				tParent.setEndCharOffset(tChild.getEndCharOffset());
+				if (0 >= tParent.getStartCharOffset()) {
+					tParent.setStartCharOffset(tChild.getStartCharOffset());
+					tParent.setEndCharOffset(tChild.getEndCharOffset());
+				}
+				if (0 < tParent.getChildCount()) {
+					tParent.setEndCharOffset(tChild.getEndCharOffset());
+				}
 			}
-			if (0 < tParent.getChildCount()) {
-				tParent.setEndCharOffset(tChild.getEndCharOffset());
-			}
-
-			if (DRLLexer.RIGHT_PAREN != tChild.getType()) {
+			if (DRLLexer.RIGHT_PAREN != ((Tree) child).getType()) {
 				((Tree) t).addChild((Tree) child);
 			}
 		}

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapLexer.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapLexer.java	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapLexer.java	2008-11-25 18:08:44 UTC (rev 24099)
@@ -1,1087 +1,853 @@
-// $ANTLR 3.0 src/main/resources/org/drools/lang/dsl/DSLMap.g 2008-10-22 23:57:51
-
-	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;
-    }
-
-
- 
-
+// $ANTLR 3.1.1 /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g 2008-11-21 15:39:55
+
+	package org.drools.lang.dsl;
+	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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:269:9: ( ( ' ' | '\\t' | '\\f' )+ )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:269:17: ( ' ' | '\\t' | '\\f' )+
+            {
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:276:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:277:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            {
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:292:9: ( '[' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:296:9: ( ']' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:300:9: ( '{' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:304:9: ( '}' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:307:8: ( '=' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:310:5: ( '.' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:313:9: ( '#' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:316:7: ( ':' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:319:7: ( ',' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:327:2: ( POUND ( options {greedy=false; } : . )* EOL )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:339:7: ( '>' | '<' | '!' | '@' | '$' | '%' | '^' | '*' | '-' | '+' | '?' | COMMA | '/' | '\\'' | '\"' | '|' | '&' | '(' | ')' | ';' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:277:14: ( '\\r\\n' )
+        // /Users/porcelli/Documents/dev/drools-trunk/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/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapParser.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapParser.java	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapParser.java	2008-11-25 18:08:44 UTC (rev 24099)
@@ -1,3242 +1,3313 @@
-// $ANTLR 3.0 src/main/resources/org/drools/lang/dsl/DSLMap.g 2008-10-22 23:57:51
-
-	package org.drools.lang.dsl;
-	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"; }
-
-
-    //we may not need the check on [], as the LITERAL token being examined 
-    //should not have them.
-    	
-    	private List errorList = new ArrayList();
-    	public List getErrorList(){
-    		return errorList;
-    	}
-
-    	private boolean validateLT(int LTNumber, String text){
-    		if (null == input) return false;
-    		if (null == input.LT(LTNumber)) return false;
-    		if (null == input.LT(LTNumber).getText()) return false;
-    		
-    		String text2Validate = input.LT(LTNumber).getText();
-    		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);
-    	}
-    	
-    	//public void reportError(RecognitionException re) {
-    		// 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;
-    	//
-    	//	String error = "Error parsing mapping entry: " + getErrorMessage(re, tokenNames);
-    	//	DSLMappingParseException exception = new DSLMappingParseException (error, re.line);
-    	//	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 ) {
-
-            		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");
-
-                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");
-
-                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");
-
-                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 ) {
-               
-              		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 ) {
-
-              	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");
-
-                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");
-
-
-                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 ) {
-
-              		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});
-
+// $ANTLR 3.1.1 /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g 2008-11-21 15:39:54
+
+	package org.drools.lang.dsl;
+	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;
+
+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-trunk/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.
+    	
+    	private List errorList = new ArrayList();
+    	public List getErrorList(){
+    		return errorList;
+    	}
+
+    	private boolean validateLT(int LTNumber, String text){
+    		if (null == input) return false;
+    		if (null == input.LT(LTNumber)) return false;
+    		if (null == input.LT(LTNumber).getText()) return false;
+    		
+    		String text2Validate = input.LT(LTNumber).getText();
+    		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);
+    	}
+    	
+    	//public void reportError(RecognitionException re) {
+    		// 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;
+    	//
+    	//	String error = "Error parsing mapping entry: " + getErrorMessage(re, tokenNames);
+    	//	DSLMappingParseException exception = new DSLMappingParseException (error, re.line);
+    	//	errorList.add(exception);
+    	//}
+    	
+
+
+    public static class mapping_file_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "mapping_file"
+    // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:87:2: ( ( statement )* -> ^( VT_DSL_GRAMMAR ( statement )* ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:87:4: ( statement )*
+            {
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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: scope_section, key_section, value_section, meta_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-trunk/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-trunk/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"
+    // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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: value4, value3, value1, value2
+            // 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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:135:4: (ks= key_sentence )+
+            {
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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 {
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:149:2: ( ( literal )+ )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:149:4: ( literal )+
+            {
+            root_0 = (Object)adaptor.nil();
+
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:153:4: ( value_sentence )+
+            {
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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 {
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:167:2: ( ( literal | EQUALS | COMMA )+ )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:171:2: ( ( LITERAL | COLON | LEFT_SQUARE | RIGHT_SQUARE ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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 -> {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 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 {
+            // /Users/porcelli/Documents/dev/drools-trunk/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 && hasSpaceA!
 fter}? 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-trunk/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)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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:186:17: ( COLON q= LITERAL )? COLON pat= pattern
+                    {
+                    // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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, name, q, q, q, name, q, q, q, q, name, name, name, name, name, name, q
+            // token labels: q, name
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.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, (Object)adaptor.create(VT_SPACE, "VT_SPACE"));
+                // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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 {
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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 {
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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)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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:247:2: ({...}?value= LITERAL -> VT_CONDITION[$value] )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:252:2: ({...}?value= LITERAL -> VT_CONSEQUENCE[$value] )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:257:2: ({...}?value= LITERAL -> VT_KEYWORD[$value] )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:262:2: ({...}?value= LITERAL -> VT_ANY[$value] )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:104:24: ( meta_section )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:117:4: (value1= condition_key )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:118:5: (value2= consequence_key )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:119:5: (value3= keyword_key )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:149:4: ( literal )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:167:5: ( literal )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:167:13: ( EQUALS )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:167:20: ( COMMA )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:186:18: ( COLON q= LITERAL )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:214:13: ( literal )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g:216:13: ( LEFT_SQUARE pattern RIGHT_SQUARE )
+        // /Users/porcelli/Documents/dev/drools-trunk/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/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapWalker.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapWalker.java	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapWalker.java	2008-11-25 18:08:44 UTC (rev 24099)
@@ -1,1040 +1,1050 @@
-// $ANTLR 3.0 src/main/resources/org/drools/lang/dsl/DSLMapWalker.g 2008-10-22 23:57:51
-
-	package org.drools.lang.dsl;
-	
-	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);
-        }
-        
-
-    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); 
-            }
-
-            		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;
-
-
-        	((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); 
-
-            		((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 ) {
-            			((entry_scope)entry_stack.peek()).retval.setMetaData(DSLMappingEntry.EMPTY_METADATA);
-            		} else {
-                    		((entry_scope)entry_stack.peek()).retval.setMetaData(new DSLMappingEntry.DefaultDSLEntryMetaData( metalit.getText() ));
-            	        }
-            	
-
-            }
-
-        }
-        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); 
-
-                    		((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); 
-
-            }
-
-
-            	((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); 
-
-                    		((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); 
-
-            		((entry_scope)entry_stack.peek()).counter++;
-            		((entry_scope)entry_stack.peek()).variables.put(varname.getText(), 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()+"}");
-            		}else if(q==null && pattern!=null){
-            			((entry_scope)entry_stack.peek()).sentencebuffer.append("{"+varname.getText()+":"+pattern.getText()+"}");
-            		}else{
-            			((entry_scope)entry_stack.peek()).sentencebuffer.append("{"+varname.getText()+"}");
-            		}
-            		
-            		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() + ")" : "(.*?)");
-            		}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});
-
+// $ANTLR 3.1.1 /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g 2008-11-21 15:39:58
+
+	package org.drools.lang.dsl;
+	
+	import java.util.Map;
+	import java.util.HashMap;
+	
+
+
+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-trunk/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-trunk/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;
+
+
+        	((mapping_file_scope)mapping_file_stack.peek()).retval = new DefaultDSLMapping() ;
+
+        try {
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:24:2: ( ^( VT_DSL_GRAMMAR ( valid_entry )* ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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"
+    // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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 {
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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"
+    // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:69:2: ( ^( VT_META (metalit= LITERAL )? ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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!=null?metalit.getText():null) ));
+            	        }
+            	
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "meta_section"
+
+
+    // $ANTLR start "key_section"
+    // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:80:2: ( ^( VT_ENTRY_KEY ( key_sentence )+ ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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"
+    // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:101:2: ( ^( VT_ENTRY_VAL ( value_sentence )+ ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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"
+    // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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"
+    // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:117:2: (theliteral= VT_LITERAL )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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!=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!=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!=null?varname.getText():null)+":"+(pattern!=null?pattern.getText():null)+"}");
+            		}else{
+            			((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!=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"
+    // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:145:2: ( ^(varref= VT_VAR_REF lit= LITERAL ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:152:2: ( VT_CONDITION )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:157:2: ( VT_CONSEQUENCE )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:162:2: ( VT_KEYWORD )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:167:2: ( VT_ANY )
+            // /Users/porcelli/Documents/dev/drools-trunk/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/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaLexer.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaLexer.java	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaLexer.java	2008-11-25 18:08:44 UTC (rev 24099)
@@ -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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g 2008-11-21 15:41:39
 
 	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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:11:7: ( 'package' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:12:7: ( ';' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:13:7: ( 'import' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:14:7: ( 'static' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:15:7: ( '.' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:16:7: ( '*' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:17:7: ( 'class' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:18:7: ( 'extends' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:19:7: ( 'implements' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:20:7: ( '<' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:21:7: ( ',' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:22:7: ( '>' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:23:7: ( '&' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:24:7: ( '{' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:25:7: ( '}' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:26:7: ( 'interface' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:27:7: ( 'void' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:28:7: ( '[' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:29:7: ( ']' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:30:7: ( 'throws' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:31:7: ( '=' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:32:7: ( 'public' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:33:7: ( 'protected' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:34:7: ( 'private' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:35:7: ( 'abstract' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:36:7: ( 'final' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:37:7: ( 'native' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:38:7: ( 'synchronized' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:39:7: ( 'transient' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:40:7: ( 'volatile' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:41:7: ( 'strictfp' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:42:7: ( 'boolean' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:43:7: ( 'char' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:44:7: ( 'byte' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:45:7: ( 'short' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:46:7: ( 'int' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:47:7: ( 'long' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:48:7: ( 'float' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:49:7: ( 'double' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:50:7: ( '?' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:51:7: ( 'super' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:52:7: ( '(' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:53:7: ( ')' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:54:7: ( '...' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:55:7: ( 'null' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:56:7: ( 'true' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:57:7: ( 'false' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:58:7: ( '@' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:59:7: ( 'default' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:60:7: ( 'assert' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:61:7: ( ':' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:62:7: ( 'if' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:63:7: ( 'else' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:64:7: ( 'for' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:65:7: ( 'while' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:66:7: ( 'do' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:67:7: ( 'try' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:68:7: ( 'finally' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:69:7: ( 'switch' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:70:7: ( 'return' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:71:7: ( 'throw' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:72:7: ( 'break' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:73:7: ( 'continue' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:74:7: ( 'modify' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:75:7: ( 'catch' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:76:7: ( 'case' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:77:7: ( '+=' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:78:7: ( '-=' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:79:7: ( '*=' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:80:7: ( '/=' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:81:7: ( '&=' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:82:7: ( '|=' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:83:7: ( '^=' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:84:7: ( '%=' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:85:7: ( '||' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:86:7: ( '&&' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:87:8: ( '|' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:88:8: ( '^' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:89:8: ( '==' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:90:8: ( '!=' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:91:8: ( 'instanceof' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:92:8: ( '+' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:93:8: ( '-' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:94:8: ( '/' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:95:8: ( '%' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:96:8: ( '++' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:97:8: ( '--' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:98:8: ( '~' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:99:8: ( '!' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:100:8: ( 'this' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:101:8: ( 'new' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:960:12: ( '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )? )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:964:14: ( '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )? )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:970:19: ( ( 'l' | 'L' ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:980:10: ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:983:17: ( ( 'f' | 'F' | 'd' | 'D' ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:986:5: ( '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\'' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:990:5: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1002:14: ( '0' .. '3' )
+                    // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1002:25: ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1002:36: ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1003:14: ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1003:25: ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1004:14: ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1009:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1012:5: ( 'enum' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1016:5: ( Letter ( Letter | JavaIDDigit )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1058:5: ( ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1062:5: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1066:5: ( '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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\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"+
+            "\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"+
-            "\u1040\uffff\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e"+
+            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\24"+
+            "\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,35 +4412,35 @@
             "\1\u00c0",
             "\1\u00c1",
             "\1\u00c2",
-            "\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"+
+            "\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",
             "\1\u00ca",
             "\1\u00cb",
-            "\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"+
+            "\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\u00cd",
-            "\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"+
+            "\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,62 +4460,62 @@
             "\1\u00e4",
             "\1\u00e5",
             "\1\u00e6",
-            "\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"+
+            "\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\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"+
+            "\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\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"+
+            "\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"+
             "\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"+
+            "\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\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"+
+            "\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\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"+
+            "\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\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"+
+            "\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\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"+
+            "\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"+
+            "\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"+
+            "\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"+
             "\u5200\56\u5900\uffff\u0200\56",
             "\1\u0100",
@@ -4339,234 +4534,234 @@
             "\1\u010d",
             "\1\u010e",
             "\1\u010f",
-            "\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"+
+            "\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\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"+
+            "\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"+
+            "\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\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"+
+            "\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\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\22"+
+            "\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\u0118",
+            "\1\u011a",
             "",
-            "\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"+
-            "\u1040\uffff\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e"+
-            "\56\u10d2\uffff\u5200\56\u5900\uffff\u0200\56",
             "\1\u011b",
             "\1\u011c",
-            "\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"+
+            "\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"+
+            "\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"+
+            "",
+            "\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"+
-            "\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
+            "\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\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"+
+            "\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"+
+            "\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"+
+            "\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"+
+            "\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"+
+            "\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"+
+            "\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"+
+            "",
+            "\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"+
+            "\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"+
+            "\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"+
+            "\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"+
+            "\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\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"+
+            "\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"+
+            "\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"+
+            "\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"+
+            "\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"+
+            "",
+            "\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\u0153",
             "",
             "\1\u0154",
             "\1\u0155",
             "\1\u0156",
-            "\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"+
+            "\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\u0158",
-            "\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"+
+            "\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"+
+            "\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\u015b",
-            "\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"+
+            "\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"+
+            "\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"+
+            "\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",
             "",
             "",
-            "\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"+
+            "\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"+
+            "\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"+
+            "",
+            "\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\u0165",
@@ -4574,8 +4769,8 @@
             "",
             "",
             "\1\u0166",
-            "\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"+
+            "\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",
             ""
@@ -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/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaParser.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaParser.java	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaParser.java	2008-11-25 18:08:44 UTC (rev 24099)
@@ -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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g 2008-11-21 15:41:38
 
 	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[407+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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:207:2: ( ( annotations )? ( packageDeclaration )? ( importDeclaration )* ( typeDeclaration )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:214:2: ( 'package' qualifiedName ';' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:218:2: ( 'import' ( 'static' )? Identifier ( '.' Identifier )* ( '.' '*' )? ';' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:227:2: ( ( modifier )* ( classDeclaration | interfaceDeclaration ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:243:2: ( '<' typeParameter ( ',' typeParameter )* '>' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:247:2: ( Identifier ( 'extends' bound )? )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:251:2: ( type ( '&' type )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:255:2: ( ENUM Identifier ( 'implements' typeList )? enumBody )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:259:2: ( '{' ( enumConstants )? ( ',' )? ( enumBodyDeclarations )? '}' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:263:2: ( enumConstant ( ',' enumConstant )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:267:2: ( ( annotations )? Identifier ( arguments )? ( classBody )? )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:271:2: ( ';' ( classBodyDeclaration )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:284:2: ( type ( ',' type )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:288:2: ( '{' ( classBodyDeclaration )* '}' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:292:2: ( '{' ( interfaceBodyDeclaration )* '}' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:312:2: ( typeParameters genericMethodOrConstructorRest )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:321:2: ( type Identifier methodDeclaratorRest )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:325:2: ( type variableDeclarators ';' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:342:2: ( type Identifier interfaceMethodOrFieldRest )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:351:2: ( formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ( methodBody | ';' ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:359:2: ( formalParameters ( 'throws' qualifiedNameList )? ( methodBody | ';' ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:366:2: ( formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ';' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:370:2: ( typeParameters ( type | 'void' ) Identifier interfaceMethodDeclaratorRest )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:375:2: ( formalParameters ( 'throws' qualifiedNameList )? ';' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:379:2: ( formalParameters ( 'throws' qualifiedNameList )? methodBody )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:383:2: ( Identifier constantDeclaratorRest )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:387:2: ( variableDeclarator ( ',' variableDeclarator )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:404:2: (id= Identifier rest= variableDeclaratorRest )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:423:5: ( constantDeclaratorRest ( ',' constantDeclarator )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:427:2: ( ( '[' ']' )* '=' variableInitializer )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:431:2: ( Identifier ( '[' ']' )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:440:2: ( '{' ( variableInitializer ( ',' variableInitializer )* ( ',' )? )? '}' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:459:2: ( Identifier ( '.' Identifier )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:463:5: ( Identifier )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:493:2: ( '<' typeArgument ( ',' typeArgument )* '>' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:502:2: ( qualifiedName ( ',' qualifiedName )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:506:2: ( '(' ( formalParameterDecls )? ')' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:510:2: ( ( variableModifier )* type ( formalParameterDeclsRest )? )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:519:2: ( block )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:523:2: ( Identifier ( '.' Identifier )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:536:5: ( HexLiteral | OctalLiteral | DecimalLiteral )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:542:5: ( 'true' | 'false' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:549:2: ( ( annotation )+ )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:553:2: ( '@' annotationName ( '(' ( elementValuePairs )? ')' )? )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:557:2: ( Identifier ( '.' Identifier )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:561:2: ( elementValuePair ( ',' elementValuePair )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:565:2: ( ( Identifier '=' )? elementValue )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:575:2: ( '{' ( elementValue ( ',' elementValue )* )? '}' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:579:2: ( '@' 'interface' Identifier annotationTypeBody )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:583:2: ( '{' ( annotationTypeElementDeclarations )? '}' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:587:2: ( ( annotationTypeElementDeclaration ) ( annotationTypeElementDeclaration )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:587:4: ( annotationTypeElementDeclaration )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:591:2: ( ( modifier )* annotationTypeElementRest )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:608:3: ( Identifier '(' ')' ( defaultValue )? )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:612:3: ( variableDeclarators )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:616:3: ( 'default' elementValue )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:628:2: ( '{' ( blockStatement )* '}' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:647:2: ( ( variableModifier )* type variableDeclarators ';' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:709:2: ( catchClause ( catchClause )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:713:2: ( 'catch' '(' formalParameter ')' block )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:717:2: ( ( variableModifier )* type variableDeclaratorId )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:721:2: ( ( switchBlockStatementGroup )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:725:2: ( switchLabel ( blockStatement )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:735:2: ( ( ',' statementExpression )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:756:2: ( ( variableModifier )* type Identifier ':' expression )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:760:2: ( expressionList )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:766:2: ( '(' expression ')' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:770:5: ( expression ( ',' expression )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:774:2: ( expression )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:778:2: ( expression )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:782:2: ( conditionalExpression ( assignmentOperator expression )? )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:801:5: ( conditionalOrExpression ( '?' expression ':' expression )? )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:805:5: ( conditionalAndExpression ( '||' conditionalAndExpression )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:809:5: ( inclusiveOrExpression ( '&&' inclusiveOrExpression )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:813:5: ( exclusiveOrExpression ( '|' exclusiveOrExpression )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:817:5: ( andExpression ( '^' andExpression )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:821:5: ( equalityExpression ( '&' equalityExpression )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:825:5: ( instanceOfExpression ( ( '==' | '!=' ) instanceOfExpression )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:829:5: ( relationalExpression ( 'instanceof' type )? )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:833:5: ( shiftExpression ( relationalOp shiftExpression )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:837:2: ( ( '<' '=' | '>' '=' | '<' | '>' ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:841:5: ( additiveExpression ( shiftOp additiveExpression )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:846:2: ( ( '<' '<' | '>' '>' '>' | '>' '>' ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:851:5: ( multiplicativeExpression ( ( '+' | '-' ) multiplicativeExpression )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:855:5: ( unaryExpression ( ( '*' | '/' | '%' ) unaryExpression )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:903:2: ( ( nonWildcardTypeArguments )? createdName ( arrayCreatorRest | classCreatorRest ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:914:2: ( Identifier classCreatorRest )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:918:2: ( '[' ( ']' ( '[' ']' )* arrayInitializer | expression ']' ( '[' expression ']' )* ( '[' ']' )* ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:925:2: ( arguments ( classBody )? )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:929:2: ( nonWildcardTypeArguments explicitGenericInvocationSuffix )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:933:2: ( '<' typeList '>' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:955:2: ( '(' ( expressionList )? ')' )
+            // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:207:4: ( annotations )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:303:4: ( methodDeclaration )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:304:4: ( fieldDeclaration )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:459:16: ( '.' Identifier )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:549:4: ( annotation )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:596:6: ( classDeclaration ( ';' )? )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:597:6: ( interfaceDeclaration ( ';' )? )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:598:6: ( enumDeclaration ( ';' )? )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:632:4: ( localVariableDeclaration )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:633:4: ( classOrInterfaceDeclaration )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:666:52: ( 'else' statement )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:671:9: ( catches 'finally' block )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:672:9: ( catches )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:729:4: ( 'case' constantExpression ':' )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:730:6: ( 'case' enumConstantName ':' )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:740:4: ( forVarControl )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:751:4: ( ( variableModifier )* type variableDeclarators )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/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-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:782:27: ( assignmentOperator expression )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:796:9: ( '>' '>' '=' )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:833:27: ( relationalOp shiftExpression )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:841:30: ( shiftOp additiveExpression )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:846:15: ( '>' '>' '>' )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:869:9: ( castExpression )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:874:8: ( '(' primitiveType ')' unaryExpression )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:875:13: ( type )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:882:17: ( '.' Identifier )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:882:35: ( identifierSuffix )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:886:127: ( '.' Identifier )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:886:145: ( identifierSuffix )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:893:5: ( '[' expression ']' )
+        // /Users/porcelli/Documents/dev/drools-trunk/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-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:920:29: ( '[' expression ']' )
+        // /Users/porcelli/Documents/dev/drools-trunk/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/trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g	2008-11-25 18:08:44 UTC (rev 24099)
@@ -1,1903 +1,1890 @@
-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;
-}
-
- 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 boolean validateLT(int LTNumber, String text) {
-		if (null == input)
-			return false;
-		if (null == input.LT(LTNumber))
-			return false;
-		if (null == input.LT(LTNumber).getText())
-			return false;
-	
-		String text2Validate = input.LT(LTNumber).getText();
-		return text2Validate.equalsIgnoreCase(text);
-	}
-	
-	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
- 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^
-		|	id1=ID^ {	emit($id1, DroolsEditorType.IDENTIFIER);	}
-		|	ga1=TILDE!  {	emit($ga1, DroolsEditorType.SYMBOL);	} id2=ID^  {	emit($id2, DroolsEditorType.IDENTIFIER);	} square_chunk)
-	|	contains_key^
-	|	excludes_key^
-	|	matches_key^
-	|	soundslike_key^
-	|	memberof_key^
-	|	id3=ID^ {	emit($id3, DroolsEditorType.IDENTIFIER);	}
-	|	ga2=TILDE!  {	emit($ga2, DroolsEditorType.SYMBOL);	} id4=ID^  {	emit($id4, DroolsEditorType.IDENTIFIER);	} 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);
-	}	}
-
-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'
-	;
-
-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_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;
+
+	import org.drools.compiler.DroolsParserException;
+}
+
+
+ at lexer::members {
+	private List<DroolsParserException> errors = new ArrayList<DroolsParserException>();
+	private DroolsParserExceptionFactory errorMessageFactory = new DroolsParserExceptionFactory(null, null);
+
+	/** 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;
+	}
+
+	public void reportError(RecognitionException ex) {
+		errors.add(errorMessageFactory.createDroolsException(ex));
+	}
+
+	/** return the raw DroolsParserException errors */
+	public List<DroolsParserException> getErrors() {
+		return errors;
+	}
+
+	/** 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) {
+			return;
+		}
+		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();
+	}
+	
+	/** 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()) {
+		Tree rootNode = (Tree) adaptor.becomeRoot(adaptor.create(
+				VT_COMPILATION_UNIT, "VT_COMPILATION_UNIT"), adaptor.nil());
+		for (int i = 0; i < ((Tree)retval.tree).getChildCount(); i++) {
+			Tree childNode = (Tree) ((Tree)retval.tree).getChild(i);
+			if (!(childNode instanceof CommonErrorNode)) {
+				rootNode.addChild(childNode);
+			}
+		}
+		retval.tree = rootNode; 
+	}
+}
+
+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;
+}	:	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); }
+ 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  { boolean isFailed = true; pushParaphrases(DroolsParaphraseTypes.RULE); }
+ at after { paraphrases.pop(); isFailed = false; }
+	:
+	{	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)
+	;
+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();
+		}
+	}
+}
+
+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; if (!(retval.tree instanceof CommonErrorNode)) 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(2) == EOF && input.LA(1) == ID){
+			emit(input.LT(1), DroolsEditorType.IDENTIFIER);
+			input.consume();
+		}
+	}
+}
+date_effective
+	:	date_effective_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} STRING
+	{	emit($STRING, DroolsEditorType.STRING_CONST );	}
+	;
+
+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
+	{	if (((DroolsTree) $pc.tree).getText() != null){
+			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);	} 
+	{	if (pc1 != null && ((DroolsTree) pc1.getTree()).getText() != null) emit(Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION);	}
+		action_key pc2=accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] cm2=COMMA? {	emit($cm2, DroolsEditorType.SYMBOL);	} 
+	{	if (pc1 != null && ((DroolsTree) pc1.getTree()).getText() != null && pc2 != null && ((DroolsTree) pc2.getTree()).getText() != null ) emit(Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE);	}
+	(	reverse_key pc3=accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] cm3=COMMA? {	emit($cm3, DroolsEditorType.SYMBOL);	} )?
+
+	{	if ((pc1 != null && ((DroolsTree) pc1.tree).getText() != null) &&
+            			(pc2 != null && ((DroolsTree) pc2.tree).getText() != null) &&
+            			(pc3 != null && ((DroolsTree) pc3.tree).getText() != null)) {
+			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
+ 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 )* 
+	;
+catch [ RecognitionException re ] {
+	if (!lookaheadTest){
+        reportError(re);
+        recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+	} else {
+		throw re;
+	}
+}
+
+and_restr_connective
+	:	constraint_expression ({(validateRestr())}?=> DOUBLE_AMPER^ 
+	{	emit($DOUBLE_AMPER, DroolsEditorType.SYMBOL);	} constraint_expression )*
+	;
+catch [ RecognitionException re ] {
+	if (!lookaheadTest){
+        reportError(re);
+        recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+	} else {
+		throw re;
+	}
+}
+
+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);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), 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?
+		(	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]
+	;
+
+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]
+	;
+
+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'
+	;
+
+GRAVE_ACCENT
+	:	'`'
+	;
+
+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/trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g	2008-11-25 18:08:44 UTC (rev 24099)
@@ -352,17 +352,7 @@
 	{	$descr = factory.setupRestriction($op, null, $fe.descr);	}
 	|	^(op=LESS_EQUAL fe=fact_expression)
 	{	$descr = factory.setupRestriction($op, null, $fe.descr);	}
-	|	^(op=VK_CONTAINS not=VK_NOT? fe=fact_expression)
-	{	$descr = factory.setupRestriction($op, $not, $fe.descr);	}
-	|	^(op=VK_EXCLUDES not=VK_NOT? fe=fact_expression)
-	{	$descr = factory.setupRestriction($op, $not, $fe.descr);	}
-	|	^(op=VK_MATCHES not=VK_NOT? fe=fact_expression)
-	{	$descr = factory.setupRestriction($op, $not, $fe.descr);	}
-	|	^(op=VK_SOUNDSLIKE not=VK_NOT? fe=fact_expression)
-	{	$descr = factory.setupRestriction($op, $not, $fe.descr);	}
-	|	^(op=VK_MEMBEROF not=VK_NOT? fe=fact_expression)
-	{	$descr = factory.setupRestriction($op, $not, $fe.descr);	}
-	|	^(op=ID not=VK_NOT? param=VT_SQUARE_CHUNK? fe=fact_expression)
+	|	^(op=VK_OPERATOR not=VK_NOT? param=VT_SQUARE_CHUNK? fe=fact_expression)
 	{	$descr = factory.setupRestriction($op, $not, $fe.descr, $param);	}
 
 	|	^(VK_IN not=VK_NOT? (fe=fact_expression {exprList.add($fe.descr);})+)
@@ -409,4 +399,4 @@
 data_type returns [BaseDescr dataType]
 	:	^(VT_DATA_TYPE idList+=ID+ (LEFT_SQUARE rightList+=RIGHT_SQUARE)*)
 	{	$dataType = factory.createDataType($idList, $rightList);	}
-	;
\ No newline at end of file
+	;

Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g	2008-11-25 18:08:44 UTC (rev 24099)
@@ -187,11 +187,7 @@
 	|	^(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)
+	|	^(VK_OPERATOR VK_NOT? VT_SQUARE_CHUNK? fact_expression)
 	|	^(ID VK_NOT? VT_SQUARE_CHUNK? fact_expression)
 	|	^(VT_BIND_FIELD VT_LABEL fact_expression)
 	|	^(VT_FIELD fact_expression fact_expression?)

Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g	2008-11-25 18:08:44 UTC (rev 24099)
@@ -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/trunk/drools-compiler/src/test/java/org/drools/lang/DRLContextTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/DRLContextTest.java	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/DRLContextTest.java	2008-11-25 18:08:44 UTC (rev 24099)
@@ -7,10 +7,17 @@
 import org.antlr.runtime.ANTLRStringStream;
 import org.antlr.runtime.CommonTokenStream;
 import org.antlr.runtime.RecognitionException;
+import org.drools.base.evaluators.EvaluatorRegistry;
 import org.drools.compiler.DroolsParserException;
 
 public class DRLContextTest extends TestCase {
 
+	protected void setUp() throws Exception {
+		super.setUp();
+		// initializes pluggable operators
+		new EvaluatorRegistry();
+	}
+
 	public void testCheckLHSLocationDetermination_OPERATORS_AND_COMPLEMENT1()
 			throws DroolsParserException, RecognitionException {
 		String input = "rule MyRule when Class ( property memberOf collection ";
@@ -2288,6 +2295,24 @@
 						.getContent()));
 	}
 
+	public void testCheckLHSLocationDetermination_FROM_ACCUMULATE_ACTION_INSIDE3() {
+		String input = "rule MyRule \n" + "	when \n"
+				+ "		Class ( property > 0 ) from accumulate( \n"
+				+ "			$cheese : Cheese( type == $likes ), \n"
+				+ "			init( int total = 0; ), \n" + "			action( ";
+
+		DRLParser parser = getParser(input);
+		parser.enableEditorInterface();
+		try {
+			parser.compilation_unit();
+		} catch (Exception ex) {
+		}
+
+		assertEquals(Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE,
+				getLastIntegerValue(parser.getEditorInterface().get(0)
+						.getContent()));
+	}
+
 	public void testCheckLHSLocationDetermination_FROM_ACCUMULATE_RESULT_INSIDE() {
 		String input = "rule MyRule \n" + "	when \n"
 				+ "		Class ( property > 0 ) from accumulate( \n"

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/DRLIncompleteCodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/DRLIncompleteCodeTest.java	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/DRLIncompleteCodeTest.java	2008-11-25 18:08:44 UTC (rev 24099)
@@ -35,7 +35,7 @@
 		DrlParser parser = new DrlParser();
 		PackageDescr descr = parser.parse(true, input);
 
-		assertNull(descr);
+		assertNotNull(descr);
 		assertEquals(Location.LOCATION_LHS_INSIDE_CONDITION_END,
 				getLastIntegerValue(parser.getEditorSentences().get(0)
 						.getContent()));
@@ -84,7 +84,7 @@
 		DrlParser parser = new DrlParser();
 		PackageDescr descr = parser.parse(true, input);
 
-		assertNull(descr);
+		assertNotNull(descr);
 	}
 
 	public void testIncompleteCode6() throws DroolsParserException,
@@ -95,6 +95,8 @@
 		DrlParser parser = new DrlParser();
 		PackageDescr descr = parser.parse(true, input);
 
+		// here is null, 'cos parser emits an error on predict dfa on "packe
+		// 1111.111" and stops the parsing
 		assertNull(descr);
 	}
 
@@ -106,7 +108,7 @@
 		DrlParser parser = new DrlParser();
 		PackageDescr descr = parser.parse(true, input);
 
-		assertNull(descr);
+		assertNotNull(descr);
 	}
 
 	public void testIncompleteCode8() throws DroolsParserException,
@@ -118,7 +120,8 @@
 		PackageDescr descr = parser.parse(true, input);
 
 		assertEquals("a.b.c", descr.getNamespace());
-		assertEquals(0, descr.getRules().size());
+		assertEquals(2, descr.getRules().size());
+		assertEquals(true, parser.hasErrors());
 	}
 
 	public void testIncompleteCode9() throws DroolsParserException,
@@ -168,16 +171,11 @@
 		assertEquals("MyRule", ((RuleDescr) descr.getRules().get(0)).getName());
 	}
 
-	public void testIncompleteCode12() throws DroolsParserException, RecognitionException {
-		String input = 
-			"package a.b.c " +
-			"import a.b.c.* " +
-			"rule MyRule" +
-			"  when " +
-			"    m: Message(  ) " +
-			"    " +
-			"  then" +
-			"end ";
+	public void testIncompleteCode12() throws DroolsParserException,
+			RecognitionException {
+		String input = "package a.b.c " + "import a.b.c.* " + "rule MyRule"
+				+ "  when " + "    m: Message(  ) " + "    " + "  then"
+				+ "end ";
 		DrlParser parser = new DrlParser();
 		PackageDescr descr = parser.parse(true, input);
 		assertNotNull(descr);
@@ -186,26 +184,21 @@
 		assertEquals("a.b.c.*", ((ImportDescr) descr.getImports().get(0))
 				.getTarget());
 	}
-	
 
-	public void testIncompleteCode13() throws DroolsParserException, RecognitionException {
-		String input = 
-			"package com.sample " +
-			"import com.sample.DroolsTest.Message; " +
-			"rule \"Hello World\"" +
-			"  when " +
-			"  then" +
-			"     \\\" " +
-			"end ";
+	public void testIncompleteCode13() throws DroolsParserException,
+			RecognitionException {
+		String input = "package com.sample "
+				+ "import com.sample.DroolsTest.Message; "
+				+ "rule \"Hello World\"" + "  when " + "  then" + "     \\\" "
+				+ "end ";
 		DrlParser parser = new DrlParser();
 		PackageDescr descr = parser.parse(true, input);
-		assertNull(descr);
+		assertNotNull(descr);
 	}
-	
-	
+
 	@SuppressWarnings("unchecked")
 	private int getLastIntegerValue(LinkedList list) {
-//		System.out.println(list.toString());
+		// System.out.println(list.toString());
 		int lastIntergerValue = -1;
 		for (Object object : list) {
 			if (object instanceof Integer) {

Copied: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/DroolsSoftKeywordsTest.java (from rev 24078, labs/jbossrules/branches/etirelli/drools-compiler/src/test/java/org/drools/lang/DroolsSoftKeywordsTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/DroolsSoftKeywordsTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/DroolsSoftKeywordsTest.java	2008-11-25 18:08:44 UTC (rev 24099)
@@ -0,0 +1,42 @@
+/**
+ * 
+ */
+package org.drools.lang;
+
+import org.drools.base.evaluators.EvaluatorRegistry;
+
+import junit.framework.TestCase;
+
+/**
+ * @author admin
+ *
+ */
+public class DroolsSoftKeywordsTest extends TestCase {
+
+	/**
+	 * Test method for {@link org.drools.lang.DroolsSoftKeywords#isOperator(java.lang.String, boolean)}.
+	 */
+	public void testIsOperator() {
+		// initializes the registry
+		new EvaluatorRegistry();
+		
+		// test the registry
+		assertTrue( DroolsSoftKeywords.isOperator("matches", false) );
+		assertTrue( DroolsSoftKeywords.isOperator("matches", true) );
+		assertTrue( DroolsSoftKeywords.isOperator("contains", false) );
+		assertTrue( DroolsSoftKeywords.isOperator("contains", true) );
+		assertTrue( DroolsSoftKeywords.isOperator("after", false) );
+		assertTrue( DroolsSoftKeywords.isOperator("after", true) );
+		assertTrue( DroolsSoftKeywords.isOperator("before", false) );
+		assertTrue( DroolsSoftKeywords.isOperator("before", true) );
+		assertTrue( DroolsSoftKeywords.isOperator("finishes", false) );
+		assertTrue( DroolsSoftKeywords.isOperator("finishes", true) );
+		assertTrue( DroolsSoftKeywords.isOperator("overlappedby", false) );
+		assertTrue( DroolsSoftKeywords.isOperator("overlappedby", true) );
+		
+		assertFalse( DroolsSoftKeywords.isOperator("xyz", false) );
+		assertFalse( DroolsSoftKeywords.isOperator("xyz", true) );
+		
+	}
+
+}

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/ErrorsParserTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/ErrorsParserTest.java	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/ErrorsParserTest.java	2008-11-25 18:08:44 UTC (rev 24099)
@@ -28,6 +28,7 @@
 import org.antlr.runtime.Lexer;
 import org.antlr.runtime.TokenStream;
 import org.antlr.runtime.tree.Tree;
+import org.drools.base.evaluators.EvaluatorRegistry;
 import org.drools.compiler.DroolsParserException;
 import org.drools.lang.dsl.DefaultExpander;
 
@@ -38,6 +39,9 @@
 	protected void setUp() throws Exception {
 		super.setUp();
 		this.parser = null;
+
+		// initializes pluggable operators
+		new EvaluatorRegistry();
 	}
 
 	protected void tearDown() throws Exception {

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java	2008-11-25 18:08:44 UTC (rev 24099)
@@ -23,7 +23,9 @@
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import junit.framework.TestCase;
 
@@ -31,6 +33,7 @@
 import org.antlr.runtime.CharStream;
 import org.antlr.runtime.CommonTokenStream;
 import org.antlr.runtime.tree.CommonTreeNodeStream;
+import org.drools.base.evaluators.EvaluatorRegistry;
 import org.drools.compiler.DrlParser;
 import org.drools.lang.descr.AccessorDescr;
 import org.drools.lang.descr.AccumulateDescr;
@@ -76,6 +79,9 @@
 	protected void setUp() throws Exception {
 		super.setUp();
 		this.walker = null;
+
+		// initializes pluggable operators
+		new EvaluatorRegistry();
 	}
 
 	protected void tearDown() throws Exception {
@@ -1791,28 +1797,28 @@
 		assertEquals("true", at.getValue());
 	}
 
-    public void testEnabledExpression() throws Exception {
-        final RuleDescr rule = (RuleDescr) parseResource("rule", "rule",
-                "rule_enabled_expression.drl");
-        assertEquals("simple_rule", rule.getName());
-        assertEqualsIgnoreWhitespace("bar();", (String) rule.getConsequence());
+	public void testEnabledExpression() throws Exception {
+		final RuleDescr rule = (RuleDescr) parseResource("rule", "rule",
+				"rule_enabled_expression.drl");
+		assertEquals("simple_rule", rule.getName());
+		assertEqualsIgnoreWhitespace("bar();", (String) rule.getConsequence());
 
-        final List attrs = rule.getAttributes();
-        assertEquals(3, attrs.size());
+		final List attrs = rule.getAttributes();
+		assertEquals(3, attrs.size());
 
-        AttributeDescr at = (AttributeDescr) attrs.get(0);
-        assertEquals("enabled", at.getName());
-        assertEquals("( 1 + 1 == 2 )", at.getValue());
+		AttributeDescr at = (AttributeDescr) attrs.get(0);
+		assertEquals("enabled", at.getName());
+		assertEquals("( 1 + 1 == 2 )", at.getValue());
 
-        at = (AttributeDescr) attrs.get(1);
-        assertEquals("salience", at.getName());
-        assertEquals("( 1+2 )", at.getValue());
-        
-        at = (AttributeDescr) attrs.get(2);
-        assertEquals("lock-on-active", at.getName());
-        assertEquals("true", at.getValue());
-    }
+		at = (AttributeDescr) attrs.get(1);
+		assertEquals("salience", at.getName());
+		assertEquals("( 1+2 )", at.getValue());
 
+		at = (AttributeDescr) attrs.get(2);
+		assertEquals("lock-on-active", at.getName());
+		assertEquals("true", at.getValue());
+	}
+
 	public void testAttributes_alternateSyntax() throws Exception {
 		final RuleDescr rule = (RuleDescr) parseResource("rule", "rule",
 				"rule_attributes_alt.drl");
@@ -2507,6 +2513,16 @@
 				.get(0)).getText());
 	}
 
+	public void testSimpleRestrictionConnective() throws Exception {
+
+		final String text = "Person( age == 12 || ( test == 222 ))";
+
+		PatternDescr pattern = (PatternDescr) parse("lhs_pattern",
+				"lhs_pattern", text);
+
+		assertEquals(1, pattern.getDescrs().size());
+	}
+
 	public void testRestrictionConnectives() throws Exception {
 
 		// the expression bellow must generate the following tree:
@@ -2930,6 +2946,7 @@
 	}
 
 	public void testPluggableOperators() throws Exception {
+
 		parseResource("compilation_unit", "compilation_unit",
 				"pluggable_operators.drl");
 
@@ -2948,8 +2965,11 @@
 		assertEquals("$b", eventB.getIdentifier());
 		assertEquals("EventB", eventB.getObjectType());
 		assertEquals(1, eventB.getConstraint().getDescrs().size());
-		final FieldConstraintDescr fcdB = (FieldConstraintDescr) eventB
-				.getConstraint().getDescrs().get(0);
+		final OrDescr or = (OrDescr) eventB.getConstraint().getDescrs().get(0);
+		assertEquals(2, or.getDescrs().size());
+
+		final FieldConstraintDescr fcdB = (FieldConstraintDescr) or.getDescrs()
+				.get(0);
 		assertEquals(1, fcdB.getRestrictions().size());
 		assertTrue(fcdB.getRestrictions().get(0) instanceof VariableRestrictionDescr);
 		final VariableRestrictionDescr rb = (VariableRestrictionDescr) fcdB
@@ -2959,6 +2979,17 @@
 		assertEquals("1,10", rb.getParameterText());
 		assertFalse(rb.isNegated());
 
+		final FieldConstraintDescr fcdB2 = (FieldConstraintDescr) or
+				.getDescrs().get(1);
+		assertEquals(1, fcdB2.getRestrictions().size());
+		assertTrue(fcdB2.getRestrictions().get(0) instanceof VariableRestrictionDescr);
+		final VariableRestrictionDescr rb2 = (VariableRestrictionDescr) fcdB2
+				.getRestrictions().get(0);
+		assertEquals("after", rb2.getEvaluator());
+		assertEquals("$a", rb2.getText());
+		assertEquals("15,20", rb2.getParameterText());
+		assertTrue(rb2.isNegated());
+
 		final PatternDescr eventC = (PatternDescr) rule.getLhs().getDescrs()
 				.get(2);
 		assertEquals("$c", eventC.getIdentifier());
@@ -2995,17 +3026,38 @@
 				.get(4);
 		assertEquals("$e", eventE.getIdentifier());
 		assertEquals("EventE", eventE.getObjectType());
-		assertEquals(1, eventE.getConstraint().getDescrs().size());
-		final FieldConstraintDescr fcdE = (FieldConstraintDescr) eventE
-				.getConstraint().getDescrs().get(0);
+		assertEquals(2, eventE.getConstraint().getDescrs().size());
+
+		final AndDescr and = (AndDescr) eventE.getConstraint();
+
+		FieldConstraintDescr fcdE = (FieldConstraintDescr) and.getDescrs().get(
+				0);
 		assertEquals(1, fcdE.getRestrictions().size());
-		assertTrue(fcdE.getRestrictions().get(0) instanceof VariableRestrictionDescr);
-		final VariableRestrictionDescr re = (VariableRestrictionDescr) fcdE
+		final RestrictionConnectiveDescr orrestr = (RestrictionConnectiveDescr) fcdE
 				.getRestrictions().get(0);
+		assertEquals(RestrictionConnectiveDescr.OR, orrestr.getConnective());
+		assertEquals(2, orrestr.getRestrictions().size());
+		assertTrue(orrestr.getRestrictions().get(0) instanceof VariableRestrictionDescr);
+		VariableRestrictionDescr re = (VariableRestrictionDescr) orrestr
+				.getRestrictions().get(0);
 		assertEquals("before", re.getEvaluator());
 		assertEquals("$b", re.getText());
 		assertEquals("1, 10", re.getParameterText());
 		assertTrue(re.isNegated());
+		re = (VariableRestrictionDescr) orrestr.getRestrictions().get(1);
+		assertEquals("after", re.getEvaluator());
+		assertEquals("$c", re.getText());
+		assertEquals("1, 10", re.getParameterText());
+		assertFalse(re.isNegated());
+
+		fcdE = (FieldConstraintDescr) and.getDescrs().get(1);
+		assertEquals(1, fcdE.getRestrictions().size());
+		assertTrue(fcdE.getRestrictions().get(0) instanceof VariableRestrictionDescr);
+		re = (VariableRestrictionDescr) fcdE.getRestrictions().get(0);
+		assertEquals("after", re.getEvaluator());
+		assertEquals("$d", re.getText());
+		assertEquals("1, 5", re.getParameterText());
+		assertFalse(re.isNegated());
 	}
 
 	public void testTypeDeclaration() throws Exception {
@@ -3024,31 +3076,31 @@
 		assertEquals("duration", descr.getMetaAttribute("duration"));
 		assertEquals("timestamp", descr.getMetaAttribute("timestamp"));
 	}
+
 	public void testRuleMetadata() throws Exception {
 		parseResource("compilation_unit", "compilation_unit",
 				"Rule_with_Metadata.drl");
 		final PackageDescr pack = walker.getPackageDescr();
-//		@fooAttribute(barValue)
-//		@fooAtt2(barVal2)
+		// @fooAttribute(barValue)
+		// @fooAtt2(barVal2)
 		RuleDescr rule = pack.getRules().get(0);
 		assertTrue(rule.getMetaAttributes().containsKey("fooMeta1"));
-		assertEquals("barVal1",rule.getMetaAttribute("fooMeta1"));
+		assertEquals("barVal1", rule.getMetaAttribute("fooMeta1"));
 		assertTrue(rule.getMetaAttributes().containsKey("fooMeta2"));
-		assertEquals("barVal2",rule.getMetaAttribute("fooMeta2"));
+		assertEquals("barVal2", rule.getMetaAttribute("fooMeta2"));
 	}
-	
+
 	public void testRuleExtends() throws Exception {
 		parseResource("compilation_unit", "compilation_unit",
 				"Rule_with_Extends.drl");
 		final PackageDescr pack = walker.getPackageDescr();
-//		@fooAttribute(barValue)
-//		@fooAtt2(barVal2)
+		// @fooAttribute(barValue)
+		// @fooAtt2(barVal2)
 		RuleDescr rule = pack.getRules().get(0);
 		assertTrue(rule.getParentName() != null);
-		assertEquals("rule1",rule.getParentName());
+		assertEquals("rule1", rule.getParentName());
 
 	}
-	
 
 	public void testTypeDeclarationWithFields() throws Exception {
 		parseResource("compilation_unit", "compilation_unit",
@@ -3108,25 +3160,25 @@
 		assertEquals("StreamA", entry.getEntryId());
 	}
 
-    public void testSlidingWindow() throws Exception {
-        final String text = "StockTick( symbol==\"ACME\") over window:length(10)";
+	public void testSlidingWindow() throws Exception {
+		final String text = "StockTick( symbol==\"ACME\") over window:length(10)";
 
-        PatternDescr pattern = (PatternDescr) parse("pattern_source", "lhs",
-                text);
+		PatternDescr pattern = (PatternDescr) parse("pattern_source", "lhs",
+				text);
 
-        assertEquals(1, pattern.getDescrs().size());
-        FieldConstraintDescr fcd = (FieldConstraintDescr) pattern.getDescrs()
-                .get(0);
-        assertEquals("symbol", fcd.getFieldName());
+		assertEquals(1, pattern.getDescrs().size());
+		FieldConstraintDescr fcd = (FieldConstraintDescr) pattern.getDescrs()
+				.get(0);
+		assertEquals("symbol", fcd.getFieldName());
 
-        List<BehaviorDescr> behaviors = pattern.getBehaviors();
-        assertNotNull( behaviors );
-        assertEquals( 1, behaviors.size() );
-        SlidingWindowDescr descr = (SlidingWindowDescr) behaviors.get( 0 );
-        assertEquals( "length", descr.getText() );
-        assertEquals( "length", descr.getType() );
-        assertEquals( "10", descr.getParameters() );
-    }
+		List<BehaviorDescr> behaviors = pattern.getBehaviors();
+		assertNotNull(behaviors);
+		assertEquals(1, behaviors.size());
+		SlidingWindowDescr descr = (SlidingWindowDescr) behaviors.get(0);
+		assertEquals("length", descr.getText());
+		assertEquals("length", descr.getType());
+		assertEquals("10", descr.getParameters());
+	}
 
 	public void testNesting() throws Exception {
 		parseResource("compilation_unit", "compilation_unit",
@@ -3263,4 +3315,5 @@
 
 		assertEquals(cleanExpected, cleanActual);
 	}
+
 }

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/TestDRL.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/TestDRL.java	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/TestDRL.java	2008-11-25 18:08:44 UTC (rev 24099)
@@ -1,24 +1,23 @@
 package org.drools.lang;
 
-import java.io.IOException;
-import java.io.PipedInputStream;
-import java.io.PipedOutputStream;
-import java.io.PrintStream;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
 import junit.framework.TestCase;
+import java.io.*;
+import java.lang.reflect.*;
+import org.antlr.runtime.*;
+import org.antlr.runtime.tree.*;
+import org.drools.base.evaluators.EvaluatorRegistry;
 
-import org.antlr.runtime.ANTLRFileStream;
-import org.antlr.runtime.ANTLRStringStream;
-import org.antlr.runtime.CharStream;
-import org.antlr.runtime.CommonTokenStream;
-import org.antlr.runtime.tree.CommonTree;
-
 public class TestDRL extends TestCase {
 	String stdout;
 	String stderr;
 
+	protected void setUp() throws Exception {
+		super.setUp();
+		
+		// initializes pluggable operators
+		new EvaluatorRegistry();
+	}
+
 	public void testPackage_statement1() throws Exception {
 		// test input: "package foo"
 		Object retval = execParser("package_statement", "package foo", false);
@@ -37,7 +36,7 @@
 		assertEquals("testing rule "+"package_statement", expecting, actual);
 	}
 
-	public void testCompilation_unit3() throws Exception {
+	public void testCompilation_unit1() throws Exception {
 		// test input: ""
 		Object retval = execParser("compilation_unit", "", false);
 		Object actual = examineParserExecResult(8, retval);
@@ -46,7 +45,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit4() throws Exception {
+	public void testCompilation_unit2() throws Exception {
 		// test input: "package foo; import com.foo.Bar; import com.foo.Baz;"
 		Object retval = execParser("compilation_unit", "package foo; import com.foo.Bar; import com.foo.Baz;", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -55,7 +54,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit5() throws Exception {
+	public void testCompilation_unit3() throws Exception {
 		// test input: "rule empty \n\nthen\n  \nend"
 		Object retval = execParser("compilation_unit", "rule empty \n\nthen\n  \nend", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -64,16 +63,16 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit6() throws Exception {
-		// test input: "#the purpose of this is to see what happens when we have some partially damaged syntax\n#as the IDE uses the parsers AST to work out completion suggestions.\npackage test\n\n\nrule simple_rule \n  when\n    foo3 : Bar(\n\n"
-		Object retval = execParser("compilation_unit", "#the purpose of this is to see what happens when we have some partially damaged syntax\n#as the IDE uses the parsers AST to work out completion suggestions.\npackage test\n\n\nrule simple_rule \n  when\n    foo3 : Bar(\n\n", false);
+	public void testCompilation_unit4() throws Exception {
+		// test input: "#the purpose of this is to see what happens when we have some partially damaged syntax\n#as the IDE uses the parsers AST to work out completion suggestions.\npackage test\n\n\nrule simple_rule \n  when\n    foo3 : Bar(\n"
+		Object retval = execParser("compilation_unit", "#the purpose of this is to see what happens when we have some partially damaged syntax\n#as the IDE uses the parsers AST to work out completion suggestions.\npackage test\n\n\nrule simple_rule \n  when\n    foo3 : Bar(\n", false);
 		Object actual = examineParserExecResult(28, retval);
 		Object expecting = "FAIL";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit7() throws Exception {
+	public void testCompilation_unit5() throws Exception {
 		// test input: "package test.templates\n\ntemplate Cheese\n\tString \tname\n\tInteger age\nend\n\ntemplate \"Wine\"\n\tString \t\tname\n\tString \t\tyear\n\tString[] \taccolades\nend\n\n\nrule \"a rule\"\n  when\n\tCheese(name == \"Stilton\", age==2001)\n\tWine(name == \"Grange\", age == \"1978\", accolades contains \"world champion\")\n  then\n  \tbaz();\nend"
 		Object retval = execParser("compilation_unit", "package test.templates\n\ntemplate Cheese\n\tString \tname\n\tInteger age\nend\n\ntemplate \"Wine\"\n\tString \t\tname\n\tString \t\tyear\n\tString[] \taccolades\nend\n\n\nrule \"a rule\"\n  when\n\tCheese(name == \"Stilton\", age==2001)\n\tWine(name == \"Grange\", age == \"1978\", accolades contains \"world champion\")\n  then\n  \tbaz();\nend", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -82,7 +81,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit8() throws Exception {
+	public void testCompilation_unit6() throws Exception {
 		// test input: "package foo\n\nrule rule_one \n  when\n  \tFoo()\n  then\n  \t if (speed > speedLimit ? true : false;)\n     pullEmOver();\nend"
 		Object retval = execParser("compilation_unit", "package foo\n\nrule rule_one \n  when\n  \tFoo()\n  then\n  \t if (speed > speedLimit ? true : false;)\n     pullEmOver();\nend", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -91,7 +90,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit9() throws Exception {
+	public void testCompilation_unit7() throws Exception {
 		// test input: "package foo\n\nfunction String[] yourFunction(String args[]) {\n     baz();\n}\n\nrule \"new rule\"\n\n\twhen\n\t\tSomething()\n\tthen\n\t\tyourFunction(new String[3] {\"a\",\"b\",\"c\"});\n\t\t\nend"
 		Object retval = execParser("compilation_unit", "package foo\n\nfunction String[] yourFunction(String args[]) {\n     baz();\n}\n\nrule \"new rule\"\n\n\twhen\n\t\tSomething()\n\tthen\n\t\tyourFunction(new String[3] {\"a\",\"b\",\"c\"});\n\t\t\nend", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -100,16 +99,16 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit10() throws Exception {
-		// test input: "\nrule almost_empty \n  when\n  then\nend"
-		Object retval = execParser("compilation_unit", "\nrule almost_empty \n  when\n  then\nend", false);
+	public void testCompilation_unit8() throws Exception {
+		// test input: "rule almost_empty \n  when\n  then\nend"
+		Object retval = execParser("compilation_unit", "rule almost_empty \n  when\n  then\nend", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (rule almost_empty when VT_AND_IMPLICIT then\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit11() throws Exception {
+	public void testCompilation_unit9() throws Exception {
 		// test input: "rule \"quoted string name\"\n  when\n  then\nend"
 		Object retval = execParser("compilation_unit", "rule \"quoted string name\"\n  when\n  then\nend", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -118,43 +117,43 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit12() throws Exception {
-		// test input: "\nrule rule1 \n  no-loop false\n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend"
-		Object retval = execParser("compilation_unit", "\nrule rule1 \n  no-loop false\n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend", false);
+	public void testCompilation_unit10() throws Exception {
+		// test input: "rule rule1 \n  no-loop false\n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend"
+		Object retval = execParser("compilation_unit", "rule rule1 \n  no-loop false\n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (rule rule1 (VT_RULE_ATTRIBUTES (no-loop false)) when (VT_AND_IMPLICIT (not (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Cheese) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (== \"stilton\")))))) then\n\tfunky();\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit13() throws Exception {
-		// test input: "\nrule rule1 \n  auto-focus true\n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend"
-		Object retval = execParser("compilation_unit", "\nrule rule1 \n  auto-focus true\n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend", false);
+	public void testCompilation_unit11() throws Exception {
+		// test input: "rule rule1 \n  auto-focus true\n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend"
+		Object retval = execParser("compilation_unit", "rule rule1 \n  auto-focus true\n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (rule rule1 (VT_RULE_ATTRIBUTES (auto-focus true)) when (VT_AND_IMPLICIT (not (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Cheese) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (== \"stilton\")))))) then\n\tfunky();\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit14() throws Exception {
-		// test input: "\nrule rule1 \n  ruleflow-group \"a group\"\n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend"
-		Object retval = execParser("compilation_unit", "\nrule rule1 \n  ruleflow-group \"a group\"\n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend", false);
+	public void testCompilation_unit12() throws Exception {
+		// test input: "rule rule1 \n  ruleflow-group \"a group\"\n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend"
+		Object retval = execParser("compilation_unit", "rule rule1 \n  ruleflow-group \"a group\"\n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (rule rule1 (VT_RULE_ATTRIBUTES (ruleflow-group \"a group\")) when (VT_AND_IMPLICIT (not (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Cheese) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (== \"stilton\")))))) then\n\tfunky();\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit15() throws Exception {
-		// test input: "\n\nrule myrule \n  when\n  then\n  \tint i = 0;\n\ti = 1;\n\ti / 1;\n\ti == 1;\n\ti(i);\n\ti = 'i';\n\ti.i.i;\n\ti\\i;\n\ti<i;\n\ti>i;\n\ti=\"i\";\t\n\t++i;\n\ti++;\n\t--i;\n\ti--;\n\ti += i;\n\ti -= i;\n\ti *= i;\n\ti /= i;\n\tint i = 5;\n\tfor(int j; j<i; ++j) {\n\t  System.out.println(j);\n\t}\t\n\tObject o = new String(\"Hello\");\n\tString s = (String) o;\t\n\t\nend"
-		Object retval = execParser("compilation_unit", "\n\nrule myrule \n  when\n  then\n  \tint i = 0;\n\ti = 1;\n\ti / 1;\n\ti == 1;\n\ti(i);\n\ti = 'i';\n\ti.i.i;\n\ti\\i;\n\ti<i;\n\ti>i;\n\ti=\"i\";\t\n\t++i;\n\ti++;\n\t--i;\n\ti--;\n\ti += i;\n\ti -= i;\n\ti *= i;\n\ti /= i;\n\tint i = 5;\n\tfor(int j; j<i; ++j) {\n\t  System.out.println(j);\n\t}\t\n\tObject o = new String(\"Hello\");\n\tString s = (String) o;\t\n\t\nend", false);
+	public void testCompilation_unit13() throws Exception {
+		// test input: "\nrule myrule \n  when\n  then\n  \tint i = 0;\n\ti = 1;\n\ti / 1;\n\ti == 1;\n\ti(i);\n\ti = 'i';\n\ti.i.i;\n\ti\\i;\n\ti<i;\n\ti>i;\n\ti=\"i\";\t\n\t++i;\n\ti++;\n\t--i;\n\ti--;\n\ti += i;\n\ti -= i;\n\ti *= i;\n\ti /= i;\n\tint i = 5;\n\tfor(int j; j<i; ++j) {\n\t  System.out.println(j);\n\t}\t\n\tObject o = new String(\"Hello\");\n\tString s = (String) o;\t\n\t\nend"
+		Object retval = execParser("compilation_unit", "\nrule myrule \n  when\n  then\n  \tint i = 0;\n\ti = 1;\n\ti / 1;\n\ti == 1;\n\ti(i);\n\ti = 'i';\n\ti.i.i;\n\ti\\i;\n\ti<i;\n\ti>i;\n\ti=\"i\";\t\n\t++i;\n\ti++;\n\t--i;\n\ti--;\n\ti += i;\n\ti -= i;\n\ti *= i;\n\ti /= i;\n\tint i = 5;\n\tfor(int j; j<i; ++j) {\n\t  System.out.println(j);\n\t}\t\n\tObject o = new String(\"Hello\");\n\tString s = (String) o;\t\n\t\nend", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (rule myrule when VT_AND_IMPLICIT then\n  \tint i = 0;\n\ti = 1;\n\ti / 1;\n\ti == 1;\n\ti(i);\n\ti = 'i';\n\ti.i.i;\n\ti\\i;\n\ti<i;\n\ti>i;\n\ti=\"i\";\t\n\t++i;\n\ti++;\n\t--i;\n\ti--;\n\ti += i;\n\ti -= i;\n\ti *= i;\n\ti /= i;\n\tint i = 5;\n\tfor(int j; j<i; ++j) {\n\t  System.out.println(j);\n\t}\t\n\tObject o = new String(\"Hello\");\n\tString s = (String) o;\t\n\t\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit16() throws Exception {
+	public void testCompilation_unit14() throws Exception {
 		// test input: "#check that it can handle true/false literals, and \n#negative numbers\nrule simple_rule \n  when\n\tFoo(bar == false)\n\tFoo(boo > -42)\n\tFoo(boo > -42.42)\n  then\n\tcons();\nend"
 		Object retval = execParser("compilation_unit", "#check that it can handle true/false literals, and \n#negative numbers\nrule simple_rule \n  when\n\tFoo(bar == false)\n\tFoo(boo > -42)\n\tFoo(boo > -42.42)\n  then\n\tcons();\nend", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -163,7 +162,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit17() throws Exception {
+	public void testCompilation_unit15() throws Exception {
 		// test input: "package org.drools.test;\n \nimport org.drools.Cheese;\n \nrule \"simple rule\"\n    when\n        Cheese( )\n    then\nend "
 		Object retval = execParser("compilation_unit", "package org.drools.test;\n \nimport org.drools.Cheese;\n \nrule \"simple rule\"\n    when\n        Cheese( )\n    then\nend ", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -172,43 +171,43 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit18() throws Exception {
-		// test input: "\nrule blah\n\n when \n\n\tCol1() from something.doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\n\tCol2()\n then\n\tpartay();\nend\t"
-		Object retval = execParser("compilation_unit", "\nrule blah\n\n when \n\n\tCol1() from something.doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\n\tCol2()\n then\n\tpartay();\nend\t", false);
+	public void testCompilation_unit16() throws Exception {
+		// test input: "rule blah\n\n when \n\n\tCol1() from something.doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\n\tCol2()\n then\n\tpartay();\nend\t"
+		Object retval = execParser("compilation_unit", "rule blah\n\n when \n\n\tCol1() from something.doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\n\tCol2()\n then\n\tpartay();\nend\t", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (rule blah when (VT_AND_IMPLICIT (from (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Col1))) (VT_FROM_SOURCE something (. doIt ( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Col2)))) then\n\tpartay();\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit19() throws Exception {
-		// test input: "\nrule blah\n\n when \n\n\tCol1() from doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\n\tCol2()\n then\n\tpartay();\nend\t"
-		Object retval = execParser("compilation_unit", "\nrule blah\n\n when \n\n\tCol1() from doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\n\tCol2()\n then\n\tpartay();\nend\t", false);
+	public void testCompilation_unit17() throws Exception {
+		// test input: "rule blah\n\n when \n\n\tCol1() from doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\n\tCol2()\n then\n\tpartay();\nend\t"
+		Object retval = execParser("compilation_unit", "rule blah\n\n when \n\n\tCol1() from doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\n\tCol2()\n then\n\tpartay();\nend\t", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (rule blah when (VT_AND_IMPLICIT (from (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Col1))) (VT_FROM_SOURCE doIt ( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] ))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Col2)))) then\n\tpartay();\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit20() throws Exception {
-		// test input: "\nrule blah\n\n when \n\n\tCol1() from something.doIt\n\tCol2()\n then\n\tpartay();\nend\t"
-		Object retval = execParser("compilation_unit", "\nrule blah\n\n when \n\n\tCol1() from something.doIt\n\tCol2()\n then\n\tpartay();\nend\t", false);
+	public void testCompilation_unit18() throws Exception {
+		// test input: "rule blah\n\n when \n\n\tCol1() from something.doIt\n\tCol2()\n then\n\tpartay();\nend\t"
+		Object retval = execParser("compilation_unit", "rule blah\n\n when \n\n\tCol1() from something.doIt\n\tCol2()\n then\n\tpartay();\nend\t", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (rule blah when (VT_AND_IMPLICIT (from (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Col1))) (VT_FROM_SOURCE something (. doIt))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Col2)))) then\n\tpartay();\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit21() throws Exception {
-		// test input: "\nrule blah\n\n when \n\n\tCol1() from something.doIt[\"key\"]\n\tCol2()\n then\n\tpartay();\nend\t"
-		Object retval = execParser("compilation_unit", "\nrule blah\n\n when \n\n\tCol1() from something.doIt[\"key\"]\n\tCol2()\n then\n\tpartay();\nend\t", false);
+	public void testCompilation_unit19() throws Exception {
+		// test input: "rule blah\n\n when \n\n\tCol1() from something.doIt[\"key\"]\n\tCol2()\n then\n\tpartay();\nend\t"
+		Object retval = execParser("compilation_unit", "rule blah\n\n when \n\n\tCol1() from something.doIt[\"key\"]\n\tCol2()\n then\n\tpartay();\nend\t", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (rule blah when (VT_AND_IMPLICIT (from (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Col1))) (VT_FROM_SOURCE something (. doIt [\"key\"]))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Col2)))) then\n\tpartay();\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit22() throws Exception {
+	public void testCompilation_unit20() throws Exception {
 		// test input: "rule blah\n when \n\tCol1() from doIt1( foo,bar,42,\"hello\",{ a => \"b\"}, [a, \"b\", 42] )\n\t            .doIt2(bar, [a, \"b\", 42]).field[\"key\"]\n\tCol2()\n then\n\tpartay();\nend\t"
 		Object retval = execParser("compilation_unit", "rule blah\n when \n\tCol1() from doIt1( foo,bar,42,\"hello\",{ a => \"b\"}, [a, \"b\", 42] )\n\t            .doIt2(bar, [a, \"b\", 42]).field[\"key\"]\n\tCol2()\n then\n\tpartay();\nend\t", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -217,16 +216,16 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit23() throws Exception {
-		// test input: "\nrule simple_rule \n  when\n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n  then\n  if ( a == b ) {\n    assert( foo3 );\n  } else {\n    retract( foo4 );\n  } \n  System.out.println( a4 );\nend"
-		Object retval = execParser("compilation_unit", "\nrule simple_rule \n  when\n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n  then\n  if ( a == b ) {\n    assert( foo3 );\n  } else {\n    retract( foo4 );\n  } \n  System.out.println( a4 );\nend", false);
+	public void testCompilation_unit21() throws Exception {
+		// test input: "rule simple_rule \n  when\n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n  then\n  if ( a == b ) {\n    assert( foo3 );\n  } else {\n    retract( foo4 );\n  } \n  System.out.println( a4 );\nend"
+		Object retval = execParser("compilation_unit", "rule simple_rule \n  when\n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n  then\n  if ( a == b ) {\n    assert( foo3 );\n  } else {\n    retract( foo4 );\n  } \n  System.out.println( a4 );\nend", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (rule simple_rule when (VT_AND_IMPLICIT (VT_PATTERN (VT_FACT_BINDING foo3 (VT_FACT (VT_PATTERN_TYPE Bar) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT a)) (== 3))))) (VT_PATTERN (VT_FACT_BINDING foo4 (VT_FACT (VT_PATTERN_TYPE Bar) (VT_BIND_FIELD a4 (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT a)) (== 4)))))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Baz)))) then\n  if ( a == b ) {\n    assert( foo3 );\n  } else {\n    retract( foo4 );\n  } \n  System.out.println( a4 );\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit24() throws Exception {
+	public void testCompilation_unit22() throws Exception {
 		// test input: "#this is for showing off all the new multi restriction stuff\n\n\n\n\nrule simple_rule \n  when\n  \tPerson(age > 30 && < 40)\n  \tVehicle(type == \"sedan\" || == \"wagon\", age < 3)\n  then\n\tconsequence();\nend"
 		Object retval = execParser("compilation_unit", "#this is for showing off all the new multi restriction stuff\n\n\n\n\nrule simple_rule \n  when\n  \tPerson(age > 30 && < 40)\n  \tVehicle(type == \"sedan\" || == \"wagon\", age < 3)\n  then\n\tconsequence();\nend", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -235,7 +234,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit25() throws Exception {
+	public void testCompilation_unit23() throws Exception {
 		// test input: "package la\n\n\nrule simple_rule \n  when\n  \tBaz()\n  then\n  \t//woot\n  \tfirst\n  \t\n  \t#\n  \t\n  \t/* lala\n  \t\n  \t*/\n  \tsecond  \nend"
 		Object retval = execParser("compilation_unit", "package la\n\n\nrule simple_rule \n  when\n  \tBaz()\n  then\n  \t//woot\n  \tfirst\n  \t\n  \t#\n  \t\n  \t/* lala\n  \t\n  \t*/\n  \tsecond  \nend", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -244,25 +243,25 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit26() throws Exception {
-		// test input: "\nrule simple_rule \n  when\n    foo3 : Bar(a==3) ; foo4 : Bar(a4:a==4) ; Baz()\n  then\n  if ( a == b ) {\n    assert( foo3 );\n  } else {\n    retract( foo4 );\n  } \n  System.out.println( a4 );\nend"
-		Object retval = execParser("compilation_unit", "\nrule simple_rule \n  when\n    foo3 : Bar(a==3) ; foo4 : Bar(a4:a==4) ; Baz()\n  then\n  if ( a == b ) {\n    assert( foo3 );\n  } else {\n    retract( foo4 );\n  } \n  System.out.println( a4 );\nend", false);
+	public void testCompilation_unit24() throws Exception {
+		// test input: "rule simple_rule \n  when\n    foo3 : Bar(a==3) ; foo4 : Bar(a4:a==4) ; Baz()\n  then\n  if ( a == b ) {\n    assert( foo3 );\n  } else {\n    retract( foo4 );\n  } \n  System.out.println( a4 );\nend"
+		Object retval = execParser("compilation_unit", "rule simple_rule \n  when\n    foo3 : Bar(a==3) ; foo4 : Bar(a4:a==4) ; Baz()\n  then\n  if ( a == b ) {\n    assert( foo3 );\n  } else {\n    retract( foo4 );\n  } \n  System.out.println( a4 );\nend", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (rule simple_rule when (VT_AND_IMPLICIT (VT_PATTERN (VT_FACT_BINDING foo3 (VT_FACT (VT_PATTERN_TYPE Bar) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT a)) (== 3))))) (VT_PATTERN (VT_FACT_BINDING foo4 (VT_FACT (VT_PATTERN_TYPE Bar) (VT_BIND_FIELD a4 (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT a)) (== 4)))))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Baz)))) then\n  if ( a == b ) {\n    assert( foo3 );\n  } else {\n    retract( foo4 );\n  } \n  System.out.println( a4 );\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit27() throws Exception {
-		// test input: "\nrule simple_rule \n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend"
-		Object retval = execParser("compilation_unit", "\nrule simple_rule \n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend", false);
+	public void testCompilation_unit25() throws Exception {
+		// test input: "rule simple_rule \n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend"
+		Object retval = execParser("compilation_unit", "rule simple_rule \n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (rule simple_rule when (VT_AND_IMPLICIT (not (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Cheese) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (== \"stilton\")))))) then\n\tfunky();\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit28() throws Exception {
+	public void testCompilation_unit26() throws Exception {
 		// test input: "package HR1\n\nimport function abd.def.x\nimport function qed.wah.*\n\nrule simple_rule \n  when  \t\t  \t\n  \tnot ( Cheese(type == \"stilton\") )\n  \texists ( Foo() )\n  then\n\tfunky();\nend"
 		Object retval = execParser("compilation_unit", "package HR1\n\nimport function abd.def.x\nimport function qed.wah.*\n\nrule simple_rule \n  when  \t\t  \t\n  \tnot ( Cheese(type == \"stilton\") )\n  \texists ( Foo() )\n  then\n\tfunky();\nend", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -271,7 +270,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit29() throws Exception {
+	public void testCompilation_unit27() throws Exception {
 		// test input: "package HR1\n\nrule simple_rule \n  when  \t\t  \t\n  \tnot ( Cheese(type == \"stilton\") )\n  \texists ( Foo() )\n  then\n\tfunky();\nend"
 		Object retval = execParser("compilation_unit", "package HR1\n\nrule simple_rule \n  when  \t\t  \t\n  \tnot ( Cheese(type == \"stilton\") )\n  \texists ( Foo() )\n  then\n\tfunky();\nend", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -280,7 +279,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit30() throws Exception {
+	public void testCompilation_unit28() throws Exception {
 		// test input: "package HR2\n\nrule simple_rule \n  when  \t\t  \t\n  \ta : (not ( Cheese(type == \"stilton\") ))\n  \texists ( Foo() )\n  then\n\tfunky();\nend"
 		Object retval = execParser("compilation_unit", "package HR2\n\nrule simple_rule \n  when  \t\t  \t\n  \ta : (not ( Cheese(type == \"stilton\") ))\n  \texists ( Foo() )\n  then\n\tfunky();\nend", false);
 		Object actual = examineParserExecResult(28, retval);
@@ -289,25 +288,25 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit31() throws Exception {
-		// test input: "\n\nquery \"simple_query\" \n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n\t\nend"
-		Object retval = execParser("compilation_unit", "\n\nquery \"simple_query\" \n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n\t\nend", false);
+	public void testCompilation_unit29() throws Exception {
+		// test input: "\nquery \"simple_query\" \n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n\t\nend"
+		Object retval = execParser("compilation_unit", "\nquery \"simple_query\" \n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n\t\nend", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (query \"simple_query\" (VT_AND_IMPLICIT (VT_PATTERN (VT_FACT_BINDING foo3 (VT_FACT (VT_PATTERN_TYPE Bar) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT a)) (== 3))))) (VT_PATTERN (VT_FACT_BINDING foo4 (VT_FACT (VT_PATTERN_TYPE Bar) (VT_BIND_FIELD a4 (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT a)) (== 4)))))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Baz)))) end))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit32() throws Exception {
-		// test input: "\npackage foo\n\nrule bar\n\twhen\n\t\tBaz()\n\tthen\n\t\tBoo()\nend\n\nquery \"simple_query\" \n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n\t\nend\n\nrule bar2\n\twhen\n\t\tBaz()\n\tthen\n\t\tBoo()\nend\n\nquery \"simple_query2\" \n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n\t\nend\n\t"
-		Object retval = execParser("compilation_unit", "\npackage foo\n\nrule bar\n\twhen\n\t\tBaz()\n\tthen\n\t\tBoo()\nend\n\nquery \"simple_query\" \n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n\t\nend\n\nrule bar2\n\twhen\n\t\tBaz()\n\tthen\n\t\tBoo()\nend\n\nquery \"simple_query2\" \n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n\t\nend\n\t", false);
+	public void testCompilation_unit30() throws Exception {
+		// test input: "package foo\n\nrule bar\n\twhen\n\t\tBaz()\n\tthen\n\t\tBoo()\nend\n\nquery \"simple_query\" \n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n\t\nend\n\nrule bar2\n\twhen\n\t\tBaz()\n\tthen\n\t\tBoo()\nend\n\nquery \"simple_query2\" \n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n\t\nend\n\t"
+		Object retval = execParser("compilation_unit", "package foo\n\nrule bar\n\twhen\n\t\tBaz()\n\tthen\n\t\tBoo()\nend\n\nquery \"simple_query\" \n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n\t\nend\n\nrule bar2\n\twhen\n\t\tBaz()\n\tthen\n\t\tBoo()\nend\n\nquery \"simple_query2\" \n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n\t\nend\n\t", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (package (VT_PACKAGE_ID foo)) (rule bar when (VT_AND_IMPLICIT (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Baz)))) then\n\t\tBoo()\nend) (query \"simple_query\" (VT_AND_IMPLICIT (VT_PATTERN (VT_FACT_BINDING foo3 (VT_FACT (VT_PATTERN_TYPE Bar) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT a)) (== 3))))) (VT_PATTERN (VT_FACT_BINDING foo4 (VT_FACT (VT_PATTERN_TYPE Bar) (VT_BIND_FIELD a4 (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT a)) (== 4)))))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Baz)))) end) (rule bar2 when (VT_AND_IMPLICIT (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Baz)))) then\n\t\tBoo()\nend) (query \"simple_query2\" (VT_AND_IMPLICIT (VT_PATTERN (VT_FACT_BINDING foo3 (VT_FACT (VT_PATTERN_TYPE Bar) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT a)) (== 3))))) (VT_PATTERN (VT_FACT_BINDING foo4 (VT_FACT (VT_PATTERN_TYPE Bar) (VT_BIND_FIELD a4 (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT a)) (== 4)))))) (VT_PATTERN (VT_FACT (VT_P!
 ATTERN_TYPE Baz)))) end))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit33() throws Exception {
+	public void testCompilation_unit31() throws Exception {
 		// test input: "package org.drools.test;\n\nimport org.drools.integrationtests.Cheese;\n\nrule \"Like Stilton\"\n    when\n        Cheese( t:type == \"stilton\" )\n    then\n        System.out.println(\"I like \" + t);\nend    \n\nrule \"Like Cheddar\"\n    when\n        Cheese( t:type == \"cheddar\" )\n    then\n        System.out.println(\"I like \" + t );\nend    "
 		Object retval = execParser("compilation_unit", "package org.drools.test;\n\nimport org.drools.integrationtests.Cheese;\n\nrule \"Like Stilton\"\n    when\n        Cheese( t:type == \"stilton\" )\n    then\n        System.out.println(\"I like \" + t);\nend    \n\nrule \"Like Cheddar\"\n    when\n        Cheese( t:type == \"cheddar\" )\n    then\n        System.out.println(\"I like \" + t );\nend    ", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -316,7 +315,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit34() throws Exception {
+	public void testCompilation_unit32() throws Exception {
 		// test input: "package org.drools.test;\n\nimport org.drools.Cheese;\n\nrule \"like cheddar\"\n    when\n        Cheese( $type:type )\n    then\n        System.out.println(\"I like \" + $type);\nend    "
 		Object retval = execParser("compilation_unit", "package org.drools.test;\n\nimport org.drools.Cheese;\n\nrule \"like cheddar\"\n    when\n        Cheese( $type:type )\n    then\n        System.out.println(\"I like \" + $type);\nend    ", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -325,7 +324,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit35() throws Exception {
+	public void testCompilation_unit33() throws Exception {
 		// test input: "package org.drools.test;\n\nimport org.drools.Cheese;\nimport org.drools.Person;\n\nrule \"Who likes Stilton\"\n    when\n        Cheese($type : type == \"stilton\")\n        $person : Person($name : name == \"bob\", likes == $type)        \n    then\n        System.out.println( $name + \" likes \" + $type);\nend    "
 		Object retval = execParser("compilation_unit", "package org.drools.test;\n\nimport org.drools.Cheese;\nimport org.drools.Person;\n\nrule \"Who likes Stilton\"\n    when\n        Cheese($type : type == \"stilton\")\n        $person : Person($name : name == \"bob\", likes == $type)        \n    then\n        System.out.println( $name + \" likes \" + $type);\nend    ", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -334,43 +333,43 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit36() throws Exception {
-		// test input: "\nimport org.drools.Person\n\nrule simple_rule \n  when\n\tPerson(name == \"mark\") or \n\t( Person(type == \"fan\") and Cheese(type == \"green\") )\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend"
-		Object retval = execParser("compilation_unit", "\nimport org.drools.Person\n\nrule simple_rule \n  when\n\tPerson(name == \"mark\") or \n\t( Person(type == \"fan\") and Cheese(type == \"green\") )\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend", false);
+	public void testCompilation_unit34() throws Exception {
+		// test input: "import org.drools.Person\n\nrule simple_rule \n  when\n\tPerson(name == \"mark\") or \n\t( Person(type == \"fan\") and Cheese(type == \"green\") )\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend"
+		Object retval = execParser("compilation_unit", "import org.drools.Person\n\nrule simple_rule \n  when\n\tPerson(name == \"mark\") or \n\t( Person(type == \"fan\") and Cheese(type == \"green\") )\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (import (VT_IMPORT_ID org drools Person)) (rule simple_rule when (VT_AND_IMPLICIT (or (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT name)) (== \"mark\")))) (and (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (== \"fan\")))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Cheese) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (== \"green\"))))))) then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit37() throws Exception {
-		// test input: "\nimport org.drools.Person\n\nrule simple_rule \n  when\n    Person(name == \"mark\") && Cheese(type == \"stilton\")\n    Person(name == \"mark\") || Cheese(type == \"stilton\")\n  then\n\tSystem.out.println( \"Mark and Michael\" );\nend"
-		Object retval = execParser("compilation_unit", "\nimport org.drools.Person\n\nrule simple_rule \n  when\n    Person(name == \"mark\") && Cheese(type == \"stilton\")\n    Person(name == \"mark\") || Cheese(type == \"stilton\")\n  then\n\tSystem.out.println( \"Mark and Michael\" );\nend", false);
+	public void testCompilation_unit35() throws Exception {
+		// test input: "import org.drools.Person\n\nrule simple_rule \n  when\n    Person(name == \"mark\") && Cheese(type == \"stilton\")\n    Person(name == \"mark\") || Cheese(type == \"stilton\")\n  then\n\tSystem.out.println( \"Mark and Michael\" );\nend"
+		Object retval = execParser("compilation_unit", "import org.drools.Person\n\nrule simple_rule \n  when\n    Person(name == \"mark\") && Cheese(type == \"stilton\")\n    Person(name == \"mark\") || Cheese(type == \"stilton\")\n  then\n\tSystem.out.println( \"Mark and Michael\" );\nend", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (import (VT_IMPORT_ID org drools Person)) (rule simple_rule when (VT_AND_IMPLICIT (&& (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT name)) (== \"mark\")))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Cheese) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (== \"stilton\"))))) (|| (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT name)) (== \"mark\")))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Cheese) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (== \"stilton\")))))) then\n\tSystem.out.println( \"Mark and Michael\" );\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit38() throws Exception {
-		// test input: "\nimport org.drools.Person\n\nrule simple_rule \n  when\n\tfoo :  ( Person(name == \"mark\") or Person(type == \"fan\") ) \n\tCheese(type == \"green\")\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend"
-		Object retval = execParser("compilation_unit", "\nimport org.drools.Person\n\nrule simple_rule \n  when\n\tfoo :  ( Person(name == \"mark\") or Person(type == \"fan\") ) \n\tCheese(type == \"green\")\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend", false);
+	public void testCompilation_unit36() throws Exception {
+		// test input: "import org.drools.Person\n\nrule simple_rule \n  when\n\tfoo :  ( Person(name == \"mark\") or Person(type == \"fan\") ) \n\tCheese(type == \"green\")\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend"
+		Object retval = execParser("compilation_unit", "import org.drools.Person\n\nrule simple_rule \n  when\n\tfoo :  ( Person(name == \"mark\") or Person(type == \"fan\") ) \n\tCheese(type == \"green\")\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (import (VT_IMPORT_ID org drools Person)) (rule simple_rule when (VT_AND_IMPLICIT (VT_PATTERN (VT_FACT_BINDING foo (or (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT name)) (== \"mark\"))) (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (== \"fan\")))))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Cheese) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (== \"green\"))))) then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit39() throws Exception {
-		// test input: "\n\nrule simple_rule \n  when\n\tfoo : ( Person(name == \"mark\") \n\t\tor \n\t\tPerson(type == \"fan\") )\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend"
-		Object retval = execParser("compilation_unit", "\n\nrule simple_rule \n  when\n\tfoo : ( Person(name == \"mark\") \n\t\tor \n\t\tPerson(type == \"fan\") )\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend", false);
+	public void testCompilation_unit37() throws Exception {
+		// test input: "\nrule simple_rule \n  when\n\tfoo : ( Person(name == \"mark\") \n\t\tor \n\t\tPerson(type == \"fan\") )\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend"
+		Object retval = execParser("compilation_unit", "\nrule simple_rule \n  when\n\tfoo : ( Person(name == \"mark\") \n\t\tor \n\t\tPerson(type == \"fan\") )\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (rule simple_rule when (VT_AND_IMPLICIT (VT_PATTERN (VT_FACT_BINDING foo (or (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT name)) (== \"mark\"))) (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (== \"fan\"))))))) then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit40() throws Exception {
+	public void testCompilation_unit38() throws Exception {
 		// test input: "rule simple_rule \n  when\n\tfoo : ( \n\t\tPerson(name == \"mark\") or Person(type == \"fan\") \n\t\t)\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend"
 		Object retval = execParser("compilation_unit", "rule simple_rule \n  when\n\tfoo : ( \n\t\tPerson(name == \"mark\") or Person(type == \"fan\") \n\t\t)\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -379,52 +378,52 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit41() throws Exception {
-		// test input: "\nrule simple_rule \n  when\n\t ( (not Foo(x==\"a\") or Foo(x==\"y\") ) and ( Shoes() or Butt() ) )\n  then\n\tgo wild\nend"
-		Object retval = execParser("compilation_unit", "\nrule simple_rule \n  when\n\t ( (not Foo(x==\"a\") or Foo(x==\"y\") ) and ( Shoes() or Butt() ) )\n  then\n\tgo wild\nend", false);
+	public void testCompilation_unit39() throws Exception {
+		// test input: "rule simple_rule \n  when\n\t ( (not Foo(x==\"a\") or Foo(x==\"y\") ) and ( Shoes() or Butt() ) )\n  then\n\tgo wild\nend"
+		Object retval = execParser("compilation_unit", "rule simple_rule \n  when\n\t ( (not Foo(x==\"a\") or Foo(x==\"y\") ) and ( Shoes() or Butt() ) )\n  then\n\tgo wild\nend", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (rule simple_rule when (VT_AND_IMPLICIT (and (or (not (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Foo) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT x)) (== \"a\"))))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Foo) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT x)) (== \"y\"))))) (or (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Shoes))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Butt)))))) then\n\tgo wild\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit42() throws Exception {
-		// test input: "\nrule simple_rule \n  when\n\teval(abc(\"foo\") + 5)\n\tFoo()\n\teval(qed())\n\tBar()\n  then\n\tKapow\n\tPoof\n\t\nend"
-		Object retval = execParser("compilation_unit", "\nrule simple_rule \n  when\n\teval(abc(\"foo\") + 5)\n\tFoo()\n\teval(qed())\n\tBar()\n  then\n\tKapow\n\tPoof\n\t\nend", false);
+	public void testCompilation_unit40() throws Exception {
+		// test input: "rule simple_rule \n  when\n\teval(abc(\"foo\") + 5)\n\tFoo()\n\teval(qed())\n\tBar()\n  then\n\tKapow\n\tPoof\n\t\nend"
+		Object retval = execParser("compilation_unit", "rule simple_rule \n  when\n\teval(abc(\"foo\") + 5)\n\tFoo()\n\teval(qed())\n\tBar()\n  then\n\tKapow\n\tPoof\n\t\nend", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (rule simple_rule when (VT_AND_IMPLICIT (eval (abc(\"foo\") + 5)) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Foo))) (eval (qed())) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Bar)))) then\n\tKapow\n\tPoof\n\t\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit43() throws Exception {
-		// test input: "\nrule simple_rule \n  when\n\tFoo()\n\tBar()\n\teval(abc(\"foo\"))\n  then\n\tKapow\n\t\nend"
-		Object retval = execParser("compilation_unit", "\nrule simple_rule \n  when\n\tFoo()\n\tBar()\n\teval(abc(\"foo\"))\n  then\n\tKapow\n\t\nend", false);
+	public void testCompilation_unit41() throws Exception {
+		// test input: "rule simple_rule \n  when\n\tFoo()\n\tBar()\n\teval(abc(\"foo\"))\n  then\n\tKapow\n\t\nend"
+		Object retval = execParser("compilation_unit", "rule simple_rule \n  when\n\tFoo()\n\tBar()\n\teval(abc(\"foo\"))\n  then\n\tKapow\n\t\nend", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (rule simple_rule when (VT_AND_IMPLICIT (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Foo))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Bar))) (eval (abc(\"foo\")))) then\n\tKapow\n\t\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit44() throws Exception {
-		// test input: "\nrule simple_rule \n  when\n\tFoo(name== (a + b))\n  then\n\tKapow\n\t\nend"
-		Object retval = execParser("compilation_unit", "\nrule simple_rule \n  when\n\tFoo(name== (a + b))\n  then\n\tKapow\n\t\nend", false);
+	public void testCompilation_unit42() throws Exception {
+		// test input: "rule simple_rule \n  when\n\tFoo(name== (a + b))\n  then\n\tKapow\n\t\nend"
+		Object retval = execParser("compilation_unit", "rule simple_rule \n  when\n\tFoo(name== (a + b))\n  then\n\tKapow\n\t\nend", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (rule simple_rule when (VT_AND_IMPLICIT (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Foo) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT name)) (== (a + b)))))) then\n\tKapow\n\t\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit45() throws Exception {
-		// test input: "\nrule simple_rule \n  when\n  \tPerson( $age2:age -> ($age2 == $age1+2 ) ) \n  then\n\tfoo bar\nend"
-		Object retval = execParser("compilation_unit", "\nrule simple_rule \n  when\n  \tPerson( $age2:age -> ($age2 == $age1+2 ) ) \n  then\n\tfoo bar\nend", false);
+	public void testCompilation_unit43() throws Exception {
+		// test input: "rule simple_rule \n  when\n  \tPerson( $age2:age -> ($age2 == $age1+2 ) ) \n  then\n\tfoo bar\nend"
+		Object retval = execParser("compilation_unit", "rule simple_rule \n  when\n  \tPerson( $age2:age -> ($age2 == $age1+2 ) ) \n  then\n\tfoo bar\nend", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (rule simple_rule when (VT_AND_IMPLICIT (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Person) (VT_BIND_FIELD $age2 (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT age)))) (-> ($age2 == $age1+2 ))))) then\n\tfoo bar\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit46() throws Exception {
+	public void testCompilation_unit44() throws Exception {
 		// test input: "package org.drools.test;\n\nimport org.drools.Cheese;\n\nglobal java.util.List list;\nglobal java.lang.Integer five;\n\nrule \"not rule test\"\n    when\n        $person : Person( $likes:like )\n        not Cheese( type == $likes )\n    then\n\t\tlist.add( $person );\nend    "
 		Object retval = execParser("compilation_unit", "package org.drools.test;\n\nimport org.drools.Cheese;\n\nglobal java.util.List list;\nglobal java.lang.Integer five;\n\nrule \"not rule test\"\n    when\n        $person : Person( $likes:like )\n        not Cheese( type == $likes )\n    then\n\t\tlist.add( $person );\nend    ", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -433,7 +432,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit47() throws Exception {
+	public void testCompilation_unit45() throws Exception {
 		// test input: "package org.drools.test;\n\nimport org.drools.Cheese;\n\nglobal java.lang.String foo\nglobal java.lang.Integer bar;\n\nrule baz\n    when\n        Cheese( )\n    then\n\nend    "
 		Object retval = execParser("compilation_unit", "package org.drools.test;\n\nimport org.drools.Cheese;\n\nglobal java.lang.String foo\nglobal java.lang.Integer bar;\n\nrule baz\n    when\n        Cheese( )\n    then\n\nend    ", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -442,16 +441,16 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit48() throws Exception {
-		// test input: "\nimport java.lang.String\n\nfunction String functionA(String s, Integer i) {\n\t\n\tfoo();\n\n}\n\nfunction void functionB() {\n\tbar();\t\n}\n\n\nrule something \n\twhen\n\tthen\nend\n\nrule \"one more thing\"\n\twhen\n\tthen\nend\n\n\n\n\t"
-		Object retval = execParser("compilation_unit", "\nimport java.lang.String\n\nfunction String functionA(String s, Integer i) {\n\t\n\tfoo();\n\n}\n\nfunction void functionB() {\n\tbar();\t\n}\n\n\nrule something \n\twhen\n\tthen\nend\n\nrule \"one more thing\"\n\twhen\n\tthen\nend\n\n\n\n\t", false);
+	public void testCompilation_unit46() throws Exception {
+		// test input: "import java.lang.String\n\nfunction String functionA(String s, Integer i) {\n\t\n\tfoo();\n\n}\n\nfunction void functionB() {\n\tbar();\t\n}\n\n\nrule something \n\twhen\n\tthen\nend\n\nrule \"one more thing\"\n\twhen\n\tthen\nend\n\n\n\n\t"
+		Object retval = execParser("compilation_unit", "import java.lang.String\n\nfunction String functionA(String s, Integer i) {\n\t\n\tfoo();\n\n}\n\nfunction void functionB() {\n\tbar();\t\n}\n\n\nrule something \n\twhen\n\tthen\nend\n\nrule \"one more thing\"\n\twhen\n\tthen\nend\n\n\n\n\t", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (import (VT_IMPORT_ID java lang String)) (function (VT_DATA_TYPE String) functionA (VT_PARAM_LIST (VT_DATA_TYPE String) s (VT_DATA_TYPE Integer) i) {\n\t\n\tfoo();\n\n}) (function (VT_DATA_TYPE void) functionB VT_PARAM_LIST {\n\tbar();\t\n}) (rule something when VT_AND_IMPLICIT then\nend) (rule \"one more thing\" when VT_AND_IMPLICIT then\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit49() throws Exception {
+	public void testCompilation_unit47() throws Exception {
 		// test input: "#this starts with a comment\npackage foo.bar\n\n//and another comment\n\n/*\nyet\n\t   another\n   \t\t\t\tstyle\n*/\n\nrule \"test\"\n  when\n  then\nend"
 		Object retval = execParser("compilation_unit", "#this starts with a comment\npackage foo.bar\n\n//and another comment\n\n/*\nyet\n\t   another\n   \t\t\t\tstyle\n*/\n\nrule \"test\"\n  when\n  then\nend", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -460,34 +459,34 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit50() throws Exception {
-		// test input: "\n\n\nrule simple_rule \n\t\t#attributes keywork (and colon) is totally optional\n\t\tsalience 42\n\t\tagenda-group \"my_group\"\n\t\tno-loop \n\t\tduration 42\n\t\tactivation-group \"my_activation_group\"\n\t\tlock-on-active true\n\twhen\n\t\tFoo()\n\tthen\n\t\tbar();\nend"
-		Object retval = execParser("compilation_unit", "\n\n\nrule simple_rule \n\t\t#attributes keywork (and colon) is totally optional\n\t\tsalience 42\n\t\tagenda-group \"my_group\"\n\t\tno-loop \n\t\tduration 42\n\t\tactivation-group \"my_activation_group\"\n\t\tlock-on-active true\n\twhen\n\t\tFoo()\n\tthen\n\t\tbar();\nend", false);
+	public void testCompilation_unit48() throws Exception {
+		// test input: "\n\nrule simple_rule \n\t\t#attributes keywork (and colon) is totally optional\n\t\tsalience 42\n\t\tagenda-group \"my_group\"\n\t\tno-loop \n\t\tduration 42\n\t\tactivation-group \"my_activation_group\"\n\t\tlock-on-active true\n\twhen\n\t\tFoo()\n\tthen\n\t\tbar();\nend"
+		Object retval = execParser("compilation_unit", "\n\nrule simple_rule \n\t\t#attributes keywork (and colon) is totally optional\n\t\tsalience 42\n\t\tagenda-group \"my_group\"\n\t\tno-loop \n\t\tduration 42\n\t\tactivation-group \"my_activation_group\"\n\t\tlock-on-active true\n\twhen\n\t\tFoo()\n\tthen\n\t\tbar();\nend", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (rule simple_rule (VT_RULE_ATTRIBUTES (salience 42) (agenda-group \"my_group\") no-loop (duration 42) (activation-group \"my_activation_group\") (lock-on-active true)) when (VT_AND_IMPLICIT (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Foo)))) then\n\t\tbar();\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit51() throws Exception {
-		// test input: "\n\n\nrule simple_rule \n\tattributes: \n\t\tsalience 42, agenda-group \"my_group\", no-loop,  lock-on-active, duration 42, activation-group \"my_activation_group\"\n\twhen\n\t\tFoo()\n\tthen\n\t\tbar();\nend"
-		Object retval = execParser("compilation_unit", "\n\n\nrule simple_rule \n\tattributes: \n\t\tsalience 42, agenda-group \"my_group\", no-loop,  lock-on-active, duration 42, activation-group \"my_activation_group\"\n\twhen\n\t\tFoo()\n\tthen\n\t\tbar();\nend", false);
+	public void testCompilation_unit49() throws Exception {
+		// test input: "\n\nrule simple_rule \n\tattributes: \n\t\tsalience 42, agenda-group \"my_group\", no-loop,  lock-on-active, duration 42, activation-group \"my_activation_group\"\n\twhen\n\t\tFoo()\n\tthen\n\t\tbar();\nend"
+		Object retval = execParser("compilation_unit", "\n\nrule simple_rule \n\tattributes: \n\t\tsalience 42, agenda-group \"my_group\", no-loop,  lock-on-active, duration 42, activation-group \"my_activation_group\"\n\twhen\n\t\tFoo()\n\tthen\n\t\tbar();\nend", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (rule simple_rule (VT_RULE_ATTRIBUTES attributes (salience 42) (agenda-group \"my_group\") no-loop lock-on-active (duration 42) (activation-group \"my_activation_group\")) when (VT_AND_IMPLICIT (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Foo)))) then\n\t\tbar();\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit52() throws Exception {
-		// test input: "\nrule simple_rule \n  when\n  \tFoo(bar == Foo.BAR)\n  then\nend"
-		Object retval = execParser("compilation_unit", "\nrule simple_rule \n  when\n  \tFoo(bar == Foo.BAR)\n  then\nend", false);
+	public void testCompilation_unit50() throws Exception {
+		// test input: "rule simple_rule \n  when\n  \tFoo(bar == Foo.BAR)\n  then\nend"
+		Object retval = execParser("compilation_unit", "rule simple_rule \n  when\n  \tFoo(bar == Foo.BAR)\n  then\nend", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (rule simple_rule when (VT_AND_IMPLICIT (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Foo) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT bar)) (== (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT Foo) (VT_ACCESSOR_ELEMENT BAR))))))) then\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit53() throws Exception {
+	public void testCompilation_unit51() throws Exception {
 		// test input: "rule one\n  when\n    exists Foo()\n    exits Bar()\n  then\nend\n\nrule two \n  when\n    ford = ford = ford\n  then\nend"
 		Object retval = execParser("compilation_unit", "rule one\n  when\n    exists Foo()\n    exits Bar()\n  then\nend\n\nrule two \n  when\n    ford = ford = ford\n  then\nend", false);
 		Object actual = examineParserExecResult(28, retval);
@@ -496,16 +495,16 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit54() throws Exception {
-		// test input: "\nrule \"another test\"\n    when\n        s : String()\n        eval(s.equals(\"foo\") && s.startsWith(\"f\"))\n        \n        \n    then\n        list.add( s );\nend "
-		Object retval = execParser("compilation_unit", "\nrule \"another test\"\n    when\n        s : String()\n        eval(s.equals(\"foo\") && s.startsWith(\"f\"))\n        \n        \n    then\n        list.add( s );\nend ", false);
+	public void testCompilation_unit52() throws Exception {
+		// test input: "rule \"another test\"\n    when\n        s : String()\n        eval(s.equals(\"foo\") && s.startsWith(\"f\"))\n        \n        \n    then\n        list.add( s );\nend "
+		Object retval = execParser("compilation_unit", "rule \"another test\"\n    when\n        s : String()\n        eval(s.equals(\"foo\") && s.startsWith(\"f\"))\n        \n        \n    then\n        list.add( s );\nend ", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (rule \"another test\" when (VT_AND_IMPLICIT (VT_PATTERN (VT_FACT_BINDING s (VT_FACT (VT_PATTERN_TYPE String)))) (eval (s.equals(\"foo\") && s.startsWith(\"f\")))) then\n        list.add( s );\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit55() throws Exception {
+	public void testCompilation_unit53() throws Exception {
 		// test input: "package nesting;\n\n\n\n\nrule \"test something\"\n\n\twhen\n\t\tp: Person( name soundslike \"Michael\" )\n\tthen\n\t\tp.name = \"goober\"\n\t\tSystem.out.println(p.name)\nend"
 		Object retval = execParser("compilation_unit", "package nesting;\n\n\n\n\nrule \"test something\"\n\n\twhen\n\t\tp: Person( name soundslike \"Michael\" )\n\tthen\n\t\tp.name = \"goober\"\n\t\tSystem.out.println(p.name)\nend", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -514,7 +513,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit56() throws Exception {
+	public void testCompilation_unit54() throws Exception {
 		// test input: "package com.foo;\n\nagenda-group \"x\"\n\nimport goo.ber\nimport wee.waa\n\n\ndialect \"java\"\n\n\n\n\nrule bar\n  when\n  then\nend\n\nrule baz\n  dialect \"mvel\"\n  when\n  then\nend"
 		Object retval = execParser("compilation_unit", "package com.foo;\n\nagenda-group \"x\"\n\nimport goo.ber\nimport wee.waa\n\n\ndialect \"java\"\n\n\n\n\nrule bar\n  when\n  then\nend\n\nrule baz\n  dialect \"mvel\"\n  when\n  then\nend", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -523,52 +522,52 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit57() throws Exception {
-		// test input: "\npackage com.foo;\n\nimport im.one\n\nimport im.two\n\nrule foo\n  when\n  then\nend\n\nfunction cheeseIt() {\n\n}\n\nimport im.three;\n\nrule bar\n  when\n  then\nend\n\nfunction uncheeseIt() {\n\n}\n\nimport im.four;"
-		Object retval = execParser("compilation_unit", "\npackage com.foo;\n\nimport im.one\n\nimport im.two\n\nrule foo\n  when\n  then\nend\n\nfunction cheeseIt() {\n\n}\n\nimport im.three;\n\nrule bar\n  when\n  then\nend\n\nfunction uncheeseIt() {\n\n}\n\nimport im.four;", false);
+	public void testCompilation_unit55() throws Exception {
+		// test input: "package com.foo;\n\nimport im.one\n\nimport im.two\n\nrule foo\n  when\n  then\nend\n\nfunction cheeseIt() {\n\n}\n\nimport im.three;\n\nrule bar\n  when\n  then\nend\n\nfunction uncheeseIt() {\n\n}\n\nimport im.four;"
+		Object retval = execParser("compilation_unit", "package com.foo;\n\nimport im.one\n\nimport im.two\n\nrule foo\n  when\n  then\nend\n\nfunction cheeseIt() {\n\n}\n\nimport im.three;\n\nrule bar\n  when\n  then\nend\n\nfunction uncheeseIt() {\n\n}\n\nimport im.four;", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (package (VT_PACKAGE_ID com foo)) (import (VT_IMPORT_ID im one)) (import (VT_IMPORT_ID im two)) (rule foo when VT_AND_IMPLICIT then\nend) (function cheeseIt VT_PARAM_LIST {\n\n}) (import (VT_IMPORT_ID im three)) (rule bar when VT_AND_IMPLICIT then\nend) (function uncheeseIt VT_PARAM_LIST {\n\n}) (import (VT_IMPORT_ID im four)))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit58() throws Exception {
-		// test input: "\nrule \"1. Do Stuff!\"\n  when\n  then\nend\n\nrule \"2. Do More Stuff!\"\n  when\n  then\nend"
-		Object retval = execParser("compilation_unit", "\nrule \"1. Do Stuff!\"\n  when\n  then\nend\n\nrule \"2. Do More Stuff!\"\n  when\n  then\nend", false);
+	public void testCompilation_unit56() throws Exception {
+		// test input: "rule \"1. Do Stuff!\"\n  when\n  then\nend\n\nrule \"2. Do More Stuff!\"\n  when\n  then\nend"
+		Object retval = execParser("compilation_unit", "rule \"1. Do Stuff!\"\n  when\n  then\nend\n\nrule \"2. Do More Stuff!\"\n  when\n  then\nend", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (rule \"1. Do Stuff!\" when VT_AND_IMPLICIT then\nend) (rule \"2. Do More Stuff!\" when VT_AND_IMPLICIT then\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit59() throws Exception {
-		// test input: "\nrule simple_rule \n  when\n\tFoo()\n\tBar()\n\teval(\n\t\n\t\n\t\n\t       abc(\n\t       \n\t       \"foo\") + \n\t       5\n\t       \n\t       \n\t       \n\t        \n\t       )\n  then\n\tKapow\n\tPoof\n\t\nend"
-		Object retval = execParser("compilation_unit", "\nrule simple_rule \n  when\n\tFoo()\n\tBar()\n\teval(\n\t\n\t\n\t\n\t       abc(\n\t       \n\t       \"foo\") + \n\t       5\n\t       \n\t       \n\t       \n\t        \n\t       )\n  then\n\tKapow\n\tPoof\n\t\nend", false);
+	public void testCompilation_unit57() throws Exception {
+		// test input: "rule simple_rule \n  when\n\tFoo()\n\tBar()\n\teval(\n\t\n\t\n\t\n\t       abc(\n\t       \n\t       \"foo\") + \n\t       5\n\t       \n\t       \n\t       \n\t        \n\t       )\n  then\n\tKapow\n\tPoof\n\t\nend"
+		Object retval = execParser("compilation_unit", "rule simple_rule \n  when\n\tFoo()\n\tBar()\n\teval(\n\t\n\t\n\t\n\t       abc(\n\t       \n\t       \"foo\") + \n\t       5\n\t       \n\t       \n\t       \n\t        \n\t       )\n  then\n\tKapow\n\tPoof\n\t\nend", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (rule simple_rule when (VT_AND_IMPLICIT (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Foo))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Bar))) (eval (\n\t\n\t\n\t\n\t       abc(\n\t       \n\t       \"foo\") + \n\t       5\n\t       \n\t       \n\t       \n\t        \n\t       ))) then\n\tKapow\n\tPoof\n\t\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit60() throws Exception {
-		// test input: "\nrule simple_rule \n  when\n\teval(abc();)\n  then\n\tKapow\n\tPoof\nend"
-		Object retval = execParser("compilation_unit", "\nrule simple_rule \n  when\n\teval(abc();)\n  then\n\tKapow\n\tPoof\nend", false);
+	public void testCompilation_unit58() throws Exception {
+		// test input: "rule simple_rule \n  when\n\teval(abc();)\n  then\n\tKapow\n\tPoof\nend"
+		Object retval = execParser("compilation_unit", "rule simple_rule \n  when\n\teval(abc();)\n  then\n\tKapow\n\tPoof\nend", false);
 		Object actual = examineParserExecResult(28, retval);
 		Object expecting = "FAIL";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit61() throws Exception {
-		// test input: "\n\n\nrule simple_rule \n  when\n\tFoo(\n\t  bar == baz, la==laz\n\t  )\n  then\n\tKapow\n\tPoof\nend\n\t"
-		Object retval = execParser("compilation_unit", "\n\n\nrule simple_rule \n  when\n\tFoo(\n\t  bar == baz, la==laz\n\t  )\n  then\n\tKapow\n\tPoof\nend\n\t", false);
+	public void testCompilation_unit59() throws Exception {
+		// test input: "\n\nrule simple_rule \n  when\n\tFoo(\n\t  bar == baz, la==laz\n\t  )\n  then\n\tKapow\n\tPoof\nend\n\t"
+		Object retval = execParser("compilation_unit", "\n\nrule simple_rule \n  when\n\tFoo(\n\t  bar == baz, la==laz\n\t  )\n  then\n\tKapow\n\tPoof\nend\n\t", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (rule simple_rule when (VT_AND_IMPLICIT (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Foo) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT bar)) (== (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT baz)))) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT la)) (== (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT laz))))))) then\n\tKapow\n\tPoof\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit62() throws Exception {
+	public void testCompilation_unit60() throws Exception {
 		// test input: "package org.drools.test;\n\nrule \"Who likes Stilton\"\n    when\n        com.cheeseco.Cheese($type : type == \"stilton\")\n    then\n        System.out.println( $name + \" likes \" + $type);\nend    "
 		Object retval = execParser("compilation_unit", "package org.drools.test;\n\nrule \"Who likes Stilton\"\n    when\n        com.cheeseco.Cheese($type : type == \"stilton\")\n    then\n        System.out.println( $name + \" likes \" + $type);\nend    ", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -577,7 +576,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit63() throws Exception {
+	public void testCompilation_unit61() throws Exception {
 		// test input: "rule \"AccumulateParserTest\"\nwhen\n     Integer() from accumulate( Person( age > 21 ),\n                                init( int x = 0; ),\n                                action( x++; ),\n                                result( new Integer(x) ) );\nthen\nend"
 		Object retval = execParser("compilation_unit", "rule \"AccumulateParserTest\"\nwhen\n     Integer() from accumulate( Person( age > 21 ),\n                                init( int x = 0; ),\n                                action( x++; ),\n                                result( new Integer(x) ) );\nthen\nend", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -586,7 +585,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit64() throws Exception {
+	public void testCompilation_unit62() throws Exception {
 		// test input: "rule \"AccumulateParserTest\"\nwhen\n     $counter:Integer() from accumulate( $person : Person( age > 21 ),\n                                         init( int x = 0; ),\n                                         action( x++; ),\n                                         result( new Integer(x) ) );\nthen\nend"
 		Object retval = execParser("compilation_unit", "rule \"AccumulateParserTest\"\nwhen\n     $counter:Integer() from accumulate( $person : Person( age > 21 ),\n                                         init( int x = 0; ),\n                                         action( x++; ),\n                                         result( new Integer(x) ) );\nthen\nend", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -595,7 +594,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit65() throws Exception {
+	public void testCompilation_unit63() throws Exception {
 		// test input: "rule \"CollectParserTest\"\nwhen\n     $personList : ArrayList() from collect( Person( age > 21 ) );\nthen\nend"
 		Object retval = execParser("compilation_unit", "rule \"CollectParserTest\"\nwhen\n     $personList : ArrayList() from collect( Person( age > 21 ) );\nthen\nend", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -604,7 +603,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit66() throws Exception {
+	public void testCompilation_unit64() throws Exception {
 		// test input: "rule \"test_Quotes\"\n   when\n      InitialFact()\n   then\n      String s = \"\\\"\\n\\t\\\\\";\nend "
 		Object retval = execParser("compilation_unit", "rule \"test_Quotes\"\n   when\n      InitialFact()\n   then\n      String s = \"\\\"\\n\\t\\\\\";\nend ", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -613,7 +612,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit67() throws Exception {
+	public void testCompilation_unit65() throws Exception {
 		// test input: "rule \"test nested CEs\"\t\n\twhen\n\t    not ( State( $state : state ) and\n\t          not( Person( status == $state, $likes : likes ) and\n\t               Cheese( type == $likes ) ) )\n\t    Person( name == \"Bob\" )\n\t    ( Cheese( price == 10 ) or Cheese( type == \"brie\" ) )\n\tthen \n\t\tresults.add(\"OK\");\t\t\nend"
 		Object retval = execParser("compilation_unit", "rule \"test nested CEs\"\t\n\twhen\n\t    not ( State( $state : state ) and\n\t          not( Person( status == $state, $likes : likes ) and\n\t               Cheese( type == $likes ) ) )\n\t    Person( name == \"Bob\" )\n\t    ( Cheese( price == 10 ) or Cheese( type == \"brie\" ) )\n\tthen \n\t\tresults.add(\"OK\");\t\t\nend", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -622,7 +621,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit68() throws Exception {
+	public void testCompilation_unit66() throws Exception {
 		// test input: "rule \"ForallParserTest\"\nwhen\n     forall( Person( age > 21, $likes : likes )\n             Cheese( type == $likes ) );\nthen\nend"
 		Object retval = execParser("compilation_unit", "rule \"ForallParserTest\"\nwhen\n     forall( Person( age > 21, $likes : likes )\n             Cheese( type == $likes ) );\nthen\nend", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -631,7 +630,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit69() throws Exception {
+	public void testCompilation_unit67() throws Exception {
 		// test input: "#testing 'in' operator\n\nrule simple_rule \n  when\n  \tPerson(age > 30 && < 40)\n  \tVehicle(type in ( \"sedan\", \"wagon\" ), age < 3)\n  then\n\tconsequence();\nend"
 		Object retval = execParser("compilation_unit", "#testing 'in' operator\n\nrule simple_rule \n  when\n  \tPerson(age > 30 && < 40)\n  \tVehicle(type in ( \"sedan\", \"wagon\" ), age < 3)\n  then\n\tconsequence();\nend", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -640,7 +639,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit70() throws Exception {
+	public void testCompilation_unit68() throws Exception {
 		// test input: "#testing not 'in' operator\n\nrule simple_rule \n  when\n  \tPerson(age > 30 && < 40)\n  \tVehicle(type not in ( \"sedan\", \"wagon\" ), age < 3)\n  then\n\tconsequence();\nend"
 		Object retval = execParser("compilation_unit", "#testing not 'in' operator\n\nrule simple_rule \n  when\n  \tPerson(age > 30 && < 40)\n  \tVehicle(type not in ( \"sedan\", \"wagon\" ), age < 3)\n  then\n\tconsequence();\nend", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -649,7 +648,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit71() throws Exception {
+	public void testCompilation_unit69() throws Exception {
 		// test input: "package org.drools;\n\nglobal java.util.List list;\n\nrule \"rule1\"\nwhen\n    Pattern1();\n    Pattern2() from x.y.z;\nthen\n    System.out.println(\"Test\");\nend;\n\nquery \"query1\"\n\tPattern5();\n\tPattern6();\n\tPattern7();\nend;\n\nrule \"rule2\"\nwhen\n    Pattern3();\n    Pattern4() from collect( Pattern5() );\nthen\n    System.out.println(\"Test\");\nend;\n\n\t"
 		Object retval = execParser("compilation_unit", "package org.drools;\n\nglobal java.util.List list;\n\nrule \"rule1\"\nwhen\n    Pattern1();\n    Pattern2() from x.y.z;\nthen\n    System.out.println(\"Test\");\nend;\n\nquery \"query1\"\n\tPattern5();\n\tPattern6();\n\tPattern7();\nend;\n\nrule \"rule2\"\nwhen\n    Pattern3();\n    Pattern4() from collect( Pattern5() );\nthen\n    System.out.println(\"Test\");\nend;\n\n\t", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -658,7 +657,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit72() throws Exception {
+	public void testCompilation_unit70() throws Exception {
 		// test input: "package org.drools\n\nrule \"Test Parse\"\n\nwhen\n    eval( 3==3 )\nthen\n    System.out.println(\"OK\");\nend "
 		Object retval = execParser("compilation_unit", "package org.drools\n\nrule \"Test Parse\"\n\nwhen\n    eval( 3==3 )\nthen\n    System.out.println(\"OK\");\nend ", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -667,7 +666,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit73() throws Exception {
+	public void testCompilation_unit71() throws Exception {
 		// test input: "rule \"AccumulateReverseParserTest\"\nwhen\n     Integer() from accumulate( Person( age > 21 ),\n                                init( int x = 0; ),\n                                action( x++; ),\n                                reverse( x--; ),\n                                result( new Integer(x) ) );\nthen\nend"
 		Object retval = execParser("compilation_unit", "rule \"AccumulateReverseParserTest\"\nwhen\n     Integer() from accumulate( Person( age > 21 ),\n                                init( int x = 0; ),\n                                action( x++; ),\n                                reverse( x--; ),\n                                result( new Integer(x) ) );\nthen\nend", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -676,7 +675,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit74() throws Exception {
+	public void testCompilation_unit72() throws Exception {
 		// test input: "rule \"AccumulateReverseParserTest\"\nwhen\n     Number() from accumulate( Person( $age : age > 21 ),\n                               average( $age ) );\nthen\nend"
 		Object retval = execParser("compilation_unit", "rule \"AccumulateReverseParserTest\"\nwhen\n     Number() from accumulate( Person( $age : age > 21 ),\n                               average( $age ) );\nthen\nend", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -685,7 +684,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit75() throws Exception {
+	public void testCompilation_unit73() throws Exception {
 		// test input: "rule \"CollectParserTest\"\nwhen\n     #bellow statement makes no sense, but is useful to test parsing recursiveness\n     $personList : ArrayList() from collect( $p : Person( age > 21 || age < 10 ) from collect( People() from $town.getPeople() ) );\nthen\nend\n\n\t"
 		Object retval = execParser("compilation_unit", "rule \"CollectParserTest\"\nwhen\n     #bellow statement makes no sense, but is useful to test parsing recursiveness\n     $personList : ArrayList() from collect( $p : Person( age > 21 || age < 10 ) from collect( People() from $town.getPeople() ) );\nthen\nend\n\n\t", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -694,7 +693,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit76() throws Exception {
+	public void testCompilation_unit74() throws Exception {
 		// test input: "rule \"AccumulateParserTest\"\nwhen\n     #bellow statement makes no sense, but is useful to test parsing recursiveness\n     $personList : ArrayList() from accumulate( Person( $age : age > 21 || < 10 ) from collect( People() from $town.getPeople() ),\n                                                max( $age ) );\nthen\nend\n\n\t"
 		Object retval = execParser("compilation_unit", "rule \"AccumulateParserTest\"\nwhen\n     #bellow statement makes no sense, but is useful to test parsing recursiveness\n     $personList : ArrayList() from accumulate( Person( $age : age > 21 || < 10 ) from collect( People() from $town.getPeople() ),\n                                                max( $age ) );\nthen\nend\n\n\t", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -703,7 +702,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit77() throws Exception {
+	public void testCompilation_unit75() throws Exception {
 		// test input: "package org.drools;\n\nrule \"testing OR CE\"\nwhen\n    $p : Person( name == \"bob\" )\n    $c : Cheese( type == $p.likes ) || Cheese( price == 10 )\nthen\n    // do something\nend "
 		Object retval = execParser("compilation_unit", "package org.drools;\n\nrule \"testing OR CE\"\nwhen\n    $p : Person( name == \"bob\" )\n    $c : Cheese( type == $p.likes ) || Cheese( price == 10 )\nthen\n    // do something\nend ", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -712,7 +711,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit78() throws Exception {
+	public void testCompilation_unit76() throws Exception {
 		// test input: "rule \"another test\" salience 10 when eval( true ) then System.out.println(1); end"
 		Object retval = execParser("compilation_unit", "rule \"another test\" salience 10 when eval( true ) then System.out.println(1); end", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -721,7 +720,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit79() throws Exception {
+	public void testCompilation_unit77() throws Exception {
 		// test input: "rule \"another test\" salience 10 when eval( true ) then System.out.println(1);\nend"
 		Object retval = execParser("compilation_unit", "rule \"another test\" salience 10 when eval( true ) then System.out.println(1);\nend", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -730,7 +729,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit80() throws Exception {
+	public void testCompilation_unit78() throws Exception {
 		// test input: "rule \"AccumulateMultiPatternParserTest\"\nwhen\n     $counter:Integer() from accumulate( $person : Person( age > 21 ) and Cheese( type == $person.likes ),\n                                         init( int x = 0; ),\n                                         action( x++; ),\n                                         result( new Integer(x) ) );\nthen\nend"
 		Object retval = execParser("compilation_unit", "rule \"AccumulateMultiPatternParserTest\"\nwhen\n     $counter:Integer() from accumulate( $person : Person( age > 21 ) and Cheese( type == $person.likes ),\n                                         init( int x = 0; ),\n                                         action( x++; ),\n                                         result( new Integer(x) ) );\nthen\nend", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -739,7 +738,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit81() throws Exception {
+	public void testCompilation_unit79() throws Exception {
 		// test input: "package org.drools;\n\nrule \"test rule\"\n\tsalience 10\n\twhen\n\t\t$c: WorkerPerformanceContext(eval)$c.getBalanceMonth() != null))\n\tthen\n\t\tretract($p);\nend\n\t"
 		Object retval = execParser("compilation_unit", "package org.drools;\n\nrule \"test rule\"\n\tsalience 10\n\twhen\n\t\t$c: WorkerPerformanceContext(eval)$c.getBalanceMonth() != null))\n\tthen\n\t\tretract($p);\nend\n\t", false);
 		Object actual = examineParserExecResult(28, retval);
@@ -748,7 +747,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit82() throws Exception {
+	public void testCompilation_unit80() throws Exception {
 		// test input: "package org.drools;\n\nrule \"Avoid NPE on wrong syntax\"\nwhen\n    not( Cheese( ( type == \"stilton\", price == 10 ) || ( type == \"brie\", price == 15 ) ) from $cheeseList )\nthen\n    System.out.println(\"OK\");\nend"
 		Object retval = execParser("compilation_unit", "package org.drools;\n\nrule \"Avoid NPE on wrong syntax\"\nwhen\n    not( Cheese( ( type == \"stilton\", price == 10 ) || ( type == \"brie\", price == 15 ) ) from $cheeseList )\nthen\n    System.out.println(\"OK\");\nend", false);
 		Object actual = examineParserExecResult(28, retval);
@@ -757,16 +756,16 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit83() throws Exception {
-		// test input: "package org.drools;\n\nrule \"test pluggable operators\"\nwhen\n    $a : EventA()\n    $b : EventB( this `after[1,10] $a )\n    $c : EventC( this finishes $b )\n    $d : EventD( this not starts $a )\n    $e : EventE( this not `before [1, 10] $b )\nthen\nend"
-		Object retval = execParser("compilation_unit", "package org.drools;\n\nrule \"test pluggable operators\"\nwhen\n    $a : EventA()\n    $b : EventB( this `after[1,10] $a )\n    $c : EventC( this finishes $b )\n    $d : EventD( this not starts $a )\n    $e : EventE( this not `before [1, 10] $b )\nthen\nend", false);
+	public void testCompilation_unit81() throws Exception {
+		// test input: "package org.drools;\n\nrule \"test pluggable operators\"\nwhen\n    $a : EventA()\n    $b : EventB( this after[1,10] $a )\n    $c : EventC( this finishes $b )\n    $d : EventD( this not starts $a )\n    $e : EventE( this not before [1, 10] $b )\nthen\nend"
+		Object retval = execParser("compilation_unit", "package org.drools;\n\nrule \"test pluggable operators\"\nwhen\n    $a : EventA()\n    $b : EventB( this after[1,10] $a )\n    $c : EventC( this finishes $b )\n    $d : EventD( this not starts $a )\n    $e : EventE( this not before [1, 10] $b )\nthen\nend", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_COMPILATION_UNIT (package (VT_PACKAGE_ID org drools)) (rule \"test pluggable operators\" when (VT_AND_IMPLICIT (VT_PATTERN (VT_FACT_BINDING $a (VT_FACT (VT_PATTERN_TYPE EventA)))) (VT_PATTERN (VT_FACT_BINDING $b (VT_FACT (VT_PATTERN_TYPE EventB) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT this)) (after [1,10] (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT $a))))))) (VT_PATTERN (VT_FACT_BINDING $c (VT_FACT (VT_PATTERN_TYPE EventC) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT this)) (finishes (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT $b))))))) (VT_PATTERN (VT_FACT_BINDING $d (VT_FACT (VT_PATTERN_TYPE EventD) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT this)) (starts not (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT $a))))))) (VT_PATTERN (VT_FACT_BINDING $e (VT_FACT (VT_PATTERN_TYPE EventE) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT this)) (before not [1, 10] (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT $b)))))))) then\nend))";
 
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit84() throws Exception {
+	public void testCompilation_unit82() throws Exception {
 		// test input: "rule \"Test\"\nwhen\n( $r :LiteralRestriction( operator == Operator.EQUAL ) )\n        then\n    end"
 		Object retval = execParser("compilation_unit", "rule \"Test\"\nwhen\n( $r :LiteralRestriction( operator == Operator.EQUAL ) )\n        then\n    end", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -775,7 +774,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testCompilation_unit85() throws Exception {
+	public void testCompilation_unit83() throws Exception {
 		// test input: "rule \"Test2\"\nwhen\n( not $r :LiteralRestriction( operator == Operator.EQUAL ) )\n        then\n    end "
 		Object retval = execParser("compilation_unit", "rule \"Test2\"\nwhen\n( not $r :LiteralRestriction( operator == Operator.EQUAL ) )\n        then\n    end ", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -784,7 +783,7 @@
 		assertEquals("testing rule "+"compilation_unit", expecting, actual);
 	}
 
-	public void testPattern_source86() throws Exception {
+	public void testPattern_source1() throws Exception {
 		// test input: "StockTick( symbol==\"ACME\") from entry-point StreamA"
 		Object retval = execParser("pattern_source", "StockTick( symbol==\"ACME\") from entry-point StreamA", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -793,7 +792,7 @@
 		assertEquals("testing rule "+"pattern_source", expecting, actual);
 	}
 
-	public void testParen_chunk87() throws Exception {
+	public void testParen_chunk1() throws Exception {
 		// test input: "( foo )"
 		Object retval = execParser("paren_chunk", "( foo )", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -802,7 +801,7 @@
 		assertEquals("testing rule "+"paren_chunk", expecting, actual);
 	}
 
-	public void testParen_chunk88() throws Exception {
+	public void testParen_chunk2() throws Exception {
 		// test input: "(fnord())"
 		Object retval = execParser("paren_chunk", "(fnord())", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -811,7 +810,7 @@
 		assertEquals("testing rule "+"paren_chunk", expecting, actual);
 	}
 
-	public void testParen_chunk89() throws Exception {
+	public void testParen_chunk3() throws Exception {
 		// test input: "( fnord( \"cheese\" ) )"
 		Object retval = execParser("paren_chunk", "( fnord( \"cheese\" ) )", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -820,7 +819,7 @@
 		assertEquals("testing rule "+"paren_chunk", expecting, actual);
 	}
 
-	public void testParen_chunk90() throws Exception {
+	public void testParen_chunk4() throws Exception {
 		// test input: "( %*9dkj)"
 		Object retval = execParser("paren_chunk", "( %*9dkj)", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -829,7 +828,7 @@
 		assertEquals("testing rule "+"paren_chunk", expecting, actual);
 	}
 
-	public void testNormal_lhs_block91() throws Exception {
+	public void testNormal_lhs_block1() throws Exception {
 		// test input: ""
 		Object retval = execParser("normal_lhs_block", "", false);
 		Object actual = examineParserExecResult(8, retval);
@@ -838,25 +837,25 @@
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block92() throws Exception {
-		// test input: "\n     Country( $cities : city )\n     Person( city memberOf $cities )\n    "
-		Object retval = execParser("normal_lhs_block", "\n     Country( $cities : city )\n     Person( city memberOf $cities )\n    ", false);
+	public void testNormal_lhs_block2() throws Exception {
+		// test input: "     Country( $cities : city )\n     Person( city memberOf $cities )\n    "
+		Object retval = execParser("normal_lhs_block", "     Country( $cities : city )\n     Person( city memberOf $cities )\n    ", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Country) (VT_BIND_FIELD $cities (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT city)))))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT city)) (memberOf (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT $cities)))))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block93() throws Exception {
-		// test input: "\n     Country( $cities : city )\n     Person( city not memberOf $cities )\n    "
-		Object retval = execParser("normal_lhs_block", "\n     Country( $cities : city )\n     Person( city not memberOf $cities )\n    ", false);
+	public void testNormal_lhs_block3() throws Exception {
+		// test input: "     Country( $cities : city )\n     Person( city not memberOf $cities )\n    "
+		Object retval = execParser("normal_lhs_block", "     Country( $cities : city )\n     Person( city not memberOf $cities )\n    ", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Country) (VT_BIND_FIELD $cities (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT city)))))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT city)) (memberOf not (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT $cities)))))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block94() throws Exception {
+	public void testNormal_lhs_block4() throws Exception {
 		// test input: " Person( age < 42 && location==\"atlanta\") "
 		Object retval = execParser("normal_lhs_block", " Person( age < 42 && location==\"atlanta\") ", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -865,7 +864,7 @@
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block95() throws Exception {
+	public void testNormal_lhs_block5() throws Exception {
 		// test input: " Person( age < 42 || location==\"atlanta\") "
 		Object retval = execParser("normal_lhs_block", " Person( age < 42 || location==\"atlanta\") ", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -874,7 +873,7 @@
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block96() throws Exception {
+	public void testNormal_lhs_block6() throws Exception {
 		// test input: "Person( age < 42 && location==\"atlanta\" || age > 20 && location==\"Seatle\" || location == \"Chicago\")"
 		Object retval = execParser("normal_lhs_block", "Person( age < 42 && location==\"atlanta\" || age > 20 && location==\"Seatle\" || location == \"Chicago\")", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -883,7 +882,7 @@
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block97() throws Exception {
+	public void testNormal_lhs_block7() throws Exception {
 		// test input: "Person( age < 42 && ( location==\"atlanta\" || age > 20 && location==\"Seatle\") || location == \"Chicago\")"
 		Object retval = execParser("normal_lhs_block", "Person( age < 42 && ( location==\"atlanta\" || age > 20 && location==\"Seatle\") || location == \"Chicago\")", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -892,7 +891,7 @@
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block98() throws Exception {
+	public void testNormal_lhs_block8() throws Exception {
 		// test input: " Person( ( age == 70 && hair == \"black\" ) || ( age == 40 && hair == \"pink\" ) || ( age == 12 && ( hair == \"yellow\" || hair == \"blue\" ) ) ) "
 		Object retval = execParser("normal_lhs_block", " Person( ( age == 70 && hair == \"black\" ) || ( age == 40 && hair == \"pink\" ) || ( age == 12 && ( hair == \"yellow\" || hair == \"blue\" ) ) ) ", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -901,7 +900,7 @@
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block99() throws Exception {
+	public void testNormal_lhs_block9() throws Exception {
 		// test input: " Person( name matches \"mark\" || matches \"bob\" ) "
 		Object retval = execParser("normal_lhs_block", " Person( name matches \"mark\" || matches \"bob\" ) ", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -910,16 +909,16 @@
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block100() throws Exception {
-		// test input: "\n\tCity( $city : city )\n\tCountry( cities not contains $city )\n\t"
-		Object retval = execParser("normal_lhs_block", "\n\tCity( $city : city )\n\tCountry( cities not contains $city )\n\t", false);
+	public void testNormal_lhs_block10() throws Exception {
+		// test input: "\tCity( $city : city )\n\tCountry( cities not contains $city )\n\t"
+		Object retval = execParser("normal_lhs_block", "\tCity( $city : city )\n\tCountry( cities not contains $city )\n\t", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE City) (VT_BIND_FIELD $city (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT city)))))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Country) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT cities)) (contains not (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT $city)))))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block101() throws Exception {
+	public void testNormal_lhs_block11() throws Exception {
 		// test input: " Message( text not matches '[abc]*' ) "
 		Object retval = execParser("normal_lhs_block", " Message( text not matches '[abc]*' ) ", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -928,7 +927,7 @@
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block102() throws Exception {
+	public void testNormal_lhs_block12() throws Exception {
 		// test input: "Foo( bar > 1 || == 1 )"
 		Object retval = execParser("normal_lhs_block", "Foo( bar > 1 || == 1 )", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -937,16 +936,16 @@
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block103() throws Exception {
-		// test input: "\n\t(or\n\tnot Person()\n\t\t(and Cheese()\n\t\t\tMeat()\n\t\t\tWine()))\n\t"
-		Object retval = execParser("normal_lhs_block", "\n\t(or\n\tnot Person()\n\t\t(and Cheese()\n\t\t\tMeat()\n\t\t\tWine()))\n\t", false);
+	public void testNormal_lhs_block13() throws Exception {
+		// test input: "\t(or\n\tnot Person()\n\t\t(and Cheese()\n\t\t\tMeat()\n\t\t\tWine()))\n\t"
+		Object retval = execParser("normal_lhs_block", "\t(or\n\tnot Person()\n\t\t(and Cheese()\n\t\t\tMeat()\n\t\t\tWine()))\n\t", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (or (not (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Person)))) (and (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Cheese))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Meat))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Wine))))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block104() throws Exception {
+	public void testNormal_lhs_block14() throws Exception {
 		// test input: "Person( ( age ( > 60 && < 70 ) || ( > 50 && < 55 ) && hair == \"black\" ) || ( age == 40 && hair == \"pink\" ) || ( age == 12 && ( hair == \"yellow\" || hair == \"blue\" ) ))"
 		Object retval = execParser("normal_lhs_block", "Person( ( age ( > 60 && < 70 ) || ( > 50 && < 55 ) && hair == \"black\" ) || ( age == 40 && hair == \"pink\" ) || ( age == 12 && ( hair == \"yellow\" || hair == \"blue\" ) ))", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -955,16 +954,16 @@
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block105() throws Exception {
-		// test input: "org   .   drools/*comment*/\t  .Message( text not matches $c#comment\n. property )\n"
-		Object retval = execParser("normal_lhs_block", "org   .   drools/*comment*/\t  .Message( text not matches $c#comment\n. property )\n", false);
+	public void testNormal_lhs_block15() throws Exception {
+		// test input: "org   .   drools/*comment*/\t  .Message( text not matches $c#comment\n. property )"
+		Object retval = execParser("normal_lhs_block", "org   .   drools/*comment*/\t  .Message( text not matches $c#comment\n. property )", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE org drools Message) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT text)) (matches not (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT $c) (VT_ACCESSOR_ELEMENT property)))))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block106() throws Exception {
+	public void testNormal_lhs_block16() throws Exception {
 		// test input: " Test( ( text == null || text matches \"\" ) )  "
 		Object retval = execParser("normal_lhs_block", " Test( ( text == null || text matches \"\" ) )  ", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -973,7 +972,7 @@
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block107() throws Exception {
+	public void testNormal_lhs_block17() throws Exception {
 		// test input: " $id : Something( duration == \"foo\") "
 		Object retval = execParser("normal_lhs_block", " $id : Something( duration == \"foo\") ", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -982,7 +981,7 @@
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block108() throws Exception {
+	public void testNormal_lhs_block18() throws Exception {
 		// test input: "foo3 : Bar("
 		Object retval = execParser("normal_lhs_block", "foo3 : Bar(", false);
 		Object actual = examineParserExecResult(28, retval);
@@ -991,16 +990,16 @@
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block109() throws Exception {
-		// test input: "\nCheese(name == \"Stilton\", age==2001)\nWine(name == \"Grange\", age == \"1978\", accolades contains \"world champion\")\n"
-		Object retval = execParser("normal_lhs_block", "\nCheese(name == \"Stilton\", age==2001)\nWine(name == \"Grange\", age == \"1978\", accolades contains \"world champion\")\n", false);
+	public void testNormal_lhs_block19() throws Exception {
+		// test input: "Cheese(name == \"Stilton\", age==2001)\nWine(name == \"Grange\", age == \"1978\", accolades contains \"world champion\")"
+		Object retval = execParser("normal_lhs_block", "Cheese(name == \"Stilton\", age==2001)\nWine(name == \"Grange\", age == \"1978\", accolades contains \"world champion\")", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Cheese) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT name)) (== \"Stilton\")) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT age)) (== 2001)))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Wine) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT name)) (== \"Grange\")) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT age)) (== \"1978\")) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT accolades)) (contains \"world champion\")))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block110() throws Exception {
+	public void testNormal_lhs_block20() throws Exception {
 		// test input: "Foo()"
 		Object retval = execParser("normal_lhs_block", "Foo()", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -1009,7 +1008,7 @@
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block111() throws Exception {
+	public void testNormal_lhs_block21() throws Exception {
 		// test input: "not Cheese(type == \"stilton\")"
 		Object retval = execParser("normal_lhs_block", "not Cheese(type == \"stilton\")", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -1018,25 +1017,25 @@
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block112() throws Exception {
-		// test input: "\nPerson(age < 42, location==\"atlanta\") \nor\nPerson(name==\"bob\")\n"
-		Object retval = execParser("normal_lhs_block", "\nPerson(age < 42, location==\"atlanta\") \nor\nPerson(name==\"bob\")\n", false);
+	public void testNormal_lhs_block22() throws Exception {
+		// test input: "Person(age < 42, location==\"atlanta\") \nor\nPerson(name==\"bob\")"
+		Object retval = execParser("normal_lhs_block", "Person(age < 42, location==\"atlanta\") \nor\nPerson(name==\"bob\")", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (or (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT age)) (< 42)) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT location)) (== \"atlanta\")))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT name)) (== \"bob\"))))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block113() throws Exception {
-		// test input: "\nFoo(bar == false)\nFoo(boo > -42)\nFoo(boo > -42.42)\n"
-		Object retval = execParser("normal_lhs_block", "\nFoo(bar == false)\nFoo(boo > -42)\nFoo(boo > -42.42)\n", false);
+	public void testNormal_lhs_block23() throws Exception {
+		// test input: "Foo(bar == false)\nFoo(boo > -42)\nFoo(boo > -42.42)"
+		Object retval = execParser("normal_lhs_block", "Foo(bar == false)\nFoo(boo > -42)\nFoo(boo > -42.42)", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Foo) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT bar)) (== false)))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Foo) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT boo)) (> -42)))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Foo) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT boo)) (> -42.42)))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block114() throws Exception {
+	public void testNormal_lhs_block24() throws Exception {
 		// test input: "Cheese( )"
 		Object retval = execParser("normal_lhs_block", "Cheese( )", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -1045,70 +1044,70 @@
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block115() throws Exception {
-		// test input: "\nCol1() from something.doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\nCol2()\n"
-		Object retval = execParser("normal_lhs_block", "\nCol1() from something.doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\nCol2()\n", false);
+	public void testNormal_lhs_block25() throws Exception {
+		// test input: "Col1() from something.doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\nCol2()"
+		Object retval = execParser("normal_lhs_block", "Col1() from something.doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\nCol2()", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (from (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Col1))) (VT_FROM_SOURCE something (. doIt ( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Col2))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block116() throws Exception {
-		// test input: "\nCol1() from doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\nCol2()\n"
-		Object retval = execParser("normal_lhs_block", "\nCol1() from doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\nCol2()\n", false);
+	public void testNormal_lhs_block26() throws Exception {
+		// test input: "Col1() from doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\nCol2()"
+		Object retval = execParser("normal_lhs_block", "Col1() from doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\nCol2()", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (from (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Col1))) (VT_FROM_SOURCE doIt ( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] ))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Col2))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block117() throws Exception {
-		// test input: "\nCol1() from something.doIt\nCol2()\n"
-		Object retval = execParser("normal_lhs_block", "\nCol1() from something.doIt\nCol2()\n", false);
+	public void testNormal_lhs_block27() throws Exception {
+		// test input: "Col1() from something.doIt\nCol2()"
+		Object retval = execParser("normal_lhs_block", "Col1() from something.doIt\nCol2()", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (from (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Col1))) (VT_FROM_SOURCE something (. doIt))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Col2))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block118() throws Exception {
-		// test input: "\nCol1() from something.doIt[\"key\"]\nCol2()\n"
-		Object retval = execParser("normal_lhs_block", "\nCol1() from something.doIt[\"key\"]\nCol2()\n", false);
+	public void testNormal_lhs_block28() throws Exception {
+		// test input: "Col1() from something.doIt[\"key\"]\nCol2()"
+		Object retval = execParser("normal_lhs_block", "Col1() from something.doIt[\"key\"]\nCol2()", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (from (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Col1))) (VT_FROM_SOURCE something (. doIt [\"key\"]))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Col2))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block119() throws Exception {
-		// test input: "\nCol1() from doIt1( foo,bar,42,\"hello\",{ a => \"b\"}, [a, \"b\", 42] )\n            .doIt2(bar, [a, \"b\", 42]).field[\"key\"]\nCol2()\n"
-		Object retval = execParser("normal_lhs_block", "\nCol1() from doIt1( foo,bar,42,\"hello\",{ a => \"b\"}, [a, \"b\", 42] )\n            .doIt2(bar, [a, \"b\", 42]).field[\"key\"]\nCol2()\n", false);
+	public void testNormal_lhs_block29() throws Exception {
+		// test input: "Col1() from doIt1( foo,bar,42,\"hello\",{ a => \"b\"}, [a, \"b\", 42] )\n            .doIt2(bar, [a, \"b\", 42]).field[\"key\"]\nCol2()"
+		Object retval = execParser("normal_lhs_block", "Col1() from doIt1( foo,bar,42,\"hello\",{ a => \"b\"}, [a, \"b\", 42] )\n            .doIt2(bar, [a, \"b\", 42]).field[\"key\"]\nCol2()", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (from (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Col1))) (VT_FROM_SOURCE doIt1 ( foo,bar,42,\"hello\",{ a => \"b\"}, [a, \"b\", 42] ) (. doIt2 (bar, [a, \"b\", 42]) (. field [\"key\"])))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Col2))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block120() throws Exception {
-		// test input: "\nfoo3 : Bar(a==3)\nfoo4 : Bar(a4:a==4)\nBaz()\n"
-		Object retval = execParser("normal_lhs_block", "\nfoo3 : Bar(a==3)\nfoo4 : Bar(a4:a==4)\nBaz()\n", false);
+	public void testNormal_lhs_block30() throws Exception {
+		// test input: "foo3 : Bar(a==3)\nfoo4 : Bar(a4:a==4)\nBaz()"
+		Object retval = execParser("normal_lhs_block", "foo3 : Bar(a==3)\nfoo4 : Bar(a4:a==4)\nBaz()", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (VT_PATTERN (VT_FACT_BINDING foo3 (VT_FACT (VT_PATTERN_TYPE Bar) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT a)) (== 3))))) (VT_PATTERN (VT_FACT_BINDING foo4 (VT_FACT (VT_PATTERN_TYPE Bar) (VT_BIND_FIELD a4 (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT a)) (== 4)))))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Baz))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block121() throws Exception {
-		// test input: "\nPerson(age > 30 && < 40)\nVehicle(type == \"sedan\" || == \"wagon\", age < 3)\n"
-		Object retval = execParser("normal_lhs_block", "\nPerson(age > 30 && < 40)\nVehicle(type == \"sedan\" || == \"wagon\", age < 3)\n", false);
+	public void testNormal_lhs_block31() throws Exception {
+		// test input: "Person(age > 30 && < 40)\nVehicle(type == \"sedan\" || == \"wagon\", age < 3)"
+		Object retval = execParser("normal_lhs_block", "Person(age > 30 && < 40)\nVehicle(type == \"sedan\" || == \"wagon\", age < 3)", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT age)) (&& (> 30) (< 40))))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Vehicle) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (|| (== \"sedan\") (== \"wagon\"))) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT age)) (< 3)))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block122() throws Exception {
+	public void testNormal_lhs_block32() throws Exception {
 		// test input: "    foo3 : Bar(a==3) ; foo4 : Bar(a4:a==4) ; Baz()"
 		Object retval = execParser("normal_lhs_block", "    foo3 : Bar(a==3) ; foo4 : Bar(a4:a==4) ; Baz()", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -1117,34 +1116,34 @@
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block123() throws Exception {
-		// test input: "\nnot ( Cheese(type == \"stilton\") )\nexists ( Foo() )\n"
-		Object retval = execParser("normal_lhs_block", "\nnot ( Cheese(type == \"stilton\") )\nexists ( Foo() )\n", false);
+	public void testNormal_lhs_block33() throws Exception {
+		// test input: "not ( Cheese(type == \"stilton\") )\nexists ( Foo() )"
+		Object retval = execParser("normal_lhs_block", "not ( Cheese(type == \"stilton\") )\nexists ( Foo() )", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (not (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Cheese) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (== \"stilton\"))))) (exists (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Foo)))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block124() throws Exception {
-		// test input: "\nnot ( Cheese(type == \"stilton\") )\nexists ( Foo() )\n"
-		Object retval = execParser("normal_lhs_block", "\nnot ( Cheese(type == \"stilton\") )\nexists ( Foo() )\n", false);
+	public void testNormal_lhs_block34() throws Exception {
+		// test input: "not ( Cheese(type == \"stilton\") )\nexists ( Foo() )"
+		Object retval = execParser("normal_lhs_block", "not ( Cheese(type == \"stilton\") )\nexists ( Foo() )", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (not (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Cheese) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (== \"stilton\"))))) (exists (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Foo)))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block125() throws Exception {
-		// test input: "\na : (not ( Cheese(type == \"stilton\") ))\nexists ( Foo() )\n"
-		Object retval = execParser("normal_lhs_block", "\na : (not ( Cheese(type == \"stilton\") ))\nexists ( Foo() )\n", false);
+	public void testNormal_lhs_block35() throws Exception {
+		// test input: "a : (not ( Cheese(type == \"stilton\") ))\nexists ( Foo() )"
+		Object retval = execParser("normal_lhs_block", "a : (not ( Cheese(type == \"stilton\") ))\nexists ( Foo() )", false);
 		Object actual = examineParserExecResult(28, retval);
 		Object expecting = "FAIL";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block126() throws Exception {
+	public void testNormal_lhs_block36() throws Exception {
 		// test input: " Cheese( t:type == \"cheddar\" ) "
 		Object retval = execParser("normal_lhs_block", " Cheese( t:type == \"cheddar\" ) ", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -1153,7 +1152,7 @@
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block127() throws Exception {
+	public void testNormal_lhs_block37() throws Exception {
 		// test input: "Cheese( $type:type )"
 		Object retval = execParser("normal_lhs_block", "Cheese( $type:type )", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -1162,88 +1161,88 @@
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block128() throws Exception {
-		// test input: "\n    Cheese($type : type == \"stilton\")\n    $person : Person($name : name == \"bob\", likes == $type)        \n"
-		Object retval = execParser("normal_lhs_block", "\n    Cheese($type : type == \"stilton\")\n    $person : Person($name : name == \"bob\", likes == $type)        \n", false);
+	public void testNormal_lhs_block38() throws Exception {
+		// test input: "    Cheese($type : type == \"stilton\")\n    $person : Person($name : name == \"bob\", likes == $type)        "
+		Object retval = execParser("normal_lhs_block", "    Cheese($type : type == \"stilton\")\n    $person : Person($name : name == \"bob\", likes == $type)        ", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Cheese) (VT_BIND_FIELD $type (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (== \"stilton\"))))) (VT_PATTERN (VT_FACT_BINDING $person (VT_FACT (VT_PATTERN_TYPE Person) (VT_BIND_FIELD $name (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT name)) (== \"bob\"))) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT likes)) (== (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT $type))))))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block129() throws Exception {
-		// test input: "\nPerson(name == \"mark\") or \n( Person(type == \"fan\") and Cheese(type == \"green\") )\n"
-		Object retval = execParser("normal_lhs_block", "\nPerson(name == \"mark\") or \n( Person(type == \"fan\") and Cheese(type == \"green\") )\n", false);
+	public void testNormal_lhs_block39() throws Exception {
+		// test input: "Person(name == \"mark\") or \n( Person(type == \"fan\") and Cheese(type == \"green\") )"
+		Object retval = execParser("normal_lhs_block", "Person(name == \"mark\") or \n( Person(type == \"fan\") and Cheese(type == \"green\") )", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (or (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT name)) (== \"mark\")))) (and (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (== \"fan\")))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Cheese) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (== \"green\")))))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block130() throws Exception {
-		// test input: "\nPerson(name == \"mark\") && Cheese(type == \"stilton\")\nPerson(name == \"mark\") || Cheese(type == \"stilton\")\n"
-		Object retval = execParser("normal_lhs_block", "\nPerson(name == \"mark\") && Cheese(type == \"stilton\")\nPerson(name == \"mark\") || Cheese(type == \"stilton\")\n", false);
+	public void testNormal_lhs_block40() throws Exception {
+		// test input: "Person(name == \"mark\") && Cheese(type == \"stilton\")\nPerson(name == \"mark\") || Cheese(type == \"stilton\")"
+		Object retval = execParser("normal_lhs_block", "Person(name == \"mark\") && Cheese(type == \"stilton\")\nPerson(name == \"mark\") || Cheese(type == \"stilton\")", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (&& (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT name)) (== \"mark\")))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Cheese) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (== \"stilton\"))))) (|| (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT name)) (== \"mark\")))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Cheese) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (== \"stilton\"))))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block131() throws Exception {
-		// test input: "\nfoo :  ( Person(name == \"mark\") or Person(type == \"fan\") ) \nCheese(type == \"green\")\n"
-		Object retval = execParser("normal_lhs_block", "\nfoo :  ( Person(name == \"mark\") or Person(type == \"fan\") ) \nCheese(type == \"green\")\n", false);
+	public void testNormal_lhs_block41() throws Exception {
+		// test input: "foo :  ( Person(name == \"mark\") or Person(type == \"fan\") ) \nCheese(type == \"green\")"
+		Object retval = execParser("normal_lhs_block", "foo :  ( Person(name == \"mark\") or Person(type == \"fan\") ) \nCheese(type == \"green\")", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (VT_PATTERN (VT_FACT_BINDING foo (or (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT name)) (== \"mark\"))) (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (== \"fan\")))))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Cheese) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (== \"green\")))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block132() throws Exception {
-		// test input: "\nfoo : ( Person(name == \"mark\") \n\tor \n\tPerson(type == \"fan\") )\n"
-		Object retval = execParser("normal_lhs_block", "\nfoo : ( Person(name == \"mark\") \n\tor \n\tPerson(type == \"fan\") )\n", false);
+	public void testNormal_lhs_block42() throws Exception {
+		// test input: "foo : ( Person(name == \"mark\") \n\tor \n\tPerson(type == \"fan\") )"
+		Object retval = execParser("normal_lhs_block", "foo : ( Person(name == \"mark\") \n\tor \n\tPerson(type == \"fan\") )", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (VT_PATTERN (VT_FACT_BINDING foo (or (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT name)) (== \"mark\"))) (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (== \"fan\")))))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block133() throws Exception {
-		// test input: "\nfoo : ( \n\tPerson(name == \"mark\") or Person(type == \"fan\") \n\t)\n"
-		Object retval = execParser("normal_lhs_block", "\nfoo : ( \n\tPerson(name == \"mark\") or Person(type == \"fan\") \n\t)\n", false);
+	public void testNormal_lhs_block43() throws Exception {
+		// test input: "foo : ( \n\tPerson(name == \"mark\") or Person(type == \"fan\") \n\t)"
+		Object retval = execParser("normal_lhs_block", "foo : ( \n\tPerson(name == \"mark\") or Person(type == \"fan\") \n\t)", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (VT_PATTERN (VT_FACT_BINDING foo (or (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT name)) (== \"mark\"))) (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (== \"fan\")))))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block134() throws Exception {
-		// test input: "\n ( (not Foo(x==\"a\") or Foo(x==\"y\") ) and ( Shoes() or Butt() ) )\n"
-		Object retval = execParser("normal_lhs_block", "\n ( (not Foo(x==\"a\") or Foo(x==\"y\") ) and ( Shoes() or Butt() ) )\n", false);
+	public void testNormal_lhs_block44() throws Exception {
+		// test input: " ( (not Foo(x==\"a\") or Foo(x==\"y\") ) and ( Shoes() or Butt() ) )"
+		Object retval = execParser("normal_lhs_block", " ( (not Foo(x==\"a\") or Foo(x==\"y\") ) and ( Shoes() or Butt() ) )", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (and (or (not (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Foo) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT x)) (== \"a\"))))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Foo) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT x)) (== \"y\"))))) (or (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Shoes))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Butt))))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block135() throws Exception {
-		// test input: "\neval(abc(\"foo\") + 5)\nFoo()\neval(qed())\nBar()\n"
-		Object retval = execParser("normal_lhs_block", "\neval(abc(\"foo\") + 5)\nFoo()\neval(qed())\nBar()\n", false);
+	public void testNormal_lhs_block45() throws Exception {
+		// test input: "eval(abc(\"foo\") + 5)\nFoo()\neval(qed())\nBar()"
+		Object retval = execParser("normal_lhs_block", "eval(abc(\"foo\") + 5)\nFoo()\neval(qed())\nBar()", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (eval (abc(\"foo\") + 5)) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Foo))) (eval (qed())) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Bar))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block136() throws Exception {
-		// test input: "\nFoo()\nBar()\neval(abc(\"foo\"))\n"
-		Object retval = execParser("normal_lhs_block", "\nFoo()\nBar()\neval(abc(\"foo\"))\n", false);
+	public void testNormal_lhs_block46() throws Exception {
+		// test input: "Foo()\nBar()\neval(abc(\"foo\"))"
+		Object retval = execParser("normal_lhs_block", "Foo()\nBar()\neval(abc(\"foo\"))", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Foo))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Bar))) (eval (abc(\"foo\"))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block137() throws Exception {
+	public void testNormal_lhs_block47() throws Exception {
 		// test input: "Foo(name== (a + b))"
 		Object retval = execParser("normal_lhs_block", "Foo(name== (a + b))", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -1252,7 +1251,7 @@
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block138() throws Exception {
+	public void testNormal_lhs_block48() throws Exception {
 		// test input: "Person( $age2:age -> ($age2 == $age1+2 ) )"
 		Object retval = execParser("normal_lhs_block", "Person( $age2:age -> ($age2 == $age1+2 ) )", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -1261,7 +1260,7 @@
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block139() throws Exception {
+	public void testNormal_lhs_block49() throws Exception {
 		// test input: "Foo(bar == Foo.BAR)"
 		Object retval = execParser("normal_lhs_block", "Foo(bar == Foo.BAR)", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -1270,25 +1269,25 @@
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block140() throws Exception {
-		// test input: "\np: Person( name soundslike \"Michael\" )\n"
-		Object retval = execParser("normal_lhs_block", "\np: Person( name soundslike \"Michael\" )\n", false);
+	public void testNormal_lhs_block50() throws Exception {
+		// test input: "p: Person( name soundslike \"Michael\" )"
+		Object retval = execParser("normal_lhs_block", "p: Person( name soundslike \"Michael\" )", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (VT_PATTERN (VT_FACT_BINDING p (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT name)) (soundslike \"Michael\"))))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block141() throws Exception {
-		// test input: "\nFoo()\nBar()\neval(\n\n\n\n       abc(\n       \n       \"foo\") + \n       5\n       \n       \n       \n        \n       )\n"
-		Object retval = execParser("normal_lhs_block", "\nFoo()\nBar()\neval(\n\n\n\n       abc(\n       \n       \"foo\") + \n       5\n       \n       \n       \n        \n       )\n", false);
+	public void testNormal_lhs_block51() throws Exception {
+		// test input: "Foo()\nBar()\neval(\n\n\n\n       abc(\n       \n       \"foo\") + \n       5\n       \n       \n       \n        \n       )"
+		Object retval = execParser("normal_lhs_block", "Foo()\nBar()\neval(\n\n\n\n       abc(\n       \n       \"foo\") + \n       5\n       \n       \n       \n        \n       )", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Foo))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Bar))) (eval (\n\n\n\n       abc(\n       \n       \"foo\") + \n       5\n       \n       \n       \n        \n       )))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block142() throws Exception {
+	public void testNormal_lhs_block52() throws Exception {
 		// test input: "eval(abc();)"
 		Object retval = execParser("normal_lhs_block", "eval(abc();)", false);
 		Object actual = examineParserExecResult(28, retval);
@@ -1297,16 +1296,16 @@
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block143() throws Exception {
-		// test input: "\nFoo(\n  bar == baz, la==laz\n  )\n "
-		Object retval = execParser("normal_lhs_block", "\nFoo(\n  bar == baz, la==laz\n  )\n ", false);
+	public void testNormal_lhs_block53() throws Exception {
+		// test input: "Foo(\n  bar == baz, la==laz\n  )\n "
+		Object retval = execParser("normal_lhs_block", "Foo(\n  bar == baz, la==laz\n  )\n ", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Foo) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT bar)) (== (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT baz)))) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT la)) (== (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT laz)))))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block144() throws Exception {
+	public void testNormal_lhs_block54() throws Exception {
 		// test input: "com.cheeseco.Cheese($type : type == \"stilton\")"
 		Object retval = execParser("normal_lhs_block", "com.cheeseco.Cheese($type : type == \"stilton\")", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -1315,25 +1314,25 @@
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block145() throws Exception {
-		// test input: "\n     Integer() from accumulate( Person( age > 21 ),\n                            init( int x = 0; ),\n                            action( x++; ),\n                            result( new Integer(x) ) );\n"
-		Object retval = execParser("normal_lhs_block", "\n     Integer() from accumulate( Person( age > 21 ),\n                            init( int x = 0; ),\n                            action( x++; ),\n                            result( new Integer(x) ) );\n", false);
+	public void testNormal_lhs_block55() throws Exception {
+		// test input: "     Integer() from accumulate( Person( age > 21 ),\n                            init( int x = 0; ),\n                            action( x++; ),\n                            result( new Integer(x) ) );"
+		Object retval = execParser("normal_lhs_block", "     Integer() from accumulate( Person( age > 21 ),\n                            init( int x = 0; ),\n                            action( x++; ),\n                            result( new Integer(x) ) );", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (from (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Integer))) (accumulate (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT age)) (> 21)))) (VT_ACCUMULATE_INIT_CLAUSE (init ( int x = 0; )) (action ( x++; )) (result ( new Integer(x) ))))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block146() throws Exception {
-		// test input: "\n $counter:Integer() from accumulate( $person : Person( age > 21 ),\n                                     init( int x = 0; ),\n                                     action( x++; ),\n                                     result( new Integer(x) ) );\n"
-		Object retval = execParser("normal_lhs_block", "\n $counter:Integer() from accumulate( $person : Person( age > 21 ),\n                                     init( int x = 0; ),\n                                     action( x++; ),\n                                     result( new Integer(x) ) );\n", false);
+	public void testNormal_lhs_block56() throws Exception {
+		// test input: " $counter:Integer() from accumulate( $person : Person( age > 21 ),\n                                     init( int x = 0; ),\n                                     action( x++; ),\n                                     result( new Integer(x) ) );"
+		Object retval = execParser("normal_lhs_block", " $counter:Integer() from accumulate( $person : Person( age > 21 ),\n                                     init( int x = 0; ),\n                                     action( x++; ),\n                                     result( new Integer(x) ) );", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (from (VT_PATTERN (VT_FACT_BINDING $counter (VT_FACT (VT_PATTERN_TYPE Integer)))) (accumulate (VT_PATTERN (VT_FACT_BINDING $person (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT age)) (> 21))))) (VT_ACCUMULATE_INIT_CLAUSE (init ( int x = 0; )) (action ( x++; )) (result ( new Integer(x) ))))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block147() throws Exception {
+	public void testNormal_lhs_block57() throws Exception {
 		// test input: "$personList : ArrayList() from collect( Person( age > 21 ) );"
 		Object retval = execParser("normal_lhs_block", "$personList : ArrayList() from collect( Person( age > 21 ) );", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -1342,52 +1341,52 @@
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block148() throws Exception {
-		// test input: "\n\tnot ( State( $state : state ) and\n          not( Person( status == $state, $likes : likes ) and\n               Cheese( type == $likes ) ) )\n    Person( name == \"Bob\" )\n    ( Cheese( price == 10 ) or Cheese( type == \"brie\" ) )\n"
-		Object retval = execParser("normal_lhs_block", "\n\tnot ( State( $state : state ) and\n          not( Person( status == $state, $likes : likes ) and\n               Cheese( type == $likes ) ) )\n    Person( name == \"Bob\" )\n    ( Cheese( price == 10 ) or Cheese( type == \"brie\" ) )\n", false);
+	public void testNormal_lhs_block58() throws Exception {
+		// test input: "\tnot ( State( $state : state ) and\n          not( Person( status == $state, $likes : likes ) and\n               Cheese( type == $likes ) ) )\n    Person( name == \"Bob\" )\n    ( Cheese( price == 10 ) or Cheese( type == \"brie\" ) )"
+		Object retval = execParser("normal_lhs_block", "\tnot ( State( $state : state ) and\n          not( Person( status == $state, $likes : likes ) and\n               Cheese( type == $likes ) ) )\n    Person( name == \"Bob\" )\n    ( Cheese( price == 10 ) or Cheese( type == \"brie\" ) )", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (not (and (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE State) (VT_BIND_FIELD $state (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT state)))))) (not (and (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT status)) (== (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT $state)))) (VT_BIND_FIELD $likes (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT likes)))))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Cheese) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (== (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT $likes)))))))))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT name)) (== \"Bob\")))) (or (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Cheese) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT price)) (== 10)))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Cheese) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (== \"brie\"))))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block149() throws Exception {
-		// test input: "\n forall( Person( age > 21, $likes : likes )\n         Cheese( type == $likes ) );\n"
-		Object retval = execParser("normal_lhs_block", "\n forall( Person( age > 21, $likes : likes )\n         Cheese( type == $likes ) );\n", false);
+	public void testNormal_lhs_block59() throws Exception {
+		// test input: " forall( Person( age > 21, $likes : likes )\n         Cheese( type == $likes ) );"
+		Object retval = execParser("normal_lhs_block", " forall( Person( age > 21, $likes : likes )\n         Cheese( type == $likes ) );", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (forall (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT age)) (> 21)) (VT_BIND_FIELD $likes (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT likes)))))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Cheese) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (== (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT $likes))))))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block150() throws Exception {
-		// test input: "\n  \tPerson(age > 30 && < 40)\n  \tVehicle(type in ( \"sedan\", \"wagon\" ), age < 3)\n\t"
-		Object retval = execParser("normal_lhs_block", "\n  \tPerson(age > 30 && < 40)\n  \tVehicle(type in ( \"sedan\", \"wagon\" ), age < 3)\n\t", false);
+	public void testNormal_lhs_block60() throws Exception {
+		// test input: "  \tPerson(age > 30 && < 40)\n  \tVehicle(type in ( \"sedan\", \"wagon\" ), age < 3)\n\t"
+		Object retval = execParser("normal_lhs_block", "  \tPerson(age > 30 && < 40)\n  \tVehicle(type in ( \"sedan\", \"wagon\" ), age < 3)\n\t", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT age)) (&& (> 30) (< 40))))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Vehicle) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (in \"sedan\" \"wagon\")) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT age)) (< 3)))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block151() throws Exception {
-		// test input: "\n  \tPerson(age > 30 && < 40)\n  \tVehicle(type not in ( \"sedan\", \"wagon\" ), age < 3)\n\t"
-		Object retval = execParser("normal_lhs_block", "\n  \tPerson(age > 30 && < 40)\n  \tVehicle(type not in ( \"sedan\", \"wagon\" ), age < 3)\n\t", false);
+	public void testNormal_lhs_block61() throws Exception {
+		// test input: "  \tPerson(age > 30 && < 40)\n  \tVehicle(type not in ( \"sedan\", \"wagon\" ), age < 3)\n\t"
+		Object retval = execParser("normal_lhs_block", "  \tPerson(age > 30 && < 40)\n  \tVehicle(type not in ( \"sedan\", \"wagon\" ), age < 3)\n\t", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT age)) (&& (> 30) (< 40))))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Vehicle) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (in not \"sedan\" \"wagon\")) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT age)) (< 3)))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block152() throws Exception {
-		// test input: "\n\t\tPattern1();\n\t\tPattern2() from x.y.z;\n\t\tPattern5();\n\t\tPattern6();\n\t\tPattern7();\n\t\tPattern3();\n\t\tPattern4() from collect( Pattern5() );\n\t\t"
-		Object retval = execParser("normal_lhs_block", "\n\t\tPattern1();\n\t\tPattern2() from x.y.z;\n\t\tPattern5();\n\t\tPattern6();\n\t\tPattern7();\n\t\tPattern3();\n\t\tPattern4() from collect( Pattern5() );\n\t\t", false);
+	public void testNormal_lhs_block62() throws Exception {
+		// test input: "\t\tPattern1();\n\t\tPattern2() from x.y.z;\n\t\tPattern5();\n\t\tPattern6();\n\t\tPattern7();\n\t\tPattern3();\n\t\tPattern4() from collect( Pattern5() );\n\t\t"
+		Object retval = execParser("normal_lhs_block", "\t\tPattern1();\n\t\tPattern2() from x.y.z;\n\t\tPattern5();\n\t\tPattern6();\n\t\tPattern7();\n\t\tPattern3();\n\t\tPattern4() from collect( Pattern5() );\n\t\t", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Pattern1))) (from (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Pattern2))) (VT_FROM_SOURCE x (. y (. z)))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Pattern5))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Pattern6))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Pattern7))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Pattern3))) (from (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Pattern4))) (collect (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Pattern5))))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block153() throws Exception {
+	public void testNormal_lhs_block63() throws Exception {
 		// test input: " eval( 3==3 ) "
 		Object retval = execParser("normal_lhs_block", " eval( 3==3 ) ", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -1396,70 +1395,70 @@
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block154() throws Exception {
-		// test input: "\n\t\tInteger() from accumulate( Person( age > 21 ),\n\t\t                           init( int x = 0; ),\n\t\t                           action( x++; ),\n\t\t                           reverse( x--; ),\n\t\t                           result( new Integer(x) ) );\n\t\t"
-		Object retval = execParser("normal_lhs_block", "\n\t\tInteger() from accumulate( Person( age > 21 ),\n\t\t                           init( int x = 0; ),\n\t\t                           action( x++; ),\n\t\t                           reverse( x--; ),\n\t\t                           result( new Integer(x) ) );\n\t\t", false);
+	public void testNormal_lhs_block64() throws Exception {
+		// test input: "\t\tInteger() from accumulate( Person( age > 21 ),\n\t\t                           init( int x = 0; ),\n\t\t                           action( x++; ),\n\t\t                           reverse( x--; ),\n\t\t                           result( new Integer(x) ) );\n\t\t"
+		Object retval = execParser("normal_lhs_block", "\t\tInteger() from accumulate( Person( age > 21 ),\n\t\t                           init( int x = 0; ),\n\t\t                           action( x++; ),\n\t\t                           reverse( x--; ),\n\t\t                           result( new Integer(x) ) );\n\t\t", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (from (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Integer))) (accumulate (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT age)) (> 21)))) (VT_ACCUMULATE_INIT_CLAUSE (init ( int x = 0; )) (action ( x++; )) (reverse ( x--; )) (result ( new Integer(x) ))))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block155() throws Exception {
-		// test input: "\n\t     Number() from accumulate( Person( $age : age > 21 ),\n\t                               average( $age ) );\n\t\t"
-		Object retval = execParser("normal_lhs_block", "\n\t     Number() from accumulate( Person( $age : age > 21 ),\n\t                               average( $age ) );\n\t\t", false);
+	public void testNormal_lhs_block65() throws Exception {
+		// test input: "\t     Number() from accumulate( Person( $age : age > 21 ),\n\t                               average( $age ) );\n\t\t"
+		Object retval = execParser("normal_lhs_block", "\t     Number() from accumulate( Person( $age : age > 21 ),\n\t                               average( $age ) );\n\t\t", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (from (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Number))) (accumulate (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Person) (VT_BIND_FIELD $age (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT age)) (> 21))))) (VT_ACCUMULATE_ID_CLAUSE average ( $age )))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block156() throws Exception {
-		// test input: "\n\t     #bellow statement makes no sense, but is useful to test parsing recursiveness\n\t     $personList : ArrayList() from collect( $p : Person( age > 21 || age < 10 ) from collect( People() from $town.getPeople() ) );\n\t\t"
-		Object retval = execParser("normal_lhs_block", "\n\t     #bellow statement makes no sense, but is useful to test parsing recursiveness\n\t     $personList : ArrayList() from collect( $p : Person( age > 21 || age < 10 ) from collect( People() from $town.getPeople() ) );\n\t\t", false);
+	public void testNormal_lhs_block66() throws Exception {
+		// test input: "\t     #bellow statement makes no sense, but is useful to test parsing recursiveness\n\t     $personList : ArrayList() from collect( $p : Person( age > 21 || age < 10 ) from collect( People() from $town.getPeople() ) );\n\t\t"
+		Object retval = execParser("normal_lhs_block", "\t     #bellow statement makes no sense, but is useful to test parsing recursiveness\n\t     $personList : ArrayList() from collect( $p : Person( age > 21 || age < 10 ) from collect( People() from $town.getPeople() ) );\n\t\t", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (from (VT_PATTERN (VT_FACT_BINDING $personList (VT_FACT (VT_PATTERN_TYPE ArrayList)))) (collect (from (VT_PATTERN (VT_FACT_BINDING $p (VT_FACT (VT_PATTERN_TYPE Person) (|| (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT age)) (> 21)) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT age)) (< 10)))))) (collect (from (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE People))) (VT_FROM_SOURCE $town (. getPeople ()))))))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block157() throws Exception {
-		// test input: "\n\t     $personList : ArrayList() from accumulate( Person( $age : age > 21 || < 10 ) from collect( People() from $town.getPeople() ),\n\t                                                max( $age ) );\n\t\t"
-		Object retval = execParser("normal_lhs_block", "\n\t     $personList : ArrayList() from accumulate( Person( $age : age > 21 || < 10 ) from collect( People() from $town.getPeople() ),\n\t                                                max( $age ) );\n\t\t", false);
+	public void testNormal_lhs_block67() throws Exception {
+		// test input: "\t     $personList : ArrayList() from accumulate( Person( $age : age > 21 || < 10 ) from collect( People() from $town.getPeople() ),\n\t                                                max( $age ) );\n\t\t"
+		Object retval = execParser("normal_lhs_block", "\t     $personList : ArrayList() from accumulate( Person( $age : age > 21 || < 10 ) from collect( People() from $town.getPeople() ),\n\t                                                max( $age ) );\n\t\t", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (from (VT_PATTERN (VT_FACT_BINDING $personList (VT_FACT (VT_PATTERN_TYPE ArrayList)))) (accumulate (from (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Person) (VT_BIND_FIELD $age (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT age)) (|| (> 21) (< 10)))))) (collect (from (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE People))) (VT_FROM_SOURCE $town (. getPeople ()))))) (VT_ACCUMULATE_ID_CLAUSE max ( $age )))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block158() throws Exception {
-		// test input: "\n\t    $p : Person( name == \"bob\" )\n\t    $c : Cheese( type == $p.likes ) || Cheese( price == 10 )\n\t    "
-		Object retval = execParser("normal_lhs_block", "\n\t    $p : Person( name == \"bob\" )\n\t    $c : Cheese( type == $p.likes ) || Cheese( price == 10 )\n\t    ", false);
+	public void testNormal_lhs_block68() throws Exception {
+		// test input: "\t    $p : Person( name == \"bob\" )\n\t    $c : Cheese( type == $p.likes ) || Cheese( price == 10 )\n\t    "
+		Object retval = execParser("normal_lhs_block", "\t    $p : Person( name == \"bob\" )\n\t    $c : Cheese( type == $p.likes ) || Cheese( price == 10 )\n\t    ", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (VT_PATTERN (VT_FACT_BINDING $p (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT name)) (== \"bob\"))))) (|| (VT_PATTERN (VT_FACT_BINDING $c (VT_FACT (VT_PATTERN_TYPE Cheese) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (== (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT $p) (VT_ACCESSOR_ELEMENT likes))))))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Cheese) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT price)) (== 10))))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block159() throws Exception {
-		// test input: "\n\t\t     $counter:Integer() from accumulate( $person : Person( age > 21 ) and Cheese( type == $person.likes ),\n\t\t                                         init( int x = 0; ),\n\t\t                                         action( x++; ),\n\t\t                                         result( new Integer(x) ) );\n\t\t\t"
-		Object retval = execParser("normal_lhs_block", "\n\t\t     $counter:Integer() from accumulate( $person : Person( age > 21 ) and Cheese( type == $person.likes ),\n\t\t                                         init( int x = 0; ),\n\t\t                                         action( x++; ),\n\t\t                                         result( new Integer(x) ) );\n\t\t\t", false);
+	public void testNormal_lhs_block69() throws Exception {
+		// test input: "\t\t     $counter:Integer() from accumulate( $person : Person( age > 21 ) and Cheese( type == $person.likes ),\n\t\t                                         init( int x = 0; ),\n\t\t                                         action( x++; ),\n\t\t                                         result( new Integer(x) ) );\n\t\t\t"
+		Object retval = execParser("normal_lhs_block", "\t\t     $counter:Integer() from accumulate( $person : Person( age > 21 ) and Cheese( type == $person.likes ),\n\t\t                                         init( int x = 0; ),\n\t\t                                         action( x++; ),\n\t\t                                         result( new Integer(x) ) );\n\t\t\t", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (from (VT_PATTERN (VT_FACT_BINDING $counter (VT_FACT (VT_PATTERN_TYPE Integer)))) (accumulate (and (VT_PATTERN (VT_FACT_BINDING $person (VT_FACT (VT_PATTERN_TYPE Person) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT age)) (> 21))))) (VT_PATTERN (VT_FACT (VT_PATTERN_TYPE Cheese) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT type)) (== (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT $person) (VT_ACCESSOR_ELEMENT likes))))))) (VT_ACCUMULATE_INIT_CLAUSE (init ( int x = 0; )) (action ( x++; )) (result ( new Integer(x) ))))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block160() throws Exception {
-		// test input: "\n\t\t    $a : EventA()\n\t\t    $b : EventB( this `after[1,10] $a )\n\t\t    $c : EventC( this finishes $b )\n\t\t    $d : EventD( this not starts $a )\n\t\t    $e : EventE( this not `before [1, 10] $b )\n\t\t\t"
-		Object retval = execParser("normal_lhs_block", "\n\t\t    $a : EventA()\n\t\t    $b : EventB( this `after[1,10] $a )\n\t\t    $c : EventC( this finishes $b )\n\t\t    $d : EventD( this not starts $a )\n\t\t    $e : EventE( this not `before [1, 10] $b )\n\t\t\t", false);
+	public void testNormal_lhs_block70() throws Exception {
+		// test input: "\t\t    $a : EventA()\n\t\t    $b : EventB( this after[1,10] $a )\n\t\t    $c : EventC( this finishes $b )\n\t\t    $d : EventD( this not starts $a )\n\t\t    $e : EventE( this not before [1, 10] $b )\n\t\t\t"
+		Object retval = execParser("normal_lhs_block", "\t\t    $a : EventA()\n\t\t    $b : EventB( this after[1,10] $a )\n\t\t    $c : EventC( this finishes $b )\n\t\t    $d : EventD( this not starts $a )\n\t\t    $e : EventE( this not before [1, 10] $b )\n\t\t\t", false);
 		Object actual = examineParserExecResult(10, retval);
 		Object expecting = "(VT_AND_IMPLICIT (VT_PATTERN (VT_FACT_BINDING $a (VT_FACT (VT_PATTERN_TYPE EventA)))) (VT_PATTERN (VT_FACT_BINDING $b (VT_FACT (VT_PATTERN_TYPE EventB) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT this)) (after [1,10] (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT $a))))))) (VT_PATTERN (VT_FACT_BINDING $c (VT_FACT (VT_PATTERN_TYPE EventC) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT this)) (finishes (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT $b))))))) (VT_PATTERN (VT_FACT_BINDING $d (VT_FACT (VT_PATTERN_TYPE EventD) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT this)) (starts not (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT $a))))))) (VT_PATTERN (VT_FACT_BINDING $e (VT_FACT (VT_PATTERN_TYPE EventE) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT this)) (before not [1, 10] (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT $b))))))))";
 
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testNormal_lhs_block161() throws Exception {
+	public void testNormal_lhs_block71() throws Exception {
 		// test input: "StockTick( symbol==\"ACME\") from entry-point StreamA"
 		Object retval = execParser("normal_lhs_block", "StockTick( symbol==\"ACME\") from entry-point StreamA", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -1468,7 +1467,7 @@
 		assertEquals("testing rule "+"normal_lhs_block", expecting, actual);
 	}
 
-	public void testConstraints162() throws Exception {
+	public void testConstraints1() throws Exception {
 		// test input: "eval( $var.equals(\"xyz\") )"
 		Object retval = execParser("constraints", "eval( $var.equals(\"xyz\") )", false);
 		Object actual = examineParserExecResult(10, retval);
@@ -1557,10 +1556,10 @@
 				this.stderr = stderrVacuum.toString();
 				return this.stderr;
 			}
-			if ( parser.hasErrors() ) {
-				this.stderr = parser.getErrors().toString();
-				return this.stderr;
-			}
+            if ( parser.hasErrors() ) {
+                this.stderr = parser.getErrors().toString();
+                return this.stderr;
+            }
 			if ( stdoutVacuum.toString().length()>0 ) {
 				this.stdout = stdoutVacuum.toString();
 			}
@@ -1582,7 +1581,8 @@
 		} catch (IllegalAccessException e) {
 			e.printStackTrace(); System.exit(1);
 		} catch (InvocationTargetException e) {
-			e.printStackTrace(); System.exit(1);
+			this.stderr = "error";
+			return e.getCause().toString();
 		} catch (InterruptedException e) {
 			e.printStackTrace(); System.exit(1);
 		} catch (Exception e) {

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/TestTree2TestDRL.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/TestTree2TestDRL.java	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/TestTree2TestDRL.java	2008-11-25 18:08:44 UTC (rev 24099)
@@ -1,1587 +1,1595 @@
 package org.drools.lang;
 
 import junit.framework.TestCase;
+import java.io.*;
+import java.lang.reflect.*;
+import org.antlr.runtime.*;
+import org.antlr.runtime.tree.*;
+import org.drools.base.evaluators.EvaluatorRegistry;
 
 public class TestTree2TestDRL extends TestCase {
 	String stdout;
 	String stderr;
-	
-	// @FIXME commented out all tests, leaving a dummy one, we need to re-generate th test results
-	public void test() {
+
+	public void setUp() throws Exception {
+		super.setUp();
 		
+		// initializes pluggable operators
+		new EvaluatorRegistry();
 	}
 
-//	public void testPackage_statement_walks_Package_statement1() throws Exception {
-//		// test input: "package foo"
-//		Object retval = execTreeParser("package_statement", "package_statement", "package foo", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"package_statement", expecting, actual);
-//	}
-//
-//	public void testPackage_statement_walks_Package_statement2() throws Exception {
-//		// test input: "package foo.bar.baz;"
-//		Object retval = execTreeParser("package_statement", "package_statement", "package foo.bar.baz;", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"package_statement", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit3() throws Exception {
-//		// test input: ""
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit4() throws Exception {
-//		// test input: "package foo; import com.foo.Bar; import com.foo.Baz;"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package foo; import com.foo.Bar; import com.foo.Baz;", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit5() throws Exception {
-//		// test input: "rule empty \n\nthen\n  \nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule empty \n\nthen\n  \nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit6() throws Exception {
-//		// test input: "#the purpose of this is to see what happens when we have some partially damaged syntax\n#as the IDE uses the parsers AST to work out completion suggestions.\npackage test\n\n\nrule simple_rule \n  when\n    foo3 : Bar(\n\n"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "#the purpose of this is to see what happens when we have some partially damaged syntax\n#as the IDE uses the parsers AST to work out completion suggestions.\npackage test\n\n\nrule simple_rule \n  when\n    foo3 : Bar(\n\n", false);
-//		Object actual = examineParserExecResult(28, retval);
-//		Object expecting = "FAIL";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit7() throws Exception {
-//		// test input: "package test.templates\n\ntemplate Cheese\n\tString \tname\n\tInteger age\nend\n\ntemplate \"Wine\"\n\tString \t\tname\n\tString \t\tyear\n\tString[] \taccolades\nend\n\n\nrule \"a rule\"\n  when\n\tCheese(name == \"Stilton\", age==2001)\n\tWine(name == \"Grange\", age == \"1978\", accolades contains \"world champion\")\n  then\n  \tbaz();\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package test.templates\n\ntemplate Cheese\n\tString \tname\n\tInteger age\nend\n\ntemplate \"Wine\"\n\tString \t\tname\n\tString \t\tyear\n\tString[] \taccolades\nend\n\n\nrule \"a rule\"\n  when\n\tCheese(name == \"Stilton\", age==2001)\n\tWine(name == \"Grange\", age == \"1978\", accolades contains \"world champion\")\n  then\n  \tbaz();\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit8() throws Exception {
-//		// test input: "package foo\n\nrule rule_one \n  when\n  \tFoo()\n  then\n  \t if (speed > speedLimit ? true : false;)\n     pullEmOver();\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package foo\n\nrule rule_one \n  when\n  \tFoo()\n  then\n  \t if (speed > speedLimit ? true : false;)\n     pullEmOver();\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit9() throws Exception {
-//		// test input: "package foo\n\nfunction String[] yourFunction(String args[]) {\n     baz();\n}\n\nrule \"new rule\"\n\n\twhen\n\t\tSomething()\n\tthen\n\t\tyourFunction(new String[3] {\"a\",\"b\",\"c\"});\n\t\t\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package foo\n\nfunction String[] yourFunction(String args[]) {\n     baz();\n}\n\nrule \"new rule\"\n\n\twhen\n\t\tSomething()\n\tthen\n\t\tyourFunction(new String[3] {\"a\",\"b\",\"c\"});\n\t\t\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit10() throws Exception {
-//		// test input: "\nrule almost_empty \n  when\n  then\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nrule almost_empty \n  when\n  then\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit11() throws Exception {
-//		// test input: "rule \"quoted string name\"\n  when\n  then\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"quoted string name\"\n  when\n  then\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit12() throws Exception {
-//		// test input: "\nrule rule1 \n  no-loop false\n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nrule rule1 \n  no-loop false\n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit13() throws Exception {
-//		// test input: "\nrule rule1 \n  auto-focus true\n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nrule rule1 \n  auto-focus true\n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit14() throws Exception {
-//		// test input: "\nrule rule1 \n  ruleflow-group \"a group\"\n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nrule rule1 \n  ruleflow-group \"a group\"\n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit15() throws Exception {
-//		// test input: "\n\nrule myrule \n  when\n  then\n  \tint i = 0;\n\ti = 1;\n\ti / 1;\n\ti == 1;\n\ti(i);\n\ti = 'i';\n\ti.i.i;\n\ti\\i;\n\ti<i;\n\ti>i;\n\ti=\"i\";\t\n\t++i;\n\ti++;\n\t--i;\n\ti--;\n\ti += i;\n\ti -= i;\n\ti *= i;\n\ti /= i;\n\tint i = 5;\n\tfor(int j; j<i; ++j) {\n\t  System.out.println(j);\n\t}\t\n\tObject o = new String(\"Hello\");\n\tString s = (String) o;\t\n\t\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\n\nrule myrule \n  when\n  then\n  \tint i = 0;\n\ti = 1;\n\ti / 1;\n\ti == 1;\n\ti(i);\n\ti = 'i';\n\ti.i.i;\n\ti\\i;\n\ti<i;\n\ti>i;\n\ti=\"i\";\t\n\t++i;\n\ti++;\n\t--i;\n\ti--;\n\ti += i;\n\ti -= i;\n\ti *= i;\n\ti /= i;\n\tint i = 5;\n\tfor(int j; j<i; ++j) {\n\t  System.out.println(j);\n\t}\t\n\tObject o = new String(\"Hello\");\n\tString s = (String) o;\t\n\t\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit16() throws Exception {
-//		// test input: "#check that it can handle true/false literals, and \n#negative numbers\nrule simple_rule \n  when\n\tFoo(bar == false)\n\tFoo(boo > -42)\n\tFoo(boo > -42.42)\n  then\n\tcons();\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "#check that it can handle true/false literals, and \n#negative numbers\nrule simple_rule \n  when\n\tFoo(bar == false)\n\tFoo(boo > -42)\n\tFoo(boo > -42.42)\n  then\n\tcons();\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit17() throws Exception {
-//		// test input: "package org.drools.test;\n \nimport org.drools.Cheese;\n \nrule \"simple rule\"\n    when\n        Cheese( )\n    then\nend "
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package org.drools.test;\n \nimport org.drools.Cheese;\n \nrule \"simple rule\"\n    when\n        Cheese( )\n    then\nend ", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit18() throws Exception {
-//		// test input: "\nrule blah\n\n when \n\n\tCol1() from something.doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\n\tCol2()\n then\n\tpartay();\nend\t"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nrule blah\n\n when \n\n\tCol1() from something.doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\n\tCol2()\n then\n\tpartay();\nend\t", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit19() throws Exception {
-//		// test input: "\nrule blah\n\n when \n\n\tCol1() from doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\n\tCol2()\n then\n\tpartay();\nend\t"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nrule blah\n\n when \n\n\tCol1() from doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\n\tCol2()\n then\n\tpartay();\nend\t", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit20() throws Exception {
-//		// test input: "\nrule blah\n\n when \n\n\tCol1() from something.doIt\n\tCol2()\n then\n\tpartay();\nend\t"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nrule blah\n\n when \n\n\tCol1() from something.doIt\n\tCol2()\n then\n\tpartay();\nend\t", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit21() throws Exception {
-//		// test input: "\nrule blah\n\n when \n\n\tCol1() from something.doIt[\"key\"]\n\tCol2()\n then\n\tpartay();\nend\t"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nrule blah\n\n when \n\n\tCol1() from something.doIt[\"key\"]\n\tCol2()\n then\n\tpartay();\nend\t", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit22() throws Exception {
-//		// test input: "rule blah\n when \n\tCol1() from doIt1( foo,bar,42,\"hello\",{ a => \"b\"}, [a, \"b\", 42] )\n\t            .doIt2(bar, [a, \"b\", 42]).field[\"key\"]\n\tCol2()\n then\n\tpartay();\nend\t"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule blah\n when \n\tCol1() from doIt1( foo,bar,42,\"hello\",{ a => \"b\"}, [a, \"b\", 42] )\n\t            .doIt2(bar, [a, \"b\", 42]).field[\"key\"]\n\tCol2()\n then\n\tpartay();\nend\t", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit23() throws Exception {
-//		// test input: "\nrule simple_rule \n  when\n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n  then\n  if ( a == b ) {\n    assert( foo3 );\n  } else {\n    retract( foo4 );\n  } \n  System.out.println( a4 );\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nrule simple_rule \n  when\n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n  then\n  if ( a == b ) {\n    assert( foo3 );\n  } else {\n    retract( foo4 );\n  } \n  System.out.println( a4 );\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit24() throws Exception {
-//		// test input: "#this is for showing off all the new multi restriction stuff\n\n\n\n\nrule simple_rule \n  when\n  \tPerson(age > 30 && < 40)\n  \tVehicle(type == \"sedan\" || == \"wagon\", age < 3)\n  then\n\tconsequence();\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "#this is for showing off all the new multi restriction stuff\n\n\n\n\nrule simple_rule \n  when\n  \tPerson(age > 30 && < 40)\n  \tVehicle(type == \"sedan\" || == \"wagon\", age < 3)\n  then\n\tconsequence();\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit25() throws Exception {
-//		// test input: "package la\n\n\nrule simple_rule \n  when\n  \tBaz()\n  then\n  \t//woot\n  \tfirst\n  \t\n  \t#\n  \t\n  \t/* lala\n  \t\n  \t*/\n  \tsecond  \nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package la\n\n\nrule simple_rule \n  when\n  \tBaz()\n  then\n  \t//woot\n  \tfirst\n  \t\n  \t#\n  \t\n  \t/* lala\n  \t\n  \t*/\n  \tsecond  \nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit26() throws Exception {
-//		// test input: "\nrule simple_rule \n  when\n    foo3 : Bar(a==3) ; foo4 : Bar(a4:a==4) ; Baz()\n  then\n  if ( a == b ) {\n    assert( foo3 );\n  } else {\n    retract( foo4 );\n  } \n  System.out.println( a4 );\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nrule simple_rule \n  when\n    foo3 : Bar(a==3) ; foo4 : Bar(a4:a==4) ; Baz()\n  then\n  if ( a == b ) {\n    assert( foo3 );\n  } else {\n    retract( foo4 );\n  } \n  System.out.println( a4 );\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit27() throws Exception {
-//		// test input: "\nrule simple_rule \n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nrule simple_rule \n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit28() throws Exception {
-//		// test input: "package HR1\n\nimport function abd.def.x\nimport function qed.wah.*\n\nrule simple_rule \n  when  \t\t  \t\n  \tnot ( Cheese(type == \"stilton\") )\n  \texists ( Foo() )\n  then\n\tfunky();\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package HR1\n\nimport function abd.def.x\nimport function qed.wah.*\n\nrule simple_rule \n  when  \t\t  \t\n  \tnot ( Cheese(type == \"stilton\") )\n  \texists ( Foo() )\n  then\n\tfunky();\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit29() throws Exception {
-//		// test input: "package HR1\n\nrule simple_rule \n  when  \t\t  \t\n  \tnot ( Cheese(type == \"stilton\") )\n  \texists ( Foo() )\n  then\n\tfunky();\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package HR1\n\nrule simple_rule \n  when  \t\t  \t\n  \tnot ( Cheese(type == \"stilton\") )\n  \texists ( Foo() )\n  then\n\tfunky();\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit30() throws Exception {
-//		// test input: "package HR2\n\nrule simple_rule \n  when  \t\t  \t\n  \ta : (not ( Cheese(type == \"stilton\") ))\n  \texists ( Foo() )\n  then\n\tfunky();\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package HR2\n\nrule simple_rule \n  when  \t\t  \t\n  \ta : (not ( Cheese(type == \"stilton\") ))\n  \texists ( Foo() )\n  then\n\tfunky();\nend", false);
-//		Object actual = examineParserExecResult(28, retval);
-//		Object expecting = "FAIL";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit31() throws Exception {
-//		// test input: "\n\nquery \"simple_query\" \n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n\t\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\n\nquery \"simple_query\" \n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n\t\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit32() throws Exception {
-//		// test input: "\npackage foo\n\nrule bar\n\twhen\n\t\tBaz()\n\tthen\n\t\tBoo()\nend\n\nquery \"simple_query\" \n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n\t\nend\n\nrule bar2\n\twhen\n\t\tBaz()\n\tthen\n\t\tBoo()\nend\n\nquery \"simple_query2\" \n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n\t\nend\n\t"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\npackage foo\n\nrule bar\n\twhen\n\t\tBaz()\n\tthen\n\t\tBoo()\nend\n\nquery \"simple_query\" \n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n\t\nend\n\nrule bar2\n\twhen\n\t\tBaz()\n\tthen\n\t\tBoo()\nend\n\nquery \"simple_query2\" \n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n\t\nend\n\t", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit33() throws Exception {
-//		// test input: "package org.drools.test;\n\nimport org.drools.integrationtests.Cheese;\n\nrule \"Like Stilton\"\n    when\n        Cheese( t:type == \"stilton\" )\n    then\n        System.out.println(\"I like \" + t);\nend    \n\nrule \"Like Cheddar\"\n    when\n        Cheese( t:type == \"cheddar\" )\n    then\n        System.out.println(\"I like \" + t );\nend    "
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package org.drools.test;\n\nimport org.drools.integrationtests.Cheese;\n\nrule \"Like Stilton\"\n    when\n        Cheese( t:type == \"stilton\" )\n    then\n        System.out.println(\"I like \" + t);\nend    \n\nrule \"Like Cheddar\"\n    when\n        Cheese( t:type == \"cheddar\" )\n    then\n        System.out.println(\"I like \" + t );\nend    ", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit34() throws Exception {
-//		// test input: "package org.drools.test;\n\nimport org.drools.Cheese;\n\nrule \"like cheddar\"\n    when\n        Cheese( $type:type )\n    then\n        System.out.println(\"I like \" + $type);\nend    "
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package org.drools.test;\n\nimport org.drools.Cheese;\n\nrule \"like cheddar\"\n    when\n        Cheese( $type:type )\n    then\n        System.out.println(\"I like \" + $type);\nend    ", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit35() throws Exception {
-//		// test input: "package org.drools.test;\n\nimport org.drools.Cheese;\nimport org.drools.Person;\n\nrule \"Who likes Stilton\"\n    when\n        Cheese($type : type == \"stilton\")\n        $person : Person($name : name == \"bob\", likes == $type)        \n    then\n        System.out.println( $name + \" likes \" + $type);\nend    "
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package org.drools.test;\n\nimport org.drools.Cheese;\nimport org.drools.Person;\n\nrule \"Who likes Stilton\"\n    when\n        Cheese($type : type == \"stilton\")\n        $person : Person($name : name == \"bob\", likes == $type)        \n    then\n        System.out.println( $name + \" likes \" + $type);\nend    ", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit36() throws Exception {
-//		// test input: "\nimport org.drools.Person\n\nrule simple_rule \n  when\n\tPerson(name == \"mark\") or \n\t( Person(type == \"fan\") and Cheese(type == \"green\") )\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nimport org.drools.Person\n\nrule simple_rule \n  when\n\tPerson(name == \"mark\") or \n\t( Person(type == \"fan\") and Cheese(type == \"green\") )\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit37() throws Exception {
-//		// test input: "\nimport org.drools.Person\n\nrule simple_rule \n  when\n    Person(name == \"mark\") && Cheese(type == \"stilton\")\n    Person(name == \"mark\") || Cheese(type == \"stilton\")\n  then\n\tSystem.out.println( \"Mark and Michael\" );\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nimport org.drools.Person\n\nrule simple_rule \n  when\n    Person(name == \"mark\") && Cheese(type == \"stilton\")\n    Person(name == \"mark\") || Cheese(type == \"stilton\")\n  then\n\tSystem.out.println( \"Mark and Michael\" );\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit38() throws Exception {
-//		// test input: "\nimport org.drools.Person\n\nrule simple_rule \n  when\n\tfoo :  ( Person(name == \"mark\") or Person(type == \"fan\") ) \n\tCheese(type == \"green\")\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nimport org.drools.Person\n\nrule simple_rule \n  when\n\tfoo :  ( Person(name == \"mark\") or Person(type == \"fan\") ) \n\tCheese(type == \"green\")\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit39() throws Exception {
-//		// test input: "\n\nrule simple_rule \n  when\n\tfoo : ( Person(name == \"mark\") \n\t\tor \n\t\tPerson(type == \"fan\") )\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\n\nrule simple_rule \n  when\n\tfoo : ( Person(name == \"mark\") \n\t\tor \n\t\tPerson(type == \"fan\") )\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit40() throws Exception {
-//		// test input: "rule simple_rule \n  when\n\tfoo : ( \n\t\tPerson(name == \"mark\") or Person(type == \"fan\") \n\t\t)\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule simple_rule \n  when\n\tfoo : ( \n\t\tPerson(name == \"mark\") or Person(type == \"fan\") \n\t\t)\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit41() throws Exception {
-//		// test input: "\nrule simple_rule \n  when\n\t ( (not Foo(x==\"a\") or Foo(x==\"y\") ) and ( Shoes() or Butt() ) )\n  then\n\tgo wild\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nrule simple_rule \n  when\n\t ( (not Foo(x==\"a\") or Foo(x==\"y\") ) and ( Shoes() or Butt() ) )\n  then\n\tgo wild\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit42() throws Exception {
-//		// test input: "\nrule simple_rule \n  when\n\teval(abc(\"foo\") + 5)\n\tFoo()\n\teval(qed())\n\tBar()\n  then\n\tKapow\n\tPoof\n\t\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nrule simple_rule \n  when\n\teval(abc(\"foo\") + 5)\n\tFoo()\n\teval(qed())\n\tBar()\n  then\n\tKapow\n\tPoof\n\t\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit43() throws Exception {
-//		// test input: "\nrule simple_rule \n  when\n\tFoo()\n\tBar()\n\teval(abc(\"foo\"))\n  then\n\tKapow\n\t\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nrule simple_rule \n  when\n\tFoo()\n\tBar()\n\teval(abc(\"foo\"))\n  then\n\tKapow\n\t\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit44() throws Exception {
-//		// test input: "\nrule simple_rule \n  when\n\tFoo(name== (a + b))\n  then\n\tKapow\n\t\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nrule simple_rule \n  when\n\tFoo(name== (a + b))\n  then\n\tKapow\n\t\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit45() throws Exception {
-//		// test input: "\nrule simple_rule \n  when\n  \tPerson( $age2:age -> ($age2 == $age1+2 ) ) \n  then\n\tfoo bar\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nrule simple_rule \n  when\n  \tPerson( $age2:age -> ($age2 == $age1+2 ) ) \n  then\n\tfoo bar\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit46() throws Exception {
-//		// test input: "package org.drools.test;\n\nimport org.drools.Cheese;\n\nglobal java.util.List list;\nglobal java.lang.Integer five;\n\nrule \"not rule test\"\n    when\n        $person : Person( $likes:like )\n        not Cheese( type == $likes )\n    then\n\t\tlist.add( $person );\nend    "
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package org.drools.test;\n\nimport org.drools.Cheese;\n\nglobal java.util.List list;\nglobal java.lang.Integer five;\n\nrule \"not rule test\"\n    when\n        $person : Person( $likes:like )\n        not Cheese( type == $likes )\n    then\n\t\tlist.add( $person );\nend    ", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit47() throws Exception {
-//		// test input: "package org.drools.test;\n\nimport org.drools.Cheese;\n\nglobal java.lang.String foo\nglobal java.lang.Integer bar;\n\nrule baz\n    when\n        Cheese( )\n    then\n\nend    "
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package org.drools.test;\n\nimport org.drools.Cheese;\n\nglobal java.lang.String foo\nglobal java.lang.Integer bar;\n\nrule baz\n    when\n        Cheese( )\n    then\n\nend    ", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit48() throws Exception {
-//		// test input: "\nimport java.lang.String\n\nfunction String functionA(String s, Integer i) {\n\t\n\tfoo();\n\n}\n\nfunction void functionB() {\n\tbar();\t\n}\n\n\nrule something \n\twhen\n\tthen\nend\n\nrule \"one more thing\"\n\twhen\n\tthen\nend\n\n\n\n\t"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nimport java.lang.String\n\nfunction String functionA(String s, Integer i) {\n\t\n\tfoo();\n\n}\n\nfunction void functionB() {\n\tbar();\t\n}\n\n\nrule something \n\twhen\n\tthen\nend\n\nrule \"one more thing\"\n\twhen\n\tthen\nend\n\n\n\n\t", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit49() throws Exception {
-//		// test input: "#this starts with a comment\npackage foo.bar\n\n//and another comment\n\n/*\nyet\n\t   another\n   \t\t\t\tstyle\n*/\n\nrule \"test\"\n  when\n  then\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "#this starts with a comment\npackage foo.bar\n\n//and another comment\n\n/*\nyet\n\t   another\n   \t\t\t\tstyle\n*/\n\nrule \"test\"\n  when\n  then\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit50() throws Exception {
-//		// test input: "\n\n\nrule simple_rule \n\t\t#attributes keywork (and colon) is totally optional\n\t\tsalience 42\n\t\tagenda-group \"my_group\"\n\t\tno-loop \n\t\tduration 42\n\t\tactivation-group \"my_activation_group\"\n\t\tlock-on-active true\n\twhen\n\t\tFoo()\n\tthen\n\t\tbar();\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\n\n\nrule simple_rule \n\t\t#attributes keywork (and colon) is totally optional\n\t\tsalience 42\n\t\tagenda-group \"my_group\"\n\t\tno-loop \n\t\tduration 42\n\t\tactivation-group \"my_activation_group\"\n\t\tlock-on-active true\n\twhen\n\t\tFoo()\n\tthen\n\t\tbar();\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit51() throws Exception {
-//		// test input: "\n\n\nrule simple_rule \n\tattributes: \n\t\tsalience 42, agenda-group \"my_group\", no-loop,  lock-on-active, duration 42, activation-group \"my_activation_group\"\n\twhen\n\t\tFoo()\n\tthen\n\t\tbar();\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\n\n\nrule simple_rule \n\tattributes: \n\t\tsalience 42, agenda-group \"my_group\", no-loop,  lock-on-active, duration 42, activation-group \"my_activation_group\"\n\twhen\n\t\tFoo()\n\tthen\n\t\tbar();\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit52() throws Exception {
-//		// test input: "\nrule simple_rule \n  when\n  \tFoo(bar == Foo.BAR)\n  then\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nrule simple_rule \n  when\n  \tFoo(bar == Foo.BAR)\n  then\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit53() throws Exception {
-//		// test input: "rule one\n  when\n    exists Foo()\n    exits Bar()\n  then\nend\n\nrule two \n  when\n    ford = ford = ford\n  then\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule one\n  when\n    exists Foo()\n    exits Bar()\n  then\nend\n\nrule two \n  when\n    ford = ford = ford\n  then\nend", false);
-//		Object actual = examineParserExecResult(28, retval);
-//		Object expecting = "FAIL";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit54() throws Exception {
-//		// test input: "\nrule \"another test\"\n    when\n        s : String()\n        eval(s.equals(\"foo\") && s.startsWith(\"f\"))\n        \n        \n    then\n        list.add( s );\nend "
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nrule \"another test\"\n    when\n        s : String()\n        eval(s.equals(\"foo\") && s.startsWith(\"f\"))\n        \n        \n    then\n        list.add( s );\nend ", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit55() throws Exception {
-//		// test input: "package nesting;\n\n\n\n\nrule \"test something\"\n\n\twhen\n\t\tp: Person( name soundslike \"Michael\" )\n\tthen\n\t\tp.name = \"goober\"\n\t\tSystem.out.println(p.name)\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package nesting;\n\n\n\n\nrule \"test something\"\n\n\twhen\n\t\tp: Person( name soundslike \"Michael\" )\n\tthen\n\t\tp.name = \"goober\"\n\t\tSystem.out.println(p.name)\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit56() throws Exception {
-//		// test input: "package com.foo;\n\nagenda-group \"x\"\n\nimport goo.ber\nimport wee.waa\n\n\ndialect \"java\"\n\n\n\n\nrule bar\n  when\n  then\nend\n\nrule baz\n  dialect \"mvel\"\n  when\n  then\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package com.foo;\n\nagenda-group \"x\"\n\nimport goo.ber\nimport wee.waa\n\n\ndialect \"java\"\n\n\n\n\nrule bar\n  when\n  then\nend\n\nrule baz\n  dialect \"mvel\"\n  when\n  then\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit57() throws Exception {
-//		// test input: "\npackage com.foo;\n\nimport im.one\n\nimport im.two\n\nrule foo\n  when\n  then\nend\n\nfunction cheeseIt() {\n\n}\n\nimport im.three;\n\nrule bar\n  when\n  then\nend\n\nfunction uncheeseIt() {\n\n}\n\nimport im.four;"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\npackage com.foo;\n\nimport im.one\n\nimport im.two\n\nrule foo\n  when\n  then\nend\n\nfunction cheeseIt() {\n\n}\n\nimport im.three;\n\nrule bar\n  when\n  then\nend\n\nfunction uncheeseIt() {\n\n}\n\nimport im.four;", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit58() throws Exception {
-//		// test input: "\nrule \"1. Do Stuff!\"\n  when\n  then\nend\n\nrule \"2. Do More Stuff!\"\n  when\n  then\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nrule \"1. Do Stuff!\"\n  when\n  then\nend\n\nrule \"2. Do More Stuff!\"\n  when\n  then\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit59() throws Exception {
-//		// test input: "\nrule simple_rule \n  when\n\tFoo()\n\tBar()\n\teval(\n\t\n\t\n\t\n\t       abc(\n\t       \n\t       \"foo\") + \n\t       5\n\t       \n\t       \n\t       \n\t        \n\t       )\n  then\n\tKapow\n\tPoof\n\t\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nrule simple_rule \n  when\n\tFoo()\n\tBar()\n\teval(\n\t\n\t\n\t\n\t       abc(\n\t       \n\t       \"foo\") + \n\t       5\n\t       \n\t       \n\t       \n\t        \n\t       )\n  then\n\tKapow\n\tPoof\n\t\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit60() throws Exception {
-//		// test input: "\nrule simple_rule \n  when\n\teval(abc();)\n  then\n\tKapow\n\tPoof\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nrule simple_rule \n  when\n\teval(abc();)\n  then\n\tKapow\n\tPoof\nend", false);
-//		Object actual = examineParserExecResult(28, retval);
-//		Object expecting = "FAIL";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit61() throws Exception {
-//		// test input: "\n\n\nrule simple_rule \n  when\n\tFoo(\n\t  bar == baz, la==laz\n\t  )\n  then\n\tKapow\n\tPoof\nend\n\t"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\n\n\nrule simple_rule \n  when\n\tFoo(\n\t  bar == baz, la==laz\n\t  )\n  then\n\tKapow\n\tPoof\nend\n\t", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit62() throws Exception {
-//		// test input: "package org.drools.test;\n\nrule \"Who likes Stilton\"\n    when\n        com.cheeseco.Cheese($type : type == \"stilton\")\n    then\n        System.out.println( $name + \" likes \" + $type);\nend    "
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package org.drools.test;\n\nrule \"Who likes Stilton\"\n    when\n        com.cheeseco.Cheese($type : type == \"stilton\")\n    then\n        System.out.println( $name + \" likes \" + $type);\nend    ", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit63() throws Exception {
-//		// test input: "rule \"AccumulateParserTest\"\nwhen\n     Integer() from accumulate( Person( age > 21 ),\n                                init( int x = 0; ),\n                                action( x++; ),\n                                result( new Integer(x) ) );\nthen\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"AccumulateParserTest\"\nwhen\n     Integer() from accumulate( Person( age > 21 ),\n                                init( int x = 0; ),\n                                action( x++; ),\n                                result( new Integer(x) ) );\nthen\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit64() throws Exception {
-//		// test input: "rule \"AccumulateParserTest\"\nwhen\n     $counter:Integer() from accumulate( $person : Person( age > 21 ),\n                                         init( int x = 0; ),\n                                         action( x++; ),\n                                         result( new Integer(x) ) );\nthen\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"AccumulateParserTest\"\nwhen\n     $counter:Integer() from accumulate( $person : Person( age > 21 ),\n                                         init( int x = 0; ),\n                                         action( x++; ),\n                                         result( new Integer(x) ) );\nthen\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit65() throws Exception {
-//		// test input: "rule \"CollectParserTest\"\nwhen\n     $personList : ArrayList() from collect( Person( age > 21 ) );\nthen\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"CollectParserTest\"\nwhen\n     $personList : ArrayList() from collect( Person( age > 21 ) );\nthen\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit66() throws Exception {
-//		// test input: "rule \"test_Quotes\"\n   when\n      InitialFact()\n   then\n      String s = \"\\\"\\n\\t\\\\\";\nend "
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"test_Quotes\"\n   when\n      InitialFact()\n   then\n      String s = \"\\\"\\n\\t\\\\\";\nend ", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit67() throws Exception {
-//		// test input: "rule \"test nested CEs\"\t\n\twhen\n\t    not ( State( $state : state ) and\n\t          not( Person( status == $state, $likes : likes ) and\n\t               Cheese( type == $likes ) ) )\n\t    Person( name == \"Bob\" )\n\t    ( Cheese( price == 10 ) or Cheese( type == \"brie\" ) )\n\tthen \n\t\tresults.add(\"OK\");\t\t\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"test nested CEs\"\t\n\twhen\n\t    not ( State( $state : state ) and\n\t          not( Person( status == $state, $likes : likes ) and\n\t               Cheese( type == $likes ) ) )\n\t    Person( name == \"Bob\" )\n\t    ( Cheese( price == 10 ) or Cheese( type == \"brie\" ) )\n\tthen \n\t\tresults.add(\"OK\");\t\t\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit68() throws Exception {
-//		// test input: "rule \"ForallParserTest\"\nwhen\n     forall( Person( age > 21, $likes : likes )\n             Cheese( type == $likes ) );\nthen\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"ForallParserTest\"\nwhen\n     forall( Person( age > 21, $likes : likes )\n             Cheese( type == $likes ) );\nthen\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit69() throws Exception {
-//		// test input: "#testing 'in' operator\n\nrule simple_rule \n  when\n  \tPerson(age > 30 && < 40)\n  \tVehicle(type in ( \"sedan\", \"wagon\" ), age < 3)\n  then\n\tconsequence();\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "#testing 'in' operator\n\nrule simple_rule \n  when\n  \tPerson(age > 30 && < 40)\n  \tVehicle(type in ( \"sedan\", \"wagon\" ), age < 3)\n  then\n\tconsequence();\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit70() throws Exception {
-//		// test input: "#testing not 'in' operator\n\nrule simple_rule \n  when\n  \tPerson(age > 30 && < 40)\n  \tVehicle(type not in ( \"sedan\", \"wagon\" ), age < 3)\n  then\n\tconsequence();\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "#testing not 'in' operator\n\nrule simple_rule \n  when\n  \tPerson(age > 30 && < 40)\n  \tVehicle(type not in ( \"sedan\", \"wagon\" ), age < 3)\n  then\n\tconsequence();\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit71() throws Exception {
-//		// test input: "package org.drools;\n\nglobal java.util.List list;\n\nrule \"rule1\"\nwhen\n    Pattern1();\n    Pattern2() from x.y.z;\nthen\n    System.out.println(\"Test\");\nend;\n\nquery \"query1\"\n\tPattern5();\n\tPattern6();\n\tPattern7();\nend;\n\nrule \"rule2\"\nwhen\n    Pattern3();\n    Pattern4() from collect( Pattern5() );\nthen\n    System.out.println(\"Test\");\nend;\n\n\t"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package org.drools;\n\nglobal java.util.List list;\n\nrule \"rule1\"\nwhen\n    Pattern1();\n    Pattern2() from x.y.z;\nthen\n    System.out.println(\"Test\");\nend;\n\nquery \"query1\"\n\tPattern5();\n\tPattern6();\n\tPattern7();\nend;\n\nrule \"rule2\"\nwhen\n    Pattern3();\n    Pattern4() from collect( Pattern5() );\nthen\n    System.out.println(\"Test\");\nend;\n\n\t", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit72() throws Exception {
-//		// test input: "package org.drools\n\nrule \"Test Parse\"\n\nwhen\n    eval( 3==3 )\nthen\n    System.out.println(\"OK\");\nend "
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package org.drools\n\nrule \"Test Parse\"\n\nwhen\n    eval( 3==3 )\nthen\n    System.out.println(\"OK\");\nend ", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit73() throws Exception {
-//		// test input: "rule \"AccumulateReverseParserTest\"\nwhen\n     Integer() from accumulate( Person( age > 21 ),\n                                init( int x = 0; ),\n                                action( x++; ),\n                                reverse( x--; ),\n                                result( new Integer(x) ) );\nthen\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"AccumulateReverseParserTest\"\nwhen\n     Integer() from accumulate( Person( age > 21 ),\n                                init( int x = 0; ),\n                                action( x++; ),\n                                reverse( x--; ),\n                                result( new Integer(x) ) );\nthen\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit74() throws Exception {
-//		// test input: "rule \"AccumulateReverseParserTest\"\nwhen\n     Number() from accumulate( Person( $age : age > 21 ),\n                               average( $age ) );\nthen\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"AccumulateReverseParserTest\"\nwhen\n     Number() from accumulate( Person( $age : age > 21 ),\n                               average( $age ) );\nthen\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit75() throws Exception {
-//		// test input: "rule \"CollectParserTest\"\nwhen\n     #bellow statement makes no sense, but is useful to test parsing recursiveness\n     $personList : ArrayList() from collect( $p : Person( age > 21 || age < 10 ) from collect( People() from $town.getPeople() ) );\nthen\nend\n\n\t"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"CollectParserTest\"\nwhen\n     #bellow statement makes no sense, but is useful to test parsing recursiveness\n     $personList : ArrayList() from collect( $p : Person( age > 21 || age < 10 ) from collect( People() from $town.getPeople() ) );\nthen\nend\n\n\t", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit76() throws Exception {
-//		// test input: "rule \"AccumulateParserTest\"\nwhen\n     #bellow statement makes no sense, but is useful to test parsing recursiveness\n     $personList : ArrayList() from accumulate( Person( $age : age > 21 || < 10 ) from collect( People() from $town.getPeople() ),\n                                                max( $age ) );\nthen\nend\n\n\t"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"AccumulateParserTest\"\nwhen\n     #bellow statement makes no sense, but is useful to test parsing recursiveness\n     $personList : ArrayList() from accumulate( Person( $age : age > 21 || < 10 ) from collect( People() from $town.getPeople() ),\n                                                max( $age ) );\nthen\nend\n\n\t", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit77() throws Exception {
-//		// test input: "package org.drools;\n\nrule \"testing OR CE\"\nwhen\n    $p : Person( name == \"bob\" )\n    $c : Cheese( type == $p.likes ) || Cheese( price == 10 )\nthen\n    // do something\nend "
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package org.drools;\n\nrule \"testing OR CE\"\nwhen\n    $p : Person( name == \"bob\" )\n    $c : Cheese( type == $p.likes ) || Cheese( price == 10 )\nthen\n    // do something\nend ", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit78() throws Exception {
-//		// test input: "rule \"another test\" salience 10 when eval( true ) then System.out.println(1); end"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"another test\" salience 10 when eval( true ) then System.out.println(1); end", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit79() throws Exception {
-//		// test input: "rule \"another test\" salience 10 when eval( true ) then System.out.println(1);\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"another test\" salience 10 when eval( true ) then System.out.println(1);\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit80() throws Exception {
-//		// test input: "rule \"AccumulateMultiPatternParserTest\"\nwhen\n     $counter:Integer() from accumulate( $person : Person( age > 21 ) and Cheese( type == $person.likes ),\n                                         init( int x = 0; ),\n                                         action( x++; ),\n                                         result( new Integer(x) ) );\nthen\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"AccumulateMultiPatternParserTest\"\nwhen\n     $counter:Integer() from accumulate( $person : Person( age > 21 ) and Cheese( type == $person.likes ),\n                                         init( int x = 0; ),\n                                         action( x++; ),\n                                         result( new Integer(x) ) );\nthen\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit81() throws Exception {
-//		// test input: "package org.drools;\n\nrule \"test rule\"\n\tsalience 10\n\twhen\n\t\t$c: WorkerPerformanceContext(eval)$c.getBalanceMonth() != null))\n\tthen\n\t\tretract($p);\nend\n\t"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package org.drools;\n\nrule \"test rule\"\n\tsalience 10\n\twhen\n\t\t$c: WorkerPerformanceContext(eval)$c.getBalanceMonth() != null))\n\tthen\n\t\tretract($p);\nend\n\t", false);
-//		Object actual = examineParserExecResult(28, retval);
-//		Object expecting = "FAIL";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit82() throws Exception {
-//		// test input: "package org.drools;\n\nrule \"Avoid NPE on wrong syntax\"\nwhen\n    not( Cheese( ( type == \"stilton\", price == 10 ) || ( type == \"brie\", price == 15 ) ) from $cheeseList )\nthen\n    System.out.println(\"OK\");\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package org.drools;\n\nrule \"Avoid NPE on wrong syntax\"\nwhen\n    not( Cheese( ( type == \"stilton\", price == 10 ) || ( type == \"brie\", price == 15 ) ) from $cheeseList )\nthen\n    System.out.println(\"OK\");\nend", false);
-//		Object actual = examineParserExecResult(28, retval);
-//		Object expecting = "FAIL";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit83() throws Exception {
-//		// test input: "package org.drools;\n\nrule \"test pluggable operators\"\nwhen\n    $a : EventA()\n    $b : EventB( this `after[1,10] $a )\n    $c : EventC( this finishes $b )\n    $d : EventD( this not starts $a )\n    $e : EventE( this not `before [1, 10] $b )\nthen\nend"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package org.drools;\n\nrule \"test pluggable operators\"\nwhen\n    $a : EventA()\n    $b : EventB( this `after[1,10] $a )\n    $c : EventC( this finishes $b )\n    $d : EventD( this not starts $a )\n    $e : EventE( this not `before [1, 10] $b )\nthen\nend", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit84() throws Exception {
-//		// test input: "rule \"Test\"\nwhen\n( $r :LiteralRestriction( operator == Operator.EQUAL ) )\n        then\n    end"
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"Test\"\nwhen\n( $r :LiteralRestriction( operator == Operator.EQUAL ) )\n        then\n    end", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testCompilation_unit_walks_Compilation_unit85() throws Exception {
-//		// test input: "rule \"Test2\"\nwhen\n( not $r :LiteralRestriction( operator == Operator.EQUAL ) )\n        then\n    end "
-//		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"Test2\"\nwhen\n( not $r :LiteralRestriction( operator == Operator.EQUAL ) )\n        then\n    end ", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"compilation_unit", expecting, actual);
-//	}
-//
-//	public void testLhs_walks_Pattern_source86() throws Exception {
-//		// test input: "StockTick( symbol==\"ACME\") from entry-point StreamA"
-//		Object retval = execTreeParser("lhs", "pattern_source", "StockTick( symbol==\"ACME\") from entry-point StreamA", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block87() throws Exception {
-//		// test input: ""
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block88() throws Exception {
-//		// test input: "\n     Country( $cities : city )\n     Person( city memberOf $cities )\n    "
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\n     Country( $cities : city )\n     Person( city memberOf $cities )\n    ", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block89() throws Exception {
-//		// test input: "\n     Country( $cities : city )\n     Person( city not memberOf $cities )\n    "
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\n     Country( $cities : city )\n     Person( city not memberOf $cities )\n    ", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block90() throws Exception {
-//		// test input: " Person( age < 42 && location==\"atlanta\") "
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", " Person( age < 42 && location==\"atlanta\") ", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block91() throws Exception {
-//		// test input: " Person( age < 42 || location==\"atlanta\") "
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", " Person( age < 42 || location==\"atlanta\") ", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block92() throws Exception {
-//		// test input: "Person( age < 42 && location==\"atlanta\" || age > 20 && location==\"Seatle\" || location == \"Chicago\")"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Person( age < 42 && location==\"atlanta\" || age > 20 && location==\"Seatle\" || location == \"Chicago\")", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block93() throws Exception {
-//		// test input: "Person( age < 42 && ( location==\"atlanta\" || age > 20 && location==\"Seatle\") || location == \"Chicago\")"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Person( age < 42 && ( location==\"atlanta\" || age > 20 && location==\"Seatle\") || location == \"Chicago\")", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block94() throws Exception {
-//		// test input: " Person( ( age == 70 && hair == \"black\" ) || ( age == 40 && hair == \"pink\" ) || ( age == 12 && ( hair == \"yellow\" || hair == \"blue\" ) ) ) "
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", " Person( ( age == 70 && hair == \"black\" ) || ( age == 40 && hair == \"pink\" ) || ( age == 12 && ( hair == \"yellow\" || hair == \"blue\" ) ) ) ", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block95() throws Exception {
-//		// test input: " Person( name matches \"mark\" || matches \"bob\" ) "
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", " Person( name matches \"mark\" || matches \"bob\" ) ", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block96() throws Exception {
-//		// test input: "\n\tCity( $city : city )\n\tCountry( cities not contains $city )\n\t"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\n\tCity( $city : city )\n\tCountry( cities not contains $city )\n\t", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block97() throws Exception {
-//		// test input: " Message( text not matches '[abc]*' ) "
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", " Message( text not matches '[abc]*' ) ", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block98() throws Exception {
-//		// test input: "Foo( bar > 1 || == 1 )"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Foo( bar > 1 || == 1 )", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block99() throws Exception {
-//		// test input: "\n\t(or\n\tnot Person()\n\t\t(and Cheese()\n\t\t\tMeat()\n\t\t\tWine()))\n\t"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\n\t(or\n\tnot Person()\n\t\t(and Cheese()\n\t\t\tMeat()\n\t\t\tWine()))\n\t", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block100() throws Exception {
-//		// test input: "Person( ( age ( > 60 && < 70 ) || ( > 50 && < 55 ) && hair == \"black\" ) || ( age == 40 && hair == \"pink\" ) || ( age == 12 && ( hair == \"yellow\" || hair == \"blue\" ) ))"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Person( ( age ( > 60 && < 70 ) || ( > 50 && < 55 ) && hair == \"black\" ) || ( age == 40 && hair == \"pink\" ) || ( age == 12 && ( hair == \"yellow\" || hair == \"blue\" ) ))", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block101() throws Exception {
-//		// test input: "org   .   drools/*comment*/\t  .Message( text not matches $c#comment\n. property )\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "org   .   drools/*comment*/\t  .Message( text not matches $c#comment\n. property )\n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block102() throws Exception {
-//		// test input: " Test( ( text == null || text matches \"\" ) )  "
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", " Test( ( text == null || text matches \"\" ) )  ", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block103() throws Exception {
-//		// test input: " $id : Something( duration == \"foo\") "
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", " $id : Something( duration == \"foo\") ", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block104() throws Exception {
-//		// test input: "foo3 : Bar("
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "foo3 : Bar(", false);
-//		Object actual = examineParserExecResult(28, retval);
-//		Object expecting = "FAIL";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block105() throws Exception {
-//		// test input: "\nCheese(name == \"Stilton\", age==2001)\nWine(name == \"Grange\", age == \"1978\", accolades contains \"world champion\")\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\nCheese(name == \"Stilton\", age==2001)\nWine(name == \"Grange\", age == \"1978\", accolades contains \"world champion\")\n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block106() throws Exception {
-//		// test input: "Foo()"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Foo()", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block107() throws Exception {
-//		// test input: "not Cheese(type == \"stilton\")"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "not Cheese(type == \"stilton\")", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block108() throws Exception {
-//		// test input: "\nPerson(age < 42, location==\"atlanta\") \nor\nPerson(name==\"bob\")\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\nPerson(age < 42, location==\"atlanta\") \nor\nPerson(name==\"bob\")\n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block109() throws Exception {
-//		// test input: "\nFoo(bar == false)\nFoo(boo > -42)\nFoo(boo > -42.42)\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\nFoo(bar == false)\nFoo(boo > -42)\nFoo(boo > -42.42)\n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block110() throws Exception {
-//		// test input: "Cheese( )"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Cheese( )", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block111() throws Exception {
-//		// test input: "\nCol1() from something.doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\nCol2()\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\nCol1() from something.doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\nCol2()\n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block112() throws Exception {
-//		// test input: "\nCol1() from doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\nCol2()\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\nCol1() from doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\nCol2()\n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block113() throws Exception {
-//		// test input: "\nCol1() from something.doIt\nCol2()\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\nCol1() from something.doIt\nCol2()\n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block114() throws Exception {
-//		// test input: "\nCol1() from something.doIt[\"key\"]\nCol2()\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\nCol1() from something.doIt[\"key\"]\nCol2()\n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block115() throws Exception {
-//		// test input: "\nCol1() from doIt1( foo,bar,42,\"hello\",{ a => \"b\"}, [a, \"b\", 42] )\n            .doIt2(bar, [a, \"b\", 42]).field[\"key\"]\nCol2()\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\nCol1() from doIt1( foo,bar,42,\"hello\",{ a => \"b\"}, [a, \"b\", 42] )\n            .doIt2(bar, [a, \"b\", 42]).field[\"key\"]\nCol2()\n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block116() throws Exception {
-//		// test input: "\nfoo3 : Bar(a==3)\nfoo4 : Bar(a4:a==4)\nBaz()\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\nfoo3 : Bar(a==3)\nfoo4 : Bar(a4:a==4)\nBaz()\n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block117() throws Exception {
-//		// test input: "\nPerson(age > 30 && < 40)\nVehicle(type == \"sedan\" || == \"wagon\", age < 3)\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\nPerson(age > 30 && < 40)\nVehicle(type == \"sedan\" || == \"wagon\", age < 3)\n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block118() throws Exception {
-//		// test input: "    foo3 : Bar(a==3) ; foo4 : Bar(a4:a==4) ; Baz()"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "    foo3 : Bar(a==3) ; foo4 : Bar(a4:a==4) ; Baz()", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block119() throws Exception {
-//		// test input: "\nnot ( Cheese(type == \"stilton\") )\nexists ( Foo() )\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\nnot ( Cheese(type == \"stilton\") )\nexists ( Foo() )\n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block120() throws Exception {
-//		// test input: "\nnot ( Cheese(type == \"stilton\") )\nexists ( Foo() )\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\nnot ( Cheese(type == \"stilton\") )\nexists ( Foo() )\n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block121() throws Exception {
-//		// test input: "\na : (not ( Cheese(type == \"stilton\") ))\nexists ( Foo() )\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\na : (not ( Cheese(type == \"stilton\") ))\nexists ( Foo() )\n", false);
-//		Object actual = examineParserExecResult(28, retval);
-//		Object expecting = "FAIL";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block122() throws Exception {
-//		// test input: " Cheese( t:type == \"cheddar\" ) "
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", " Cheese( t:type == \"cheddar\" ) ", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block123() throws Exception {
-//		// test input: "Cheese( $type:type )"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Cheese( $type:type )", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block124() throws Exception {
-//		// test input: "\n    Cheese($type : type == \"stilton\")\n    $person : Person($name : name == \"bob\", likes == $type)        \n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\n    Cheese($type : type == \"stilton\")\n    $person : Person($name : name == \"bob\", likes == $type)        \n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block125() throws Exception {
-//		// test input: "\nPerson(name == \"mark\") or \n( Person(type == \"fan\") and Cheese(type == \"green\") )\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\nPerson(name == \"mark\") or \n( Person(type == \"fan\") and Cheese(type == \"green\") )\n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block126() throws Exception {
-//		// test input: "\nPerson(name == \"mark\") && Cheese(type == \"stilton\")\nPerson(name == \"mark\") || Cheese(type == \"stilton\")\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\nPerson(name == \"mark\") && Cheese(type == \"stilton\")\nPerson(name == \"mark\") || Cheese(type == \"stilton\")\n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block127() throws Exception {
-//		// test input: "\nfoo :  ( Person(name == \"mark\") or Person(type == \"fan\") ) \nCheese(type == \"green\")\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\nfoo :  ( Person(name == \"mark\") or Person(type == \"fan\") ) \nCheese(type == \"green\")\n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block128() throws Exception {
-//		// test input: "\nfoo : ( Person(name == \"mark\") \n\tor \n\tPerson(type == \"fan\") )\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\nfoo : ( Person(name == \"mark\") \n\tor \n\tPerson(type == \"fan\") )\n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block129() throws Exception {
-//		// test input: "\nfoo : ( \n\tPerson(name == \"mark\") or Person(type == \"fan\") \n\t)\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\nfoo : ( \n\tPerson(name == \"mark\") or Person(type == \"fan\") \n\t)\n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block130() throws Exception {
-//		// test input: "\n ( (not Foo(x==\"a\") or Foo(x==\"y\") ) and ( Shoes() or Butt() ) )\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\n ( (not Foo(x==\"a\") or Foo(x==\"y\") ) and ( Shoes() or Butt() ) )\n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block131() throws Exception {
-//		// test input: "\neval(abc(\"foo\") + 5)\nFoo()\neval(qed())\nBar()\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\neval(abc(\"foo\") + 5)\nFoo()\neval(qed())\nBar()\n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block132() throws Exception {
-//		// test input: "\nFoo()\nBar()\neval(abc(\"foo\"))\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\nFoo()\nBar()\neval(abc(\"foo\"))\n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block133() throws Exception {
-//		// test input: "Foo(name== (a + b))"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Foo(name== (a + b))", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block134() throws Exception {
-//		// test input: "Person( $age2:age -> ($age2 == $age1+2 ) )"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Person( $age2:age -> ($age2 == $age1+2 ) )", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block135() throws Exception {
-//		// test input: "Foo(bar == Foo.BAR)"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Foo(bar == Foo.BAR)", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block136() throws Exception {
-//		// test input: "\np: Person( name soundslike \"Michael\" )\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\np: Person( name soundslike \"Michael\" )\n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block137() throws Exception {
-//		// test input: "\nFoo()\nBar()\neval(\n\n\n\n       abc(\n       \n       \"foo\") + \n       5\n       \n       \n       \n        \n       )\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\nFoo()\nBar()\neval(\n\n\n\n       abc(\n       \n       \"foo\") + \n       5\n       \n       \n       \n        \n       )\n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block138() throws Exception {
-//		// test input: "eval(abc();)"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "eval(abc();)", false);
-//		Object actual = examineParserExecResult(28, retval);
-//		Object expecting = "FAIL";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block139() throws Exception {
-//		// test input: "\nFoo(\n  bar == baz, la==laz\n  )\n "
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\nFoo(\n  bar == baz, la==laz\n  )\n ", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block140() throws Exception {
-//		// test input: "com.cheeseco.Cheese($type : type == \"stilton\")"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "com.cheeseco.Cheese($type : type == \"stilton\")", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block141() throws Exception {
-//		// test input: "\n     Integer() from accumulate( Person( age > 21 ),\n                            init( int x = 0; ),\n                            action( x++; ),\n                            result( new Integer(x) ) );\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\n     Integer() from accumulate( Person( age > 21 ),\n                            init( int x = 0; ),\n                            action( x++; ),\n                            result( new Integer(x) ) );\n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block142() throws Exception {
-//		// test input: "\n $counter:Integer() from accumulate( $person : Person( age > 21 ),\n                                     init( int x = 0; ),\n                                     action( x++; ),\n                                     result( new Integer(x) ) );\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\n $counter:Integer() from accumulate( $person : Person( age > 21 ),\n                                     init( int x = 0; ),\n                                     action( x++; ),\n                                     result( new Integer(x) ) );\n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block143() throws Exception {
-//		// test input: "$personList : ArrayList() from collect( Person( age > 21 ) );"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "$personList : ArrayList() from collect( Person( age > 21 ) );", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block144() throws Exception {
-//		// test input: "\n\tnot ( State( $state : state ) and\n          not( Person( status == $state, $likes : likes ) and\n               Cheese( type == $likes ) ) )\n    Person( name == \"Bob\" )\n    ( Cheese( price == 10 ) or Cheese( type == \"brie\" ) )\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\n\tnot ( State( $state : state ) and\n          not( Person( status == $state, $likes : likes ) and\n               Cheese( type == $likes ) ) )\n    Person( name == \"Bob\" )\n    ( Cheese( price == 10 ) or Cheese( type == \"brie\" ) )\n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block145() throws Exception {
-//		// test input: "\n forall( Person( age > 21, $likes : likes )\n         Cheese( type == $likes ) );\n"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\n forall( Person( age > 21, $likes : likes )\n         Cheese( type == $likes ) );\n", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block146() throws Exception {
-//		// test input: "\n  \tPerson(age > 30 && < 40)\n  \tVehicle(type in ( \"sedan\", \"wagon\" ), age < 3)\n\t"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\n  \tPerson(age > 30 && < 40)\n  \tVehicle(type in ( \"sedan\", \"wagon\" ), age < 3)\n\t", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block147() throws Exception {
-//		// test input: "\n  \tPerson(age > 30 && < 40)\n  \tVehicle(type not in ( \"sedan\", \"wagon\" ), age < 3)\n\t"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\n  \tPerson(age > 30 && < 40)\n  \tVehicle(type not in ( \"sedan\", \"wagon\" ), age < 3)\n\t", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block148() throws Exception {
-//		// test input: "\n\t\tPattern1();\n\t\tPattern2() from x.y.z;\n\t\tPattern5();\n\t\tPattern6();\n\t\tPattern7();\n\t\tPattern3();\n\t\tPattern4() from collect( Pattern5() );\n\t\t"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\n\t\tPattern1();\n\t\tPattern2() from x.y.z;\n\t\tPattern5();\n\t\tPattern6();\n\t\tPattern7();\n\t\tPattern3();\n\t\tPattern4() from collect( Pattern5() );\n\t\t", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block149() throws Exception {
-//		// test input: " eval( 3==3 ) "
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", " eval( 3==3 ) ", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block150() throws Exception {
-//		// test input: "\n\t\tInteger() from accumulate( Person( age > 21 ),\n\t\t                           init( int x = 0; ),\n\t\t                           action( x++; ),\n\t\t                           reverse( x--; ),\n\t\t                           result( new Integer(x) ) );\n\t\t"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\n\t\tInteger() from accumulate( Person( age > 21 ),\n\t\t                           init( int x = 0; ),\n\t\t                           action( x++; ),\n\t\t                           reverse( x--; ),\n\t\t                           result( new Integer(x) ) );\n\t\t", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block151() throws Exception {
-//		// test input: "\n\t     Number() from accumulate( Person( $age : age > 21 ),\n\t                               average( $age ) );\n\t\t"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\n\t     Number() from accumulate( Person( $age : age > 21 ),\n\t                               average( $age ) );\n\t\t", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block152() throws Exception {
-//		// test input: "\n\t     #bellow statement makes no sense, but is useful to test parsing recursiveness\n\t     $personList : ArrayList() from collect( $p : Person( age > 21 || age < 10 ) from collect( People() from $town.getPeople() ) );\n\t\t"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\n\t     #bellow statement makes no sense, but is useful to test parsing recursiveness\n\t     $personList : ArrayList() from collect( $p : Person( age > 21 || age < 10 ) from collect( People() from $town.getPeople() ) );\n\t\t", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block153() throws Exception {
-//		// test input: "\n\t     $personList : ArrayList() from accumulate( Person( $age : age > 21 || < 10 ) from collect( People() from $town.getPeople() ),\n\t                                                max( $age ) );\n\t\t"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\n\t     $personList : ArrayList() from accumulate( Person( $age : age > 21 || < 10 ) from collect( People() from $town.getPeople() ),\n\t                                                max( $age ) );\n\t\t", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block154() throws Exception {
-//		// test input: "\n\t    $p : Person( name == \"bob\" )\n\t    $c : Cheese( type == $p.likes ) || Cheese( price == 10 )\n\t    "
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\n\t    $p : Person( name == \"bob\" )\n\t    $c : Cheese( type == $p.likes ) || Cheese( price == 10 )\n\t    ", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block155() throws Exception {
-//		// test input: "\n\t\t     $counter:Integer() from accumulate( $person : Person( age > 21 ) and Cheese( type == $person.likes ),\n\t\t                                         init( int x = 0; ),\n\t\t                                         action( x++; ),\n\t\t                                         result( new Integer(x) ) );\n\t\t\t"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\n\t\t     $counter:Integer() from accumulate( $person : Person( age > 21 ) and Cheese( type == $person.likes ),\n\t\t                                         init( int x = 0; ),\n\t\t                                         action( x++; ),\n\t\t                                         result( new Integer(x) ) );\n\t\t\t", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block156() throws Exception {
-//		// test input: "\n\t\t    $a : EventA()\n\t\t    $b : EventB( this `after[1,10] $a )\n\t\t    $c : EventC( this finishes $b )\n\t\t    $d : EventD( this not starts $a )\n\t\t    $e : EventE( this not `before [1, 10] $b )\n\t\t\t"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\n\t\t    $a : EventA()\n\t\t    $b : EventB( this `after[1,10] $a )\n\t\t    $c : EventC( this finishes $b )\n\t\t    $d : EventD( this not starts $a )\n\t\t    $e : EventE( this not `before [1, 10] $b )\n\t\t\t", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testLhs_block_walks_Normal_lhs_block157() throws Exception {
-//		// test input: "StockTick( symbol==\"ACME\") from entry-point StreamA"
-//		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "StockTick( symbol==\"ACME\") from entry-point StreamA", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"lhs_block", expecting, actual);
-//	}
-//
-//	public void testFact_expression_walks_Constraints158() throws Exception {
-//		// test input: "eval( $var.equals(\"xyz\") )"
-//		Object retval = execTreeParser("fact_expression", "constraints", "eval( $var.equals(\"xyz\") )", false);
-//		Object actual = examineParserExecResult(27, retval);
-//		Object expecting = "OK";
-//		
-//		assertEquals("testing rule "+"fact_expression", expecting, actual);
-//	}
-//
-//	// Invoke target parser.rule
-//	public Object execTreeParser(String testTreeRuleName, String testRuleName, String testInput, boolean isFile) throws Exception {
-//		CharStream input;
-//		if ( isFile==true ) {
-//			input = new ANTLRFileStream(testInput);
-//		}
-//		else {
-//			input = new ANTLRStringStream(testInput);
-//		}
-//		try {
-//			DRLLexer lexer = new DRLLexer(input);
-//			CommonTokenStream tokens = new CommonTokenStream(lexer);
-//			DRLParser parser = new DRLParser(tokens);
-//			parser.setTreeAdaptor(new DroolsTreeAdaptor());
-//			/** Use Reflection to get rule method from parser */
-//			Method ruleName = Class.forName("org.drools.lang.DRLParser").getMethod(testRuleName);
-//
-//			/** Start of I/O Redirecting */
-//			PipedInputStream pipedIn = new PipedInputStream();
-//			PipedOutputStream pipedOut = new PipedOutputStream();
-//			PipedInputStream pipedErrIn = new PipedInputStream();
-//			PipedOutputStream pipedErrOut = new PipedOutputStream();
-//			try {
-//				pipedOut.connect(pipedIn);
-//				pipedErrOut.connect(pipedErrIn);
-//			}
-//			catch(IOException e) {
-//				System.err.println("connection failed...");
-//				System.exit(1);
-//			}
-//			PrintStream console = System.out;
-//			PrintStream consoleErr = System.err;
-//			PrintStream ps = new PrintStream(pipedOut);
-//			PrintStream ps2 = new PrintStream(pipedErrOut);
-//			System.setOut(ps);
-//			System.setErr(ps2);
-//			/** End of redirecting */
-//
-//			/** Invoke grammar rule, and get the return value */
-//			Object ruleReturn = ruleName.invoke(parser);
-//			
-//			Class _return = Class.forName("org.drools.lang.DRLParser"+"$"+testRuleName+"_return");            	
-//        	Method returnName = _return.getMethod("getTree");
-//        	CommonTree tree = (CommonTree) returnName.invoke(ruleReturn);
-//			
-//			// Walk resulting tree; create tree nodes stream first
-//        	CommonTreeNodeStream nodes = new CommonTreeNodeStream(tree);
-//        	// AST nodes have payload that point into token stream
-//        	nodes.setTokenStream(tokens);
-//        	// Create a tree walker attached to the nodes stream
-//        	Tree2TestDRL treeParser = new Tree2TestDRL(nodes);
-//        	/** Invoke the tree rule, and store the return value if there is */
-//            Method treeRuleName = Class.forName("org.drools.lang.Tree2TestDRL").getMethod(testTreeRuleName);
-//            Object treeRuleReturn = treeRuleName.invoke(treeParser);
-//            
-//            String astString = null;
-//            /** If tree rule has return value, determine if it's an AST */
-//            if ( treeRuleReturn!=null ) {
-//            	/** If return object is instanceof AST, get the toStringTree */
-//                if ( treeRuleReturn.toString().indexOf(testTreeRuleName+"_return")>0 ) {
-//                	try {	// NullPointerException may happen here...
-//                		Class _treeReturn = Class.forName("org.drools.lang.Tree2TestDRL"+"$"+testTreeRuleName+"_return");
-//                		Method[] methods = _treeReturn.getDeclaredMethods();
-//			            for(Method method : methods) {
-//			                if ( method.getName().equals("getTree") ) {
-//			                	Method treeReturnName = _treeReturn.getMethod("getTree");
-//		                    	CommonTree returnTree = (CommonTree) treeReturnName.invoke(treeRuleReturn);
-//		                        astString = returnTree.toStringTree();
-//			                }
-//			            }
-//                	}
-//                	catch(Exception e) {
-//                		System.err.println(e);
-//                	}
-//                }
-//            }
-//
-//			org.antlr.gunit.gUnitExecuter.StreamVacuum stdoutVacuum = new org.antlr.gunit.gUnitExecuter.StreamVacuum(pipedIn);
-//			org.antlr.gunit.gUnitExecuter.StreamVacuum stderrVacuum = new org.antlr.gunit.gUnitExecuter.StreamVacuum(pipedErrIn);
-//			ps.close();
-//			ps2.close();
-//			System.setOut(console);			// Reset standard output
-//			System.setErr(consoleErr);		// Reset standard err out
-//			this.stdout = null;
-//			this.stderr = null;
-//			stdoutVacuum.start();
-//			stderrVacuum.start();			
-//			stdoutVacuum.join();
-//			stderrVacuum.join();
-//			// retVal could be actual return object from rule, stderr or stdout
-//			if ( stderrVacuum.toString().length()>0 ) {
-//				this.stderr = stderrVacuum.toString();
-//				return this.stderr;
-//			}
-//			if ( parser.hasErrors() ) {
-//				this.stderr = parser.getErrors().toString();
-//				return this.stderr;
-//			}			
-//			if ( stdoutVacuum.toString().length()>0 ) {
-//				this.stdout = stdoutVacuum.toString();
-//			}
-//			if ( astString!=null ) {	// Return toStringTree of AST
-//				return astString;
-//			}
-//			if ( treeRuleReturn!=null ) {
-//				return treeRuleReturn;
-//			}
-//			if ( stderrVacuum.toString().length()==0 && stdoutVacuum.toString().length()==0 ) {
-//				return null;
-//			}
-//		} catch (ClassNotFoundException e) {
-//			e.printStackTrace(); System.exit(1);
-//		} catch (SecurityException e) {
-//			e.printStackTrace(); System.exit(1);
-//		} catch (NoSuchMethodException e) {
-//			e.printStackTrace(); System.exit(1);
-//		} catch (IllegalAccessException e) {
-//			e.printStackTrace(); System.exit(1);
-//		} catch (InvocationTargetException e) {
-//			e.printStackTrace(); System.exit(1);
-//		} catch (InterruptedException e) {
-//			e.printStackTrace(); System.exit(1);
-//		} catch (Exception e) {
-//			e.printStackTrace(); System.exit(1);
-//		}
-//		return stdout;
-//	}
-//
-//	// Modify the return value if the expected token type is OK or FAIL
-//	public Object examineParserExecResult(int tokenType, Object retVal) {	
-//		if ( tokenType==27 ) {	// expected Token: OK
-//			if ( this.stderr==null ) {
-//				return "OK";
-//			}
-//			else {
-//				return "FAIL";
-//			}
-//		}
-//		else if ( tokenType==28 ) {	// expected Token: FAIL
-//			if ( this.stderr!=null ) {
-//				return "FAIL";
-//			}
-//			else {
-//				return "OK";
-//			}
-//		}
-//		else {	// return the same object for the other token types
-//			return retVal;
-//		}		
-//	}
+	public void testPackage_statement_walks_Package_statement1() throws Exception {
+		// test input: "package foo"
+		Object retval = execTreeParser("package_statement", "package_statement", "package foo", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"package_statement", expecting, actual);
+	}
 
+	public void testPackage_statement_walks_Package_statement2() throws Exception {
+		// test input: "package foo.bar.baz;"
+		Object retval = execTreeParser("package_statement", "package_statement", "package foo.bar.baz;", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"package_statement", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit1() throws Exception {
+		// test input: ""
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit2() throws Exception {
+		// test input: "package foo; import com.foo.Bar; import com.foo.Baz;"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package foo; import com.foo.Bar; import com.foo.Baz;", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit3() throws Exception {
+		// test input: "rule empty \n\nthen\n  \nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule empty \n\nthen\n  \nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit4() throws Exception {
+		// test input: "#the purpose of this is to see what happens when we have some partially damaged syntax\n#as the IDE uses the parsers AST to work out completion suggestions.\npackage test\n\n\nrule simple_rule \n  when\n    foo3 : Bar(\n"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "#the purpose of this is to see what happens when we have some partially damaged syntax\n#as the IDE uses the parsers AST to work out completion suggestions.\npackage test\n\n\nrule simple_rule \n  when\n    foo3 : Bar(\n", false);
+		Object actual = examineParserExecResult(28, retval);
+		Object expecting = "FAIL";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit5() throws Exception {
+		// test input: "package test.templates\n\ntemplate Cheese\n\tString \tname\n\tInteger age\nend\n\ntemplate \"Wine\"\n\tString \t\tname\n\tString \t\tyear\n\tString[] \taccolades\nend\n\n\nrule \"a rule\"\n  when\n\tCheese(name == \"Stilton\", age==2001)\n\tWine(name == \"Grange\", age == \"1978\", accolades contains \"world champion\")\n  then\n  \tbaz();\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package test.templates\n\ntemplate Cheese\n\tString \tname\n\tInteger age\nend\n\ntemplate \"Wine\"\n\tString \t\tname\n\tString \t\tyear\n\tString[] \taccolades\nend\n\n\nrule \"a rule\"\n  when\n\tCheese(name == \"Stilton\", age==2001)\n\tWine(name == \"Grange\", age == \"1978\", accolades contains \"world champion\")\n  then\n  \tbaz();\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit6() throws Exception {
+		// test input: "package foo\n\nrule rule_one \n  when\n  \tFoo()\n  then\n  \t if (speed > speedLimit ? true : false;)\n     pullEmOver();\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package foo\n\nrule rule_one \n  when\n  \tFoo()\n  then\n  \t if (speed > speedLimit ? true : false;)\n     pullEmOver();\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit7() throws Exception {
+		// test input: "package foo\n\nfunction String[] yourFunction(String args[]) {\n     baz();\n}\n\nrule \"new rule\"\n\n\twhen\n\t\tSomething()\n\tthen\n\t\tyourFunction(new String[3] {\"a\",\"b\",\"c\"});\n\t\t\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package foo\n\nfunction String[] yourFunction(String args[]) {\n     baz();\n}\n\nrule \"new rule\"\n\n\twhen\n\t\tSomething()\n\tthen\n\t\tyourFunction(new String[3] {\"a\",\"b\",\"c\"});\n\t\t\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit8() throws Exception {
+		// test input: "rule almost_empty \n  when\n  then\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule almost_empty \n  when\n  then\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit9() throws Exception {
+		// test input: "rule \"quoted string name\"\n  when\n  then\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"quoted string name\"\n  when\n  then\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit10() throws Exception {
+		// test input: "rule rule1 \n  no-loop false\n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule rule1 \n  no-loop false\n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit11() throws Exception {
+		// test input: "rule rule1 \n  auto-focus true\n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule rule1 \n  auto-focus true\n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit12() throws Exception {
+		// test input: "rule rule1 \n  ruleflow-group \"a group\"\n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule rule1 \n  ruleflow-group \"a group\"\n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit13() throws Exception {
+		// test input: "\nrule myrule \n  when\n  then\n  \tint i = 0;\n\ti = 1;\n\ti / 1;\n\ti == 1;\n\ti(i);\n\ti = 'i';\n\ti.i.i;\n\ti\\i;\n\ti<i;\n\ti>i;\n\ti=\"i\";\t\n\t++i;\n\ti++;\n\t--i;\n\ti--;\n\ti += i;\n\ti -= i;\n\ti *= i;\n\ti /= i;\n\tint i = 5;\n\tfor(int j; j<i; ++j) {\n\t  System.out.println(j);\n\t}\t\n\tObject o = new String(\"Hello\");\n\tString s = (String) o;\t\n\t\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nrule myrule \n  when\n  then\n  \tint i = 0;\n\ti = 1;\n\ti / 1;\n\ti == 1;\n\ti(i);\n\ti = 'i';\n\ti.i.i;\n\ti\\i;\n\ti<i;\n\ti>i;\n\ti=\"i\";\t\n\t++i;\n\ti++;\n\t--i;\n\ti--;\n\ti += i;\n\ti -= i;\n\ti *= i;\n\ti /= i;\n\tint i = 5;\n\tfor(int j; j<i; ++j) {\n\t  System.out.println(j);\n\t}\t\n\tObject o = new String(\"Hello\");\n\tString s = (String) o;\t\n\t\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit14() throws Exception {
+		// test input: "#check that it can handle true/false literals, and \n#negative numbers\nrule simple_rule \n  when\n\tFoo(bar == false)\n\tFoo(boo > -42)\n\tFoo(boo > -42.42)\n  then\n\tcons();\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "#check that it can handle true/false literals, and \n#negative numbers\nrule simple_rule \n  when\n\tFoo(bar == false)\n\tFoo(boo > -42)\n\tFoo(boo > -42.42)\n  then\n\tcons();\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit15() throws Exception {
+		// test input: "package org.drools.test;\n \nimport org.drools.Cheese;\n \nrule \"simple rule\"\n    when\n        Cheese( )\n    then\nend "
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package org.drools.test;\n \nimport org.drools.Cheese;\n \nrule \"simple rule\"\n    when\n        Cheese( )\n    then\nend ", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit16() throws Exception {
+		// test input: "rule blah\n\n when \n\n\tCol1() from something.doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\n\tCol2()\n then\n\tpartay();\nend\t"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule blah\n\n when \n\n\tCol1() from something.doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\n\tCol2()\n then\n\tpartay();\nend\t", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit17() throws Exception {
+		// test input: "rule blah\n\n when \n\n\tCol1() from doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\n\tCol2()\n then\n\tpartay();\nend\t"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule blah\n\n when \n\n\tCol1() from doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\n\tCol2()\n then\n\tpartay();\nend\t", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit18() throws Exception {
+		// test input: "rule blah\n\n when \n\n\tCol1() from something.doIt\n\tCol2()\n then\n\tpartay();\nend\t"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule blah\n\n when \n\n\tCol1() from something.doIt\n\tCol2()\n then\n\tpartay();\nend\t", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit19() throws Exception {
+		// test input: "rule blah\n\n when \n\n\tCol1() from something.doIt[\"key\"]\n\tCol2()\n then\n\tpartay();\nend\t"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule blah\n\n when \n\n\tCol1() from something.doIt[\"key\"]\n\tCol2()\n then\n\tpartay();\nend\t", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit20() throws Exception {
+		// test input: "rule blah\n when \n\tCol1() from doIt1( foo,bar,42,\"hello\",{ a => \"b\"}, [a, \"b\", 42] )\n\t            .doIt2(bar, [a, \"b\", 42]).field[\"key\"]\n\tCol2()\n then\n\tpartay();\nend\t"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule blah\n when \n\tCol1() from doIt1( foo,bar,42,\"hello\",{ a => \"b\"}, [a, \"b\", 42] )\n\t            .doIt2(bar, [a, \"b\", 42]).field[\"key\"]\n\tCol2()\n then\n\tpartay();\nend\t", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit21() throws Exception {
+		// test input: "rule simple_rule \n  when\n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n  then\n  if ( a == b ) {\n    assert( foo3 );\n  } else {\n    retract( foo4 );\n  } \n  System.out.println( a4 );\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule simple_rule \n  when\n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n  then\n  if ( a == b ) {\n    assert( foo3 );\n  } else {\n    retract( foo4 );\n  } \n  System.out.println( a4 );\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit22() throws Exception {
+		// test input: "#this is for showing off all the new multi restriction stuff\n\n\n\n\nrule simple_rule \n  when\n  \tPerson(age > 30 && < 40)\n  \tVehicle(type == \"sedan\" || == \"wagon\", age < 3)\n  then\n\tconsequence();\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "#this is for showing off all the new multi restriction stuff\n\n\n\n\nrule simple_rule \n  when\n  \tPerson(age > 30 && < 40)\n  \tVehicle(type == \"sedan\" || == \"wagon\", age < 3)\n  then\n\tconsequence();\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit23() throws Exception {
+		// test input: "package la\n\n\nrule simple_rule \n  when\n  \tBaz()\n  then\n  \t//woot\n  \tfirst\n  \t\n  \t#\n  \t\n  \t/* lala\n  \t\n  \t*/\n  \tsecond  \nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package la\n\n\nrule simple_rule \n  when\n  \tBaz()\n  then\n  \t//woot\n  \tfirst\n  \t\n  \t#\n  \t\n  \t/* lala\n  \t\n  \t*/\n  \tsecond  \nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit24() throws Exception {
+		// test input: "rule simple_rule \n  when\n    foo3 : Bar(a==3) ; foo4 : Bar(a4:a==4) ; Baz()\n  then\n  if ( a == b ) {\n    assert( foo3 );\n  } else {\n    retract( foo4 );\n  } \n  System.out.println( a4 );\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule simple_rule \n  when\n    foo3 : Bar(a==3) ; foo4 : Bar(a4:a==4) ; Baz()\n  then\n  if ( a == b ) {\n    assert( foo3 );\n  } else {\n    retract( foo4 );\n  } \n  System.out.println( a4 );\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit25() throws Exception {
+		// test input: "rule simple_rule \n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule simple_rule \n  when\n  \tnot Cheese(type == \"stilton\")\n  then\n\tfunky();\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit26() throws Exception {
+		// test input: "package HR1\n\nimport function abd.def.x\nimport function qed.wah.*\n\nrule simple_rule \n  when  \t\t  \t\n  \tnot ( Cheese(type == \"stilton\") )\n  \texists ( Foo() )\n  then\n\tfunky();\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package HR1\n\nimport function abd.def.x\nimport function qed.wah.*\n\nrule simple_rule \n  when  \t\t  \t\n  \tnot ( Cheese(type == \"stilton\") )\n  \texists ( Foo() )\n  then\n\tfunky();\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit27() throws Exception {
+		// test input: "package HR1\n\nrule simple_rule \n  when  \t\t  \t\n  \tnot ( Cheese(type == \"stilton\") )\n  \texists ( Foo() )\n  then\n\tfunky();\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package HR1\n\nrule simple_rule \n  when  \t\t  \t\n  \tnot ( Cheese(type == \"stilton\") )\n  \texists ( Foo() )\n  then\n\tfunky();\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit28() throws Exception {
+		// test input: "package HR2\n\nrule simple_rule \n  when  \t\t  \t\n  \ta : (not ( Cheese(type == \"stilton\") ))\n  \texists ( Foo() )\n  then\n\tfunky();\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package HR2\n\nrule simple_rule \n  when  \t\t  \t\n  \ta : (not ( Cheese(type == \"stilton\") ))\n  \texists ( Foo() )\n  then\n\tfunky();\nend", false);
+		Object actual = examineParserExecResult(28, retval);
+		Object expecting = "FAIL";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit29() throws Exception {
+		// test input: "\nquery \"simple_query\" \n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n\t\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nquery \"simple_query\" \n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n\t\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit30() throws Exception {
+		// test input: "package foo\n\nrule bar\n\twhen\n\t\tBaz()\n\tthen\n\t\tBoo()\nend\n\nquery \"simple_query\" \n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n\t\nend\n\nrule bar2\n\twhen\n\t\tBaz()\n\tthen\n\t\tBoo()\nend\n\nquery \"simple_query2\" \n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n\t\nend\n\t"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package foo\n\nrule bar\n\twhen\n\t\tBaz()\n\tthen\n\t\tBoo()\nend\n\nquery \"simple_query\" \n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n\t\nend\n\nrule bar2\n\twhen\n\t\tBaz()\n\tthen\n\t\tBoo()\nend\n\nquery \"simple_query2\" \n    foo3 : Bar(a==3)\n    foo4 : Bar(a4:a==4)\n    Baz()\n\t\nend\n\t", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit31() throws Exception {
+		// test input: "package org.drools.test;\n\nimport org.drools.integrationtests.Cheese;\n\nrule \"Like Stilton\"\n    when\n        Cheese( t:type == \"stilton\" )\n    then\n        System.out.println(\"I like \" + t);\nend    \n\nrule \"Like Cheddar\"\n    when\n        Cheese( t:type == \"cheddar\" )\n    then\n        System.out.println(\"I like \" + t );\nend    "
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package org.drools.test;\n\nimport org.drools.integrationtests.Cheese;\n\nrule \"Like Stilton\"\n    when\n        Cheese( t:type == \"stilton\" )\n    then\n        System.out.println(\"I like \" + t);\nend    \n\nrule \"Like Cheddar\"\n    when\n        Cheese( t:type == \"cheddar\" )\n    then\n        System.out.println(\"I like \" + t );\nend    ", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit32() throws Exception {
+		// test input: "package org.drools.test;\n\nimport org.drools.Cheese;\n\nrule \"like cheddar\"\n    when\n        Cheese( $type:type )\n    then\n        System.out.println(\"I like \" + $type);\nend    "
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package org.drools.test;\n\nimport org.drools.Cheese;\n\nrule \"like cheddar\"\n    when\n        Cheese( $type:type )\n    then\n        System.out.println(\"I like \" + $type);\nend    ", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit33() throws Exception {
+		// test input: "package org.drools.test;\n\nimport org.drools.Cheese;\nimport org.drools.Person;\n\nrule \"Who likes Stilton\"\n    when\n        Cheese($type : type == \"stilton\")\n        $person : Person($name : name == \"bob\", likes == $type)        \n    then\n        System.out.println( $name + \" likes \" + $type);\nend    "
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package org.drools.test;\n\nimport org.drools.Cheese;\nimport org.drools.Person;\n\nrule \"Who likes Stilton\"\n    when\n        Cheese($type : type == \"stilton\")\n        $person : Person($name : name == \"bob\", likes == $type)        \n    then\n        System.out.println( $name + \" likes \" + $type);\nend    ", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit34() throws Exception {
+		// test input: "import org.drools.Person\n\nrule simple_rule \n  when\n\tPerson(name == \"mark\") or \n\t( Person(type == \"fan\") and Cheese(type == \"green\") )\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "import org.drools.Person\n\nrule simple_rule \n  when\n\tPerson(name == \"mark\") or \n\t( Person(type == \"fan\") and Cheese(type == \"green\") )\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit35() throws Exception {
+		// test input: "import org.drools.Person\n\nrule simple_rule \n  when\n    Person(name == \"mark\") && Cheese(type == \"stilton\")\n    Person(name == \"mark\") || Cheese(type == \"stilton\")\n  then\n\tSystem.out.println( \"Mark and Michael\" );\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "import org.drools.Person\n\nrule simple_rule \n  when\n    Person(name == \"mark\") && Cheese(type == \"stilton\")\n    Person(name == \"mark\") || Cheese(type == \"stilton\")\n  then\n\tSystem.out.println( \"Mark and Michael\" );\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit36() throws Exception {
+		// test input: "import org.drools.Person\n\nrule simple_rule \n  when\n\tfoo :  ( Person(name == \"mark\") or Person(type == \"fan\") ) \n\tCheese(type == \"green\")\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "import org.drools.Person\n\nrule simple_rule \n  when\n\tfoo :  ( Person(name == \"mark\") or Person(type == \"fan\") ) \n\tCheese(type == \"green\")\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit37() throws Exception {
+		// test input: "\nrule simple_rule \n  when\n\tfoo : ( Person(name == \"mark\") \n\t\tor \n\t\tPerson(type == \"fan\") )\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\nrule simple_rule \n  when\n\tfoo : ( Person(name == \"mark\") \n\t\tor \n\t\tPerson(type == \"fan\") )\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit38() throws Exception {
+		// test input: "rule simple_rule \n  when\n\tfoo : ( \n\t\tPerson(name == \"mark\") or Person(type == \"fan\") \n\t\t)\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule simple_rule \n  when\n\tfoo : ( \n\t\tPerson(name == \"mark\") or Person(type == \"fan\") \n\t\t)\n  then\n\tSystem.out.println( \"Mark and Michael\" + bar );\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit39() throws Exception {
+		// test input: "rule simple_rule \n  when\n\t ( (not Foo(x==\"a\") or Foo(x==\"y\") ) and ( Shoes() or Butt() ) )\n  then\n\tgo wild\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule simple_rule \n  when\n\t ( (not Foo(x==\"a\") or Foo(x==\"y\") ) and ( Shoes() or Butt() ) )\n  then\n\tgo wild\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit40() throws Exception {
+		// test input: "rule simple_rule \n  when\n\teval(abc(\"foo\") + 5)\n\tFoo()\n\teval(qed())\n\tBar()\n  then\n\tKapow\n\tPoof\n\t\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule simple_rule \n  when\n\teval(abc(\"foo\") + 5)\n\tFoo()\n\teval(qed())\n\tBar()\n  then\n\tKapow\n\tPoof\n\t\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit41() throws Exception {
+		// test input: "rule simple_rule \n  when\n\tFoo()\n\tBar()\n\teval(abc(\"foo\"))\n  then\n\tKapow\n\t\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule simple_rule \n  when\n\tFoo()\n\tBar()\n\teval(abc(\"foo\"))\n  then\n\tKapow\n\t\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit42() throws Exception {
+		// test input: "rule simple_rule \n  when\n\tFoo(name== (a + b))\n  then\n\tKapow\n\t\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule simple_rule \n  when\n\tFoo(name== (a + b))\n  then\n\tKapow\n\t\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit43() throws Exception {
+		// test input: "rule simple_rule \n  when\n  \tPerson( $age2:age -> ($age2 == $age1+2 ) ) \n  then\n\tfoo bar\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule simple_rule \n  when\n  \tPerson( $age2:age -> ($age2 == $age1+2 ) ) \n  then\n\tfoo bar\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit44() throws Exception {
+		// test input: "package org.drools.test;\n\nimport org.drools.Cheese;\n\nglobal java.util.List list;\nglobal java.lang.Integer five;\n\nrule \"not rule test\"\n    when\n        $person : Person( $likes:like )\n        not Cheese( type == $likes )\n    then\n\t\tlist.add( $person );\nend    "
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package org.drools.test;\n\nimport org.drools.Cheese;\n\nglobal java.util.List list;\nglobal java.lang.Integer five;\n\nrule \"not rule test\"\n    when\n        $person : Person( $likes:like )\n        not Cheese( type == $likes )\n    then\n\t\tlist.add( $person );\nend    ", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit45() throws Exception {
+		// test input: "package org.drools.test;\n\nimport org.drools.Cheese;\n\nglobal java.lang.String foo\nglobal java.lang.Integer bar;\n\nrule baz\n    when\n        Cheese( )\n    then\n\nend    "
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package org.drools.test;\n\nimport org.drools.Cheese;\n\nglobal java.lang.String foo\nglobal java.lang.Integer bar;\n\nrule baz\n    when\n        Cheese( )\n    then\n\nend    ", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit46() throws Exception {
+		// test input: "import java.lang.String\n\nfunction String functionA(String s, Integer i) {\n\t\n\tfoo();\n\n}\n\nfunction void functionB() {\n\tbar();\t\n}\n\n\nrule something \n\twhen\n\tthen\nend\n\nrule \"one more thing\"\n\twhen\n\tthen\nend\n\n\n\n\t"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "import java.lang.String\n\nfunction String functionA(String s, Integer i) {\n\t\n\tfoo();\n\n}\n\nfunction void functionB() {\n\tbar();\t\n}\n\n\nrule something \n\twhen\n\tthen\nend\n\nrule \"one more thing\"\n\twhen\n\tthen\nend\n\n\n\n\t", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit47() throws Exception {
+		// test input: "#this starts with a comment\npackage foo.bar\n\n//and another comment\n\n/*\nyet\n\t   another\n   \t\t\t\tstyle\n*/\n\nrule \"test\"\n  when\n  then\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "#this starts with a comment\npackage foo.bar\n\n//and another comment\n\n/*\nyet\n\t   another\n   \t\t\t\tstyle\n*/\n\nrule \"test\"\n  when\n  then\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit48() throws Exception {
+		// test input: "\n\nrule simple_rule \n\t\t#attributes keywork (and colon) is totally optional\n\t\tsalience 42\n\t\tagenda-group \"my_group\"\n\t\tno-loop \n\t\tduration 42\n\t\tactivation-group \"my_activation_group\"\n\t\tlock-on-active true\n\twhen\n\t\tFoo()\n\tthen\n\t\tbar();\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\n\nrule simple_rule \n\t\t#attributes keywork (and colon) is totally optional\n\t\tsalience 42\n\t\tagenda-group \"my_group\"\n\t\tno-loop \n\t\tduration 42\n\t\tactivation-group \"my_activation_group\"\n\t\tlock-on-active true\n\twhen\n\t\tFoo()\n\tthen\n\t\tbar();\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit49() throws Exception {
+		// test input: "\n\nrule simple_rule \n\tattributes: \n\t\tsalience 42, agenda-group \"my_group\", no-loop,  lock-on-active, duration 42, activation-group \"my_activation_group\"\n\twhen\n\t\tFoo()\n\tthen\n\t\tbar();\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\n\nrule simple_rule \n\tattributes: \n\t\tsalience 42, agenda-group \"my_group\", no-loop,  lock-on-active, duration 42, activation-group \"my_activation_group\"\n\twhen\n\t\tFoo()\n\tthen\n\t\tbar();\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit50() throws Exception {
+		// test input: "rule simple_rule \n  when\n  \tFoo(bar == Foo.BAR)\n  then\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule simple_rule \n  when\n  \tFoo(bar == Foo.BAR)\n  then\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit51() throws Exception {
+		// test input: "rule one\n  when\n    exists Foo()\n    exits Bar()\n  then\nend\n\nrule two \n  when\n    ford = ford = ford\n  then\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule one\n  when\n    exists Foo()\n    exits Bar()\n  then\nend\n\nrule two \n  when\n    ford = ford = ford\n  then\nend", false);
+		Object actual = examineParserExecResult(28, retval);
+		Object expecting = "FAIL";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit52() throws Exception {
+		// test input: "rule \"another test\"\n    when\n        s : String()\n        eval(s.equals(\"foo\") && s.startsWith(\"f\"))\n        \n        \n    then\n        list.add( s );\nend "
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"another test\"\n    when\n        s : String()\n        eval(s.equals(\"foo\") && s.startsWith(\"f\"))\n        \n        \n    then\n        list.add( s );\nend ", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit53() throws Exception {
+		// test input: "package nesting;\n\n\n\n\nrule \"test something\"\n\n\twhen\n\t\tp: Person( name soundslike \"Michael\" )\n\tthen\n\t\tp.name = \"goober\"\n\t\tSystem.out.println(p.name)\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package nesting;\n\n\n\n\nrule \"test something\"\n\n\twhen\n\t\tp: Person( name soundslike \"Michael\" )\n\tthen\n\t\tp.name = \"goober\"\n\t\tSystem.out.println(p.name)\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit54() throws Exception {
+		// test input: "package com.foo;\n\nagenda-group \"x\"\n\nimport goo.ber\nimport wee.waa\n\n\ndialect \"java\"\n\n\n\n\nrule bar\n  when\n  then\nend\n\nrule baz\n  dialect \"mvel\"\n  when\n  then\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package com.foo;\n\nagenda-group \"x\"\n\nimport goo.ber\nimport wee.waa\n\n\ndialect \"java\"\n\n\n\n\nrule bar\n  when\n  then\nend\n\nrule baz\n  dialect \"mvel\"\n  when\n  then\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit55() throws Exception {
+		// test input: "package com.foo;\n\nimport im.one\n\nimport im.two\n\nrule foo\n  when\n  then\nend\n\nfunction cheeseIt() {\n\n}\n\nimport im.three;\n\nrule bar\n  when\n  then\nend\n\nfunction uncheeseIt() {\n\n}\n\nimport im.four;"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package com.foo;\n\nimport im.one\n\nimport im.two\n\nrule foo\n  when\n  then\nend\n\nfunction cheeseIt() {\n\n}\n\nimport im.three;\n\nrule bar\n  when\n  then\nend\n\nfunction uncheeseIt() {\n\n}\n\nimport im.four;", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit56() throws Exception {
+		// test input: "rule \"1. Do Stuff!\"\n  when\n  then\nend\n\nrule \"2. Do More Stuff!\"\n  when\n  then\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"1. Do Stuff!\"\n  when\n  then\nend\n\nrule \"2. Do More Stuff!\"\n  when\n  then\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit57() throws Exception {
+		// test input: "rule simple_rule \n  when\n\tFoo()\n\tBar()\n\teval(\n\t\n\t\n\t\n\t       abc(\n\t       \n\t       \"foo\") + \n\t       5\n\t       \n\t       \n\t       \n\t        \n\t       )\n  then\n\tKapow\n\tPoof\n\t\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule simple_rule \n  when\n\tFoo()\n\tBar()\n\teval(\n\t\n\t\n\t\n\t       abc(\n\t       \n\t       \"foo\") + \n\t       5\n\t       \n\t       \n\t       \n\t        \n\t       )\n  then\n\tKapow\n\tPoof\n\t\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit58() throws Exception {
+		// test input: "rule simple_rule \n  when\n\teval(abc();)\n  then\n\tKapow\n\tPoof\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule simple_rule \n  when\n\teval(abc();)\n  then\n\tKapow\n\tPoof\nend", false);
+		Object actual = examineParserExecResult(28, retval);
+		Object expecting = "FAIL";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit59() throws Exception {
+		// test input: "\n\nrule simple_rule \n  when\n\tFoo(\n\t  bar == baz, la==laz\n\t  )\n  then\n\tKapow\n\tPoof\nend\n\t"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "\n\nrule simple_rule \n  when\n\tFoo(\n\t  bar == baz, la==laz\n\t  )\n  then\n\tKapow\n\tPoof\nend\n\t", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit60() throws Exception {
+		// test input: "package org.drools.test;\n\nrule \"Who likes Stilton\"\n    when\n        com.cheeseco.Cheese($type : type == \"stilton\")\n    then\n        System.out.println( $name + \" likes \" + $type);\nend    "
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package org.drools.test;\n\nrule \"Who likes Stilton\"\n    when\n        com.cheeseco.Cheese($type : type == \"stilton\")\n    then\n        System.out.println( $name + \" likes \" + $type);\nend    ", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit61() throws Exception {
+		// test input: "rule \"AccumulateParserTest\"\nwhen\n     Integer() from accumulate( Person( age > 21 ),\n                                init( int x = 0; ),\n                                action( x++; ),\n                                result( new Integer(x) ) );\nthen\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"AccumulateParserTest\"\nwhen\n     Integer() from accumulate( Person( age > 21 ),\n                                init( int x = 0; ),\n                                action( x++; ),\n                                result( new Integer(x) ) );\nthen\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit62() throws Exception {
+		// test input: "rule \"AccumulateParserTest\"\nwhen\n     $counter:Integer() from accumulate( $person : Person( age > 21 ),\n                                         init( int x = 0; ),\n                                         action( x++; ),\n                                         result( new Integer(x) ) );\nthen\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"AccumulateParserTest\"\nwhen\n     $counter:Integer() from accumulate( $person : Person( age > 21 ),\n                                         init( int x = 0; ),\n                                         action( x++; ),\n                                         result( new Integer(x) ) );\nthen\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit63() throws Exception {
+		// test input: "rule \"CollectParserTest\"\nwhen\n     $personList : ArrayList() from collect( Person( age > 21 ) );\nthen\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"CollectParserTest\"\nwhen\n     $personList : ArrayList() from collect( Person( age > 21 ) );\nthen\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit64() throws Exception {
+		// test input: "rule \"test_Quotes\"\n   when\n      InitialFact()\n   then\n      String s = \"\\\"\\n\\t\\\\\";\nend "
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"test_Quotes\"\n   when\n      InitialFact()\n   then\n      String s = \"\\\"\\n\\t\\\\\";\nend ", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit65() throws Exception {
+		// test input: "rule \"test nested CEs\"\t\n\twhen\n\t    not ( State( $state : state ) and\n\t          not( Person( status == $state, $likes : likes ) and\n\t               Cheese( type == $likes ) ) )\n\t    Person( name == \"Bob\" )\n\t    ( Cheese( price == 10 ) or Cheese( type == \"brie\" ) )\n\tthen \n\t\tresults.add(\"OK\");\t\t\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"test nested CEs\"\t\n\twhen\n\t    not ( State( $state : state ) and\n\t          not( Person( status == $state, $likes : likes ) and\n\t               Cheese( type == $likes ) ) )\n\t    Person( name == \"Bob\" )\n\t    ( Cheese( price == 10 ) or Cheese( type == \"brie\" ) )\n\tthen \n\t\tresults.add(\"OK\");\t\t\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit66() throws Exception {
+		// test input: "rule \"ForallParserTest\"\nwhen\n     forall( Person( age > 21, $likes : likes )\n             Cheese( type == $likes ) );\nthen\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"ForallParserTest\"\nwhen\n     forall( Person( age > 21, $likes : likes )\n             Cheese( type == $likes ) );\nthen\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit67() throws Exception {
+		// test input: "#testing 'in' operator\n\nrule simple_rule \n  when\n  \tPerson(age > 30 && < 40)\n  \tVehicle(type in ( \"sedan\", \"wagon\" ), age < 3)\n  then\n\tconsequence();\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "#testing 'in' operator\n\nrule simple_rule \n  when\n  \tPerson(age > 30 && < 40)\n  \tVehicle(type in ( \"sedan\", \"wagon\" ), age < 3)\n  then\n\tconsequence();\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit68() throws Exception {
+		// test input: "#testing not 'in' operator\n\nrule simple_rule \n  when\n  \tPerson(age > 30 && < 40)\n  \tVehicle(type not in ( \"sedan\", \"wagon\" ), age < 3)\n  then\n\tconsequence();\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "#testing not 'in' operator\n\nrule simple_rule \n  when\n  \tPerson(age > 30 && < 40)\n  \tVehicle(type not in ( \"sedan\", \"wagon\" ), age < 3)\n  then\n\tconsequence();\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit69() throws Exception {
+		// test input: "package org.drools;\n\nglobal java.util.List list;\n\nrule \"rule1\"\nwhen\n    Pattern1();\n    Pattern2() from x.y.z;\nthen\n    System.out.println(\"Test\");\nend;\n\nquery \"query1\"\n\tPattern5();\n\tPattern6();\n\tPattern7();\nend;\n\nrule \"rule2\"\nwhen\n    Pattern3();\n    Pattern4() from collect( Pattern5() );\nthen\n    System.out.println(\"Test\");\nend;\n\n\t"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package org.drools;\n\nglobal java.util.List list;\n\nrule \"rule1\"\nwhen\n    Pattern1();\n    Pattern2() from x.y.z;\nthen\n    System.out.println(\"Test\");\nend;\n\nquery \"query1\"\n\tPattern5();\n\tPattern6();\n\tPattern7();\nend;\n\nrule \"rule2\"\nwhen\n    Pattern3();\n    Pattern4() from collect( Pattern5() );\nthen\n    System.out.println(\"Test\");\nend;\n\n\t", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit70() throws Exception {
+		// test input: "package org.drools\n\nrule \"Test Parse\"\n\nwhen\n    eval( 3==3 )\nthen\n    System.out.println(\"OK\");\nend "
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package org.drools\n\nrule \"Test Parse\"\n\nwhen\n    eval( 3==3 )\nthen\n    System.out.println(\"OK\");\nend ", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit71() throws Exception {
+		// test input: "rule \"AccumulateReverseParserTest\"\nwhen\n     Integer() from accumulate( Person( age > 21 ),\n                                init( int x = 0; ),\n                                action( x++; ),\n                                reverse( x--; ),\n                                result( new Integer(x) ) );\nthen\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"AccumulateReverseParserTest\"\nwhen\n     Integer() from accumulate( Person( age > 21 ),\n                                init( int x = 0; ),\n                                action( x++; ),\n                                reverse( x--; ),\n                                result( new Integer(x) ) );\nthen\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit72() throws Exception {
+		// test input: "rule \"AccumulateReverseParserTest\"\nwhen\n     Number() from accumulate( Person( $age : age > 21 ),\n                               average( $age ) );\nthen\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"AccumulateReverseParserTest\"\nwhen\n     Number() from accumulate( Person( $age : age > 21 ),\n                               average( $age ) );\nthen\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit73() throws Exception {
+		// test input: "rule \"CollectParserTest\"\nwhen\n     #bellow statement makes no sense, but is useful to test parsing recursiveness\n     $personList : ArrayList() from collect( $p : Person( age > 21 || age < 10 ) from collect( People() from $town.getPeople() ) );\nthen\nend\n\n\t"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"CollectParserTest\"\nwhen\n     #bellow statement makes no sense, but is useful to test parsing recursiveness\n     $personList : ArrayList() from collect( $p : Person( age > 21 || age < 10 ) from collect( People() from $town.getPeople() ) );\nthen\nend\n\n\t", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit74() throws Exception {
+		// test input: "rule \"AccumulateParserTest\"\nwhen\n     #bellow statement makes no sense, but is useful to test parsing recursiveness\n     $personList : ArrayList() from accumulate( Person( $age : age > 21 || < 10 ) from collect( People() from $town.getPeople() ),\n                                                max( $age ) );\nthen\nend\n\n\t"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"AccumulateParserTest\"\nwhen\n     #bellow statement makes no sense, but is useful to test parsing recursiveness\n     $personList : ArrayList() from accumulate( Person( $age : age > 21 || < 10 ) from collect( People() from $town.getPeople() ),\n                                                max( $age ) );\nthen\nend\n\n\t", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit75() throws Exception {
+		// test input: "package org.drools;\n\nrule \"testing OR CE\"\nwhen\n    $p : Person( name == \"bob\" )\n    $c : Cheese( type == $p.likes ) || Cheese( price == 10 )\nthen\n    // do something\nend "
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package org.drools;\n\nrule \"testing OR CE\"\nwhen\n    $p : Person( name == \"bob\" )\n    $c : Cheese( type == $p.likes ) || Cheese( price == 10 )\nthen\n    // do something\nend ", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit76() throws Exception {
+		// test input: "rule \"another test\" salience 10 when eval( true ) then System.out.println(1); end"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"another test\" salience 10 when eval( true ) then System.out.println(1); end", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit77() throws Exception {
+		// test input: "rule \"another test\" salience 10 when eval( true ) then System.out.println(1);\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"another test\" salience 10 when eval( true ) then System.out.println(1);\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit78() throws Exception {
+		// test input: "rule \"AccumulateMultiPatternParserTest\"\nwhen\n     $counter:Integer() from accumulate( $person : Person( age > 21 ) and Cheese( type == $person.likes ),\n                                         init( int x = 0; ),\n                                         action( x++; ),\n                                         result( new Integer(x) ) );\nthen\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"AccumulateMultiPatternParserTest\"\nwhen\n     $counter:Integer() from accumulate( $person : Person( age > 21 ) and Cheese( type == $person.likes ),\n                                         init( int x = 0; ),\n                                         action( x++; ),\n                                         result( new Integer(x) ) );\nthen\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit79() throws Exception {
+		// test input: "package org.drools;\n\nrule \"test rule\"\n\tsalience 10\n\twhen\n\t\t$c: WorkerPerformanceContext(eval)$c.getBalanceMonth() != null))\n\tthen\n\t\tretract($p);\nend\n\t"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package org.drools;\n\nrule \"test rule\"\n\tsalience 10\n\twhen\n\t\t$c: WorkerPerformanceContext(eval)$c.getBalanceMonth() != null))\n\tthen\n\t\tretract($p);\nend\n\t", false);
+		Object actual = examineParserExecResult(28, retval);
+		Object expecting = "FAIL";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit80() throws Exception {
+		// test input: "package org.drools;\n\nrule \"Avoid NPE on wrong syntax\"\nwhen\n    not( Cheese( ( type == \"stilton\", price == 10 ) || ( type == \"brie\", price == 15 ) ) from $cheeseList )\nthen\n    System.out.println(\"OK\");\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package org.drools;\n\nrule \"Avoid NPE on wrong syntax\"\nwhen\n    not( Cheese( ( type == \"stilton\", price == 10 ) || ( type == \"brie\", price == 15 ) ) from $cheeseList )\nthen\n    System.out.println(\"OK\");\nend", false);
+		Object actual = examineParserExecResult(28, retval);
+		Object expecting = "FAIL";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit81() throws Exception {
+		// test input: "package org.drools;\n\nrule \"test pluggable operators\"\nwhen\n    $a : EventA()\n    $b : EventB( this after[1,10] $a )\n    $c : EventC( this finishes $b )\n    $d : EventD( this not starts $a )\n    $e : EventE( this not before [1, 10] $b )\nthen\nend"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "package org.drools;\n\nrule \"test pluggable operators\"\nwhen\n    $a : EventA()\n    $b : EventB( this after[1,10] $a )\n    $c : EventC( this finishes $b )\n    $d : EventD( this not starts $a )\n    $e : EventE( this not before [1, 10] $b )\nthen\nend", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit82() throws Exception {
+		// test input: "rule \"Test\"\nwhen\n( $r :LiteralRestriction( operator == Operator.EQUAL ) )\n        then\n    end"
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"Test\"\nwhen\n( $r :LiteralRestriction( operator == Operator.EQUAL ) )\n        then\n    end", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testCompilation_unit_walks_Compilation_unit83() throws Exception {
+		// test input: "rule \"Test2\"\nwhen\n( not $r :LiteralRestriction( operator == Operator.EQUAL ) )\n        then\n    end "
+		Object retval = execTreeParser("compilation_unit", "compilation_unit", "rule \"Test2\"\nwhen\n( not $r :LiteralRestriction( operator == Operator.EQUAL ) )\n        then\n    end ", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"compilation_unit", expecting, actual);
+	}
+
+	public void testLhs_walks_Pattern_source1() throws Exception {
+		// test input: "StockTick( symbol==\"ACME\") from entry-point StreamA"
+		Object retval = execTreeParser("lhs", "pattern_source", "StockTick( symbol==\"ACME\") from entry-point StreamA", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block1() throws Exception {
+		// test input: ""
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block2() throws Exception {
+		// test input: "     Country( $cities : city )\n     Person( city memberOf $cities )\n    "
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "     Country( $cities : city )\n     Person( city memberOf $cities )\n    ", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block3() throws Exception {
+		// test input: "     Country( $cities : city )\n     Person( city not memberOf $cities )\n    "
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "     Country( $cities : city )\n     Person( city not memberOf $cities )\n    ", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block4() throws Exception {
+		// test input: " Person( age < 42 && location==\"atlanta\") "
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", " Person( age < 42 && location==\"atlanta\") ", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block5() throws Exception {
+		// test input: " Person( age < 42 || location==\"atlanta\") "
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", " Person( age < 42 || location==\"atlanta\") ", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block6() throws Exception {
+		// test input: "Person( age < 42 && location==\"atlanta\" || age > 20 && location==\"Seatle\" || location == \"Chicago\")"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Person( age < 42 && location==\"atlanta\" || age > 20 && location==\"Seatle\" || location == \"Chicago\")", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block7() throws Exception {
+		// test input: "Person( age < 42 && ( location==\"atlanta\" || age > 20 && location==\"Seatle\") || location == \"Chicago\")"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Person( age < 42 && ( location==\"atlanta\" || age > 20 && location==\"Seatle\") || location == \"Chicago\")", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block8() throws Exception {
+		// test input: " Person( ( age == 70 && hair == \"black\" ) || ( age == 40 && hair == \"pink\" ) || ( age == 12 && ( hair == \"yellow\" || hair == \"blue\" ) ) ) "
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", " Person( ( age == 70 && hair == \"black\" ) || ( age == 40 && hair == \"pink\" ) || ( age == 12 && ( hair == \"yellow\" || hair == \"blue\" ) ) ) ", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block9() throws Exception {
+		// test input: " Person( name matches \"mark\" || matches \"bob\" ) "
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", " Person( name matches \"mark\" || matches \"bob\" ) ", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block10() throws Exception {
+		// test input: "\tCity( $city : city )\n\tCountry( cities not contains $city )\n\t"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\tCity( $city : city )\n\tCountry( cities not contains $city )\n\t", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block11() throws Exception {
+		// test input: " Message( text not matches '[abc]*' ) "
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", " Message( text not matches '[abc]*' ) ", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block12() throws Exception {
+		// test input: "Foo( bar > 1 || == 1 )"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Foo( bar > 1 || == 1 )", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block13() throws Exception {
+		// test input: "\t(or\n\tnot Person()\n\t\t(and Cheese()\n\t\t\tMeat()\n\t\t\tWine()))\n\t"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\t(or\n\tnot Person()\n\t\t(and Cheese()\n\t\t\tMeat()\n\t\t\tWine()))\n\t", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block14() throws Exception {
+		// test input: "Person( ( age ( > 60 && < 70 ) || ( > 50 && < 55 ) && hair == \"black\" ) || ( age == 40 && hair == \"pink\" ) || ( age == 12 && ( hair == \"yellow\" || hair == \"blue\" ) ))"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Person( ( age ( > 60 && < 70 ) || ( > 50 && < 55 ) && hair == \"black\" ) || ( age == 40 && hair == \"pink\" ) || ( age == 12 && ( hair == \"yellow\" || hair == \"blue\" ) ))", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block15() throws Exception {
+		// test input: "org   .   drools/*comment*/\t  .Message( text not matches $c#comment\n. property )"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "org   .   drools/*comment*/\t  .Message( text not matches $c#comment\n. property )", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block16() throws Exception {
+		// test input: " Test( ( text == null || text matches \"\" ) )  "
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", " Test( ( text == null || text matches \"\" ) )  ", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block17() throws Exception {
+		// test input: " $id : Something( duration == \"foo\") "
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", " $id : Something( duration == \"foo\") ", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block18() throws Exception {
+		// test input: "foo3 : Bar("
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "foo3 : Bar(", false);
+		Object actual = examineParserExecResult(28, retval);
+		Object expecting = "FAIL";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block19() throws Exception {
+		// test input: "Cheese(name == \"Stilton\", age==2001)\nWine(name == \"Grange\", age == \"1978\", accolades contains \"world champion\")"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Cheese(name == \"Stilton\", age==2001)\nWine(name == \"Grange\", age == \"1978\", accolades contains \"world champion\")", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block20() throws Exception {
+		// test input: "Foo()"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Foo()", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block21() throws Exception {
+		// test input: "not Cheese(type == \"stilton\")"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "not Cheese(type == \"stilton\")", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block22() throws Exception {
+		// test input: "Person(age < 42, location==\"atlanta\") \nor\nPerson(name==\"bob\")"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Person(age < 42, location==\"atlanta\") \nor\nPerson(name==\"bob\")", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block23() throws Exception {
+		// test input: "Foo(bar == false)\nFoo(boo > -42)\nFoo(boo > -42.42)"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Foo(bar == false)\nFoo(boo > -42)\nFoo(boo > -42.42)", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block24() throws Exception {
+		// test input: "Cheese( )"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Cheese( )", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block25() throws Exception {
+		// test input: "Col1() from something.doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\nCol2()"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Col1() from something.doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\nCol2()", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block26() throws Exception {
+		// test input: "Col1() from doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\nCol2()"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Col1() from doIt( foo,bar,42,\"hello\",{ a => \"b\", \"something\" => 42, \"a\" => foo, x => {x=>y}},\"end\", [a, \"b\", 42] )\nCol2()", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block27() throws Exception {
+		// test input: "Col1() from something.doIt\nCol2()"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Col1() from something.doIt\nCol2()", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block28() throws Exception {
+		// test input: "Col1() from something.doIt[\"key\"]\nCol2()"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Col1() from something.doIt[\"key\"]\nCol2()", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block29() throws Exception {
+		// test input: "Col1() from doIt1( foo,bar,42,\"hello\",{ a => \"b\"}, [a, \"b\", 42] )\n            .doIt2(bar, [a, \"b\", 42]).field[\"key\"]\nCol2()"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Col1() from doIt1( foo,bar,42,\"hello\",{ a => \"b\"}, [a, \"b\", 42] )\n            .doIt2(bar, [a, \"b\", 42]).field[\"key\"]\nCol2()", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block30() throws Exception {
+		// test input: "foo3 : Bar(a==3)\nfoo4 : Bar(a4:a==4)\nBaz()"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "foo3 : Bar(a==3)\nfoo4 : Bar(a4:a==4)\nBaz()", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block31() throws Exception {
+		// test input: "Person(age > 30 && < 40)\nVehicle(type == \"sedan\" || == \"wagon\", age < 3)"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Person(age > 30 && < 40)\nVehicle(type == \"sedan\" || == \"wagon\", age < 3)", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block32() throws Exception {
+		// test input: "    foo3 : Bar(a==3) ; foo4 : Bar(a4:a==4) ; Baz()"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "    foo3 : Bar(a==3) ; foo4 : Bar(a4:a==4) ; Baz()", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block33() throws Exception {
+		// test input: "not ( Cheese(type == \"stilton\") )\nexists ( Foo() )"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "not ( Cheese(type == \"stilton\") )\nexists ( Foo() )", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block34() throws Exception {
+		// test input: "not ( Cheese(type == \"stilton\") )\nexists ( Foo() )"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "not ( Cheese(type == \"stilton\") )\nexists ( Foo() )", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block35() throws Exception {
+		// test input: "a : (not ( Cheese(type == \"stilton\") ))\nexists ( Foo() )"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "a : (not ( Cheese(type == \"stilton\") ))\nexists ( Foo() )", false);
+		Object actual = examineParserExecResult(28, retval);
+		Object expecting = "FAIL";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block36() throws Exception {
+		// test input: " Cheese( t:type == \"cheddar\" ) "
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", " Cheese( t:type == \"cheddar\" ) ", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block37() throws Exception {
+		// test input: "Cheese( $type:type )"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Cheese( $type:type )", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block38() throws Exception {
+		// test input: "    Cheese($type : type == \"stilton\")\n    $person : Person($name : name == \"bob\", likes == $type)        "
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "    Cheese($type : type == \"stilton\")\n    $person : Person($name : name == \"bob\", likes == $type)        ", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block39() throws Exception {
+		// test input: "Person(name == \"mark\") or \n( Person(type == \"fan\") and Cheese(type == \"green\") )"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Person(name == \"mark\") or \n( Person(type == \"fan\") and Cheese(type == \"green\") )", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block40() throws Exception {
+		// test input: "Person(name == \"mark\") && Cheese(type == \"stilton\")\nPerson(name == \"mark\") || Cheese(type == \"stilton\")"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Person(name == \"mark\") && Cheese(type == \"stilton\")\nPerson(name == \"mark\") || Cheese(type == \"stilton\")", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block41() throws Exception {
+		// test input: "foo :  ( Person(name == \"mark\") or Person(type == \"fan\") ) \nCheese(type == \"green\")"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "foo :  ( Person(name == \"mark\") or Person(type == \"fan\") ) \nCheese(type == \"green\")", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block42() throws Exception {
+		// test input: "foo : ( Person(name == \"mark\") \n\tor \n\tPerson(type == \"fan\") )"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "foo : ( Person(name == \"mark\") \n\tor \n\tPerson(type == \"fan\") )", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block43() throws Exception {
+		// test input: "foo : ( \n\tPerson(name == \"mark\") or Person(type == \"fan\") \n\t)"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "foo : ( \n\tPerson(name == \"mark\") or Person(type == \"fan\") \n\t)", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block44() throws Exception {
+		// test input: " ( (not Foo(x==\"a\") or Foo(x==\"y\") ) and ( Shoes() or Butt() ) )"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", " ( (not Foo(x==\"a\") or Foo(x==\"y\") ) and ( Shoes() or Butt() ) )", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block45() throws Exception {
+		// test input: "eval(abc(\"foo\") + 5)\nFoo()\neval(qed())\nBar()"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "eval(abc(\"foo\") + 5)\nFoo()\neval(qed())\nBar()", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block46() throws Exception {
+		// test input: "Foo()\nBar()\neval(abc(\"foo\"))"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Foo()\nBar()\neval(abc(\"foo\"))", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block47() throws Exception {
+		// test input: "Foo(name== (a + b))"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Foo(name== (a + b))", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block48() throws Exception {
+		// test input: "Person( $age2:age -> ($age2 == $age1+2 ) )"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Person( $age2:age -> ($age2 == $age1+2 ) )", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block49() throws Exception {
+		// test input: "Foo(bar == Foo.BAR)"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Foo(bar == Foo.BAR)", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block50() throws Exception {
+		// test input: "p: Person( name soundslike \"Michael\" )"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "p: Person( name soundslike \"Michael\" )", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block51() throws Exception {
+		// test input: "Foo()\nBar()\neval(\n\n\n\n       abc(\n       \n       \"foo\") + \n       5\n       \n       \n       \n        \n       )"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Foo()\nBar()\neval(\n\n\n\n       abc(\n       \n       \"foo\") + \n       5\n       \n       \n       \n        \n       )", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block52() throws Exception {
+		// test input: "eval(abc();)"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "eval(abc();)", false);
+		Object actual = examineParserExecResult(28, retval);
+		Object expecting = "FAIL";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block53() throws Exception {
+		// test input: "Foo(\n  bar == baz, la==laz\n  )\n "
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "Foo(\n  bar == baz, la==laz\n  )\n ", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block54() throws Exception {
+		// test input: "com.cheeseco.Cheese($type : type == \"stilton\")"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "com.cheeseco.Cheese($type : type == \"stilton\")", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block55() throws Exception {
+		// test input: "     Integer() from accumulate( Person( age > 21 ),\n                            init( int x = 0; ),\n                            action( x++; ),\n                            result( new Integer(x) ) );"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "     Integer() from accumulate( Person( age > 21 ),\n                            init( int x = 0; ),\n                            action( x++; ),\n                            result( new Integer(x) ) );", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block56() throws Exception {
+		// test input: " $counter:Integer() from accumulate( $person : Person( age > 21 ),\n                                     init( int x = 0; ),\n                                     action( x++; ),\n                                     result( new Integer(x) ) );"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", " $counter:Integer() from accumulate( $person : Person( age > 21 ),\n                                     init( int x = 0; ),\n                                     action( x++; ),\n                                     result( new Integer(x) ) );", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block57() throws Exception {
+		// test input: "$personList : ArrayList() from collect( Person( age > 21 ) );"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "$personList : ArrayList() from collect( Person( age > 21 ) );", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block58() throws Exception {
+		// test input: "\tnot ( State( $state : state ) and\n          not( Person( status == $state, $likes : likes ) and\n               Cheese( type == $likes ) ) )\n    Person( name == \"Bob\" )\n    ( Cheese( price == 10 ) or Cheese( type == \"brie\" ) )"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\tnot ( State( $state : state ) and\n          not( Person( status == $state, $likes : likes ) and\n               Cheese( type == $likes ) ) )\n    Person( name == \"Bob\" )\n    ( Cheese( price == 10 ) or Cheese( type == \"brie\" ) )", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block59() throws Exception {
+		// test input: " forall( Person( age > 21, $likes : likes )\n         Cheese( type == $likes ) );"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", " forall( Person( age > 21, $likes : likes )\n         Cheese( type == $likes ) );", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block60() throws Exception {
+		// test input: "  \tPerson(age > 30 && < 40)\n  \tVehicle(type in ( \"sedan\", \"wagon\" ), age < 3)\n\t"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "  \tPerson(age > 30 && < 40)\n  \tVehicle(type in ( \"sedan\", \"wagon\" ), age < 3)\n\t", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block61() throws Exception {
+		// test input: "  \tPerson(age > 30 && < 40)\n  \tVehicle(type not in ( \"sedan\", \"wagon\" ), age < 3)\n\t"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "  \tPerson(age > 30 && < 40)\n  \tVehicle(type not in ( \"sedan\", \"wagon\" ), age < 3)\n\t", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block62() throws Exception {
+		// test input: "\t\tPattern1();\n\t\tPattern2() from x.y.z;\n\t\tPattern5();\n\t\tPattern6();\n\t\tPattern7();\n\t\tPattern3();\n\t\tPattern4() from collect( Pattern5() );\n\t\t"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\t\tPattern1();\n\t\tPattern2() from x.y.z;\n\t\tPattern5();\n\t\tPattern6();\n\t\tPattern7();\n\t\tPattern3();\n\t\tPattern4() from collect( Pattern5() );\n\t\t", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block63() throws Exception {
+		// test input: " eval( 3==3 ) "
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", " eval( 3==3 ) ", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block64() throws Exception {
+		// test input: "\t\tInteger() from accumulate( Person( age > 21 ),\n\t\t                           init( int x = 0; ),\n\t\t                           action( x++; ),\n\t\t                           reverse( x--; ),\n\t\t                           result( new Integer(x) ) );\n\t\t"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\t\tInteger() from accumulate( Person( age > 21 ),\n\t\t                           init( int x = 0; ),\n\t\t                           action( x++; ),\n\t\t                           reverse( x--; ),\n\t\t                           result( new Integer(x) ) );\n\t\t", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block65() throws Exception {
+		// test input: "\t     Number() from accumulate( Person( $age : age > 21 ),\n\t                               average( $age ) );\n\t\t"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\t     Number() from accumulate( Person( $age : age > 21 ),\n\t                               average( $age ) );\n\t\t", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block66() throws Exception {
+		// test input: "\t     #bellow statement makes no sense, but is useful to test parsing recursiveness\n\t     $personList : ArrayList() from collect( $p : Person( age > 21 || age < 10 ) from collect( People() from $town.getPeople() ) );\n\t\t"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\t     #bellow statement makes no sense, but is useful to test parsing recursiveness\n\t     $personList : ArrayList() from collect( $p : Person( age > 21 || age < 10 ) from collect( People() from $town.getPeople() ) );\n\t\t", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block67() throws Exception {
+		// test input: "\t     $personList : ArrayList() from accumulate( Person( $age : age > 21 || < 10 ) from collect( People() from $town.getPeople() ),\n\t                                                max( $age ) );\n\t\t"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\t     $personList : ArrayList() from accumulate( Person( $age : age > 21 || < 10 ) from collect( People() from $town.getPeople() ),\n\t                                                max( $age ) );\n\t\t", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block68() throws Exception {
+		// test input: "\t    $p : Person( name == \"bob\" )\n\t    $c : Cheese( type == $p.likes ) || Cheese( price == 10 )\n\t    "
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\t    $p : Person( name == \"bob\" )\n\t    $c : Cheese( type == $p.likes ) || Cheese( price == 10 )\n\t    ", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block69() throws Exception {
+		// test input: "\t\t     $counter:Integer() from accumulate( $person : Person( age > 21 ) and Cheese( type == $person.likes ),\n\t\t                                         init( int x = 0; ),\n\t\t                                         action( x++; ),\n\t\t                                         result( new Integer(x) ) );\n\t\t\t"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\t\t     $counter:Integer() from accumulate( $person : Person( age > 21 ) and Cheese( type == $person.likes ),\n\t\t                                         init( int x = 0; ),\n\t\t                                         action( x++; ),\n\t\t                                         result( new Integer(x) ) );\n\t\t\t", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block70() throws Exception {
+		// test input: "\t\t    $a : EventA()\n\t\t    $b : EventB( this after[1,10] $a )\n\t\t    $c : EventC( this finishes $b )\n\t\t    $d : EventD( this not starts $a )\n\t\t    $e : EventE( this not before [1, 10] $b )\n\t\t\t"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "\t\t    $a : EventA()\n\t\t    $b : EventB( this after[1,10] $a )\n\t\t    $c : EventC( this finishes $b )\n\t\t    $d : EventD( this not starts $a )\n\t\t    $e : EventE( this not before [1, 10] $b )\n\t\t\t", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testLhs_block_walks_Normal_lhs_block71() throws Exception {
+		// test input: "StockTick( symbol==\"ACME\") from entry-point StreamA"
+		Object retval = execTreeParser("lhs_block", "normal_lhs_block", "StockTick( symbol==\"ACME\") from entry-point StreamA", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"lhs_block", expecting, actual);
+	}
+
+	public void testFact_expression_walks_Constraints1() throws Exception {
+		// test input: "eval( $var.equals(\"xyz\") )"
+		Object retval = execTreeParser("fact_expression", "constraints", "eval( $var.equals(\"xyz\") )", false);
+		Object actual = examineParserExecResult(27, retval);
+		Object expecting = "OK";
+		
+		assertEquals("testing rule "+"fact_expression", expecting, actual);
+	}
+
+	// Invoke target parser.rule
+	public Object execTreeParser(String testTreeRuleName, String testRuleName, String testInput, boolean isFile) throws Exception {
+		CharStream input;
+		if ( isFile==true ) {
+			input = new ANTLRFileStream(testInput);
+		}
+		else {
+			input = new ANTLRStringStream(testInput);
+		}
+		try {
+			DRLLexer lexer = new DRLLexer(input);
+			CommonTokenStream tokens = new CommonTokenStream(lexer);
+			DRLParser parser = new DRLParser(tokens);
+			parser.setTreeAdaptor(new DroolsTreeAdaptor());
+			/** Use Reflection to get rule method from parser */
+			Method ruleName = Class.forName("org.drools.lang.DRLParser").getMethod(testRuleName);
+
+			/** Start of I/O Redirecting */
+			PipedInputStream pipedIn = new PipedInputStream();
+			PipedOutputStream pipedOut = new PipedOutputStream();
+			PipedInputStream pipedErrIn = new PipedInputStream();
+			PipedOutputStream pipedErrOut = new PipedOutputStream();
+			try {
+				pipedOut.connect(pipedIn);
+				pipedErrOut.connect(pipedErrIn);
+			}
+			catch(IOException e) {
+				System.err.println("connection failed...");
+				System.exit(1);
+			}
+			PrintStream console = System.out;
+			PrintStream consoleErr = System.err;
+			PrintStream ps = new PrintStream(pipedOut);
+			PrintStream ps2 = new PrintStream(pipedErrOut);
+			System.setOut(ps);
+			System.setErr(ps2);
+			/** End of redirecting */
+
+			/** Invoke grammar rule, and get the return value */
+			Object ruleReturn = ruleName.invoke(parser);
+			
+			Class _return = Class.forName("org.drools.lang.DRLParser"+"$"+testRuleName+"_return");            	
+        	Method returnName = _return.getMethod("getTree");
+        	CommonTree tree = (CommonTree) returnName.invoke(ruleReturn);
+			
+			// Walk resulting tree; create tree nodes stream first
+        	CommonTreeNodeStream nodes = new CommonTreeNodeStream(tree);
+        	// AST nodes have payload that point into token stream
+        	nodes.setTokenStream(tokens);
+        	// Create a tree walker attached to the nodes stream
+        	Tree2TestDRL treeParser = new Tree2TestDRL(nodes);
+        	/** Invoke the tree rule, and store the return value if there is */
+            Method treeRuleName = Class.forName("org.drools.lang.Tree2TestDRL").getMethod(testTreeRuleName);
+            Object treeRuleReturn = treeRuleName.invoke(treeParser);
+            
+            String astString = null;
+            /** If tree rule has return value, determine if it's an AST */
+            if ( treeRuleReturn!=null ) {
+            	/** If return object is instanceof AST, get the toStringTree */
+                if ( treeRuleReturn.toString().indexOf(testTreeRuleName+"_return")>0 ) {
+                	try {	// NullPointerException may happen here...
+                		Class _treeReturn = Class.forName("org.drools.lang.Tree2TestDRL"+"$"+testTreeRuleName+"_return");
+                		Method[] methods = _treeReturn.getDeclaredMethods();
+			            for(Method method : methods) {
+			                if ( method.getName().equals("getTree") ) {
+			                	Method treeReturnName = _treeReturn.getMethod("getTree");
+		                    	CommonTree returnTree = (CommonTree) treeReturnName.invoke(treeRuleReturn);
+		                        astString = returnTree.toStringTree();
+			                }
+			            }
+                	}
+                	catch(Exception e) {
+                		System.err.println(e);
+                	}
+                }
+            }
+
+			org.antlr.gunit.gUnitExecuter.StreamVacuum stdoutVacuum = new org.antlr.gunit.gUnitExecuter.StreamVacuum(pipedIn);
+			org.antlr.gunit.gUnitExecuter.StreamVacuum stderrVacuum = new org.antlr.gunit.gUnitExecuter.StreamVacuum(pipedErrIn);
+			ps.close();
+			ps2.close();
+			System.setOut(console);			// Reset standard output
+			System.setErr(consoleErr);		// Reset standard err out
+			this.stdout = null;
+			this.stderr = null;
+			stdoutVacuum.start();
+			stderrVacuum.start();			
+			stdoutVacuum.join();
+			stderrVacuum.join();
+			// retVal could be actual return object from rule, stderr or stdout
+			if ( stderrVacuum.toString().length()>0 ) {
+				this.stderr = stderrVacuum.toString();
+				return this.stderr;
+			}
+            if ( parser.hasErrors() ) {
+                this.stderr = parser.getErrors().toString();
+                return this.stderr;
+            }
+			if ( stdoutVacuum.toString().length()>0 ) {
+				this.stdout = stdoutVacuum.toString();
+			}
+			if ( astString!=null ) {	// Return toStringTree of AST
+				return astString;
+			}
+			if ( treeRuleReturn!=null ) {
+				return treeRuleReturn;
+			}
+			if ( stderrVacuum.toString().length()==0 && stdoutVacuum.toString().length()==0 ) {
+				return null;
+			}
+		} catch (ClassNotFoundException e) {
+			e.printStackTrace(); System.exit(1);
+		} catch (SecurityException e) {
+			e.printStackTrace(); System.exit(1);
+		} catch (NoSuchMethodException e) {
+			e.printStackTrace(); System.exit(1);
+		} catch (IllegalAccessException e) {
+			e.printStackTrace(); System.exit(1);
+		} catch (InvocationTargetException e) {
+//			this.stderr = "error";
+			return e.getCause().toString();
+		} catch (InterruptedException e) {
+			e.printStackTrace(); System.exit(1);
+		} catch (Exception e) {
+			e.printStackTrace(); System.exit(1);
+		}
+		return stdout;
+	}
+
+	// Modify the return value if the expected token type is OK or FAIL
+	public Object examineParserExecResult(int tokenType, Object retVal) {	
+		if ( tokenType==27 ) {	// expected Token: OK
+			if ( this.stderr==null ) {
+				return "OK";
+			}
+			else {
+				return "FAIL";
+			}
+		}
+		else if ( tokenType==28 ) {	// expected Token: FAIL
+			if ( this.stderr!=null ) {
+				return "FAIL";
+			}
+			else {
+				return "OK";
+			}
+		}
+		else {	// return the same object for the other token types
+			return retVal;
+		}		
+	}
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/Tree2TestDRL.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/Tree2TestDRL.java	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/Tree2TestDRL.java	2008-11-25 18:08:44 UTC (rev 24099)
@@ -1,159 +1,160 @@
-// $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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g 2008-11-24 14:43:05
 
 	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_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", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT"
     };
-    public static final int COMMA=89;
+    public static final int COMMA=86;
     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=83;
+    public static final int HexDigit=119;
     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=115;
     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=112;
     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 DOT=81;
+    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=110;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=123;
     public static final int VT_DATA_TYPE=38;
-    public static final int VK_MATCHES=68;
     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=113;
+    public static final int AT=88;
+    public static final int LEFT_PAREN=85;
+    public static final int DOUBLE_AMPER=95;
     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=91;
     public static final int VT_ENTRYPOINT_ID=13;
-    public static final int VK_SOUNDSLIKE=70;
     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=117;
+    public static final int OVER=97;
+    public static final int STRING=84;
+    public static final int VK_AND=72;
     public static final int VT_ACCESSOR_ELEMENT=37;
+    public static final int VK_GLOBAL=66;
     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_REVERSE=76;
     public static final int VT_BEHAVIOR=21;
-    public static final int GRAVE_ACCENT=111;
+    public static final int GRAVE_ACCENT=122;
     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=74;
     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=100;
     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 VK_RESULT=77;
+    public static final int EQUALS=90;
+    public static final int UnicodeEscape=120;
+    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=102;
     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=79;
+    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=109;
+    public static final int COLON=89;
+    public static final int MULTI_LINE_COMMENT=125;
     public static final int VT_RULE_ATTRIBUTES=16;
-    public static final int RIGHT_SQUARE=115;
+    public static final int RIGHT_SQUARE=111;
     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=69;
     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=101;
+    public static final int FLOAT=108;
+    public static final int INIT=99;
+    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=94;
+    public static final int LESS=105;
     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=118;
+    public static final int VK_EXISTS=73;
+    public static final int INT=93;
     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=103;
     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=80;
+    public static final int FROM=96;
+    public static final int NOT_EQUAL=107;
+    public static final int RIGHT_CURLY=114;
+    public static final int VK_OPERATOR=78;
+    public static final int VK_ENTRY_POINT=68;
     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=92;
     public static final int VT_FROM_SOURCE=29;
-    public static final int VK_CONTAINS=67;
     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=70;
     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 GREATER_EQUAL=104;
     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=82;
+    public static final int VK_OR=71;
     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=106;
+    public static final int ACCUMULATE=98;
     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=116;
     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=121;
+    public static final int VK_ACTION=75;
+    public static final int RIGHT_PAREN=87;
     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=124;
 
+    // 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[] getTokenNames() { return Tree2TestDRL.tokenNames; }
     public String getGrammarFileName() { return "/Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g"; }
 
 
 
-    // $ANTLR start compilation_unit
+    // $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 )* ) ;
     public final void compilation_unit() throws RecognitionException {
         try {
@@ -177,9 +178,10 @@
                         {
                         pushFollow(FOLLOW_package_statement_in_compilation_unit45);
                         package_statement();
-                        _fsp--;
 
+                        state._fsp--;
 
+
                         }
                         break;
 
@@ -191,7 +193,7 @@
                     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;
                     }
 
@@ -202,9 +204,10 @@
                 	    {
                 	    pushFollow(FOLLOW_statement_in_compilation_unit48);
                 	    statement();
-                	    _fsp--;
 
+                	    state._fsp--;
 
+
                 	    }
                 	    break;
 
@@ -228,10 +231,10 @@
         }
         return ;
     }
-    // $ANTLR end compilation_unit
+    // $ANTLR end "compilation_unit"
 
 
-    // $ANTLR start package_statement
+    // $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 ) ;
     public final void package_statement() throws RecognitionException {
         try {
@@ -243,9 +246,10 @@
             match(input, Token.DOWN, null); 
             pushFollow(FOLLOW_package_id_in_package_statement65);
             package_id();
-            _fsp--;
 
+            state._fsp--;
 
+
             match(input, Token.UP, null); 
 
             }
@@ -259,10 +263,10 @@
         }
         return ;
     }
-    // $ANTLR end package_statement
+    // $ANTLR end "package_statement"
 
 
-    // $ANTLR start package_id
+    // $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 )+ ) ;
     public final void package_id() throws RecognitionException {
         try {
@@ -316,10 +320,10 @@
         }
         return ;
     }
-    // $ANTLR end package_id
+    // $ANTLR end "package_id"
 
 
-    // $ANTLR start statement
+    // $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 );
     public final void statement() throws RecognitionException {
         try {
@@ -384,7 +388,7 @@
                 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;
             }
@@ -395,9 +399,10 @@
                     {
                     pushFollow(FOLLOW_rule_attribute_in_statement93);
                     rule_attribute();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
                 case 2 :
@@ -405,9 +410,10 @@
                     {
                     pushFollow(FOLLOW_function_import_statement_in_statement98);
                     function_import_statement();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
                 case 3 :
@@ -415,9 +421,10 @@
                     {
                     pushFollow(FOLLOW_import_statement_in_statement104);
                     import_statement();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
                 case 4 :
@@ -425,9 +432,10 @@
                     {
                     pushFollow(FOLLOW_global_in_statement110);
                     global();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
                 case 5 :
@@ -435,9 +443,10 @@
                     {
                     pushFollow(FOLLOW_function_in_statement116);
                     function();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
                 case 6 :
@@ -445,9 +454,10 @@
                     {
                     pushFollow(FOLLOW_template_in_statement121);
                     template();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
                 case 7 :
@@ -455,9 +465,10 @@
                     {
                     pushFollow(FOLLOW_rule_in_statement126);
                     rule();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
                 case 8 :
@@ -465,9 +476,10 @@
                     {
                     pushFollow(FOLLOW_query_in_statement131);
                     query();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
                 case 9 :
@@ -475,9 +487,10 @@
                     {
                     pushFollow(FOLLOW_type_declaration_in_statement136);
                     type_declaration();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
@@ -491,10 +504,10 @@
         }
         return ;
     }
-    // $ANTLR end statement
+    // $ANTLR end "statement"
 
 
-    // $ANTLR start import_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 ) ;
     public final void import_statement() throws RecognitionException {
         try {
@@ -506,9 +519,10 @@
             match(input, Token.DOWN, null); 
             pushFollow(FOLLOW_import_name_in_import_statement150);
             import_name();
-            _fsp--;
 
+            state._fsp--;
 
+
             match(input, Token.UP, null); 
 
             }
@@ -522,10 +536,10 @@
         }
         return ;
     }
-    // $ANTLR end import_statement
+    // $ANTLR end "import_statement"
 
 
-    // $ANTLR start function_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 ) ;
     public final void function_import_statement() throws RecognitionException {
         try {
@@ -538,9 +552,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,10 +569,10 @@
         }
         return ;
     }
-    // $ANTLR end function_import_statement
+    // $ANTLR end "function_import_statement"
 
 
-    // $ANTLR start import_name
+    // $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 )? ) ;
     public final void import_name() throws RecognitionException {
         try {
@@ -629,10 +644,10 @@
         }
         return ;
     }
-    // $ANTLR end import_name
+    // $ANTLR end "import_name"
 
 
-    // $ANTLR start global
+    // $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 ) ;
     public final void global() throws RecognitionException {
         try {
@@ -644,8 +659,9 @@
             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,10 +677,10 @@
         }
         return ;
     }
-    // $ANTLR end global
+    // $ANTLR end "global"
 
 
-    // $ANTLR start function
+    // $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 ) ;
     public final void function() throws RecognitionException {
         try {
@@ -687,9 +703,10 @@
                     {
                     pushFollow(FOLLOW_data_type_in_function218);
                     data_type();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
@@ -698,13 +715,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,10 +737,10 @@
         }
         return ;
     }
-    // $ANTLR end function
+    // $ANTLR end "function"
 
 
-    // $ANTLR start query
+    // $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 ) ;
     public final void query() throws RecognitionException {
         try {
@@ -745,9 +764,10 @@
                     {
                     pushFollow(FOLLOW_parameters_in_query242);
                     parameters();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
@@ -755,8 +775,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,10 +793,10 @@
         }
         return ;
     }
-    // $ANTLR end query
+    // $ANTLR end "query"
 
 
-    // $ANTLR start parameters
+    // $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 )* ) ;
     public final void parameters() throws RecognitionException {
         try {
@@ -803,9 +824,10 @@
                 	    {
                 	    pushFollow(FOLLOW_param_definition_in_parameters262);
                 	    param_definition();
-                	    _fsp--;
 
+                	    state._fsp--;
 
+
                 	    }
                 	    break;
 
@@ -829,10 +851,10 @@
         }
         return ;
     }
-    // $ANTLR end parameters
+    // $ANTLR end "parameters"
 
 
-    // $ANTLR start param_definition
+    // $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 ;
     public final void param_definition() throws RecognitionException {
         try {
@@ -852,9 +874,10 @@
                     {
                     pushFollow(FOLLOW_data_type_in_param_definition275);
                     data_type();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
@@ -862,9 +885,10 @@
 
             pushFollow(FOLLOW_argument_in_param_definition278);
             argument();
-            _fsp--;
 
+            state._fsp--;
 
+
             }
 
         }
@@ -876,10 +900,10 @@
         }
         return ;
     }
-    // $ANTLR end param_definition
+    // $ANTLR end "param_definition"
 
 
-    // $ANTLR start argument
+    // $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 )* ;
     public final void argument() throws RecognitionException {
         try {
@@ -904,9 +928,10 @@
             	    {
             	    pushFollow(FOLLOW_dimension_definition_in_argument291);
             	    dimension_definition();
-            	    _fsp--;
 
+            	    state._fsp--;
 
+
             	    }
             	    break;
 
@@ -927,10 +952,10 @@
         }
         return ;
     }
-    // $ANTLR end argument
+    // $ANTLR end "argument"
 
 
-    // $ANTLR start type_declaration
+    // $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 ) ;
     public final void type_declaration() throws RecognitionException {
         try {
@@ -958,9 +983,10 @@
             	    {
             	    pushFollow(FOLLOW_decl_metadata_in_type_declaration308);
             	    decl_metadata();
-            	    _fsp--;
 
+            	    state._fsp--;
 
+
             	    }
             	    break;
 
@@ -986,9 +1012,10 @@
             	    {
             	    pushFollow(FOLLOW_decl_field_in_type_declaration311);
             	    decl_field();
-            	    _fsp--;
 
+            	    state._fsp--;
 
+
             	    }
             	    break;
 
@@ -1012,10 +1039,10 @@
         }
         return ;
     }
-    // $ANTLR end type_declaration
+    // $ANTLR end "type_declaration"
 
 
-    // $ANTLR start decl_metadata
+    // $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 ) ;
     public final void decl_metadata() throws RecognitionException {
         try {
@@ -1041,10 +1068,10 @@
         }
         return ;
     }
-    // $ANTLR end decl_metadata
+    // $ANTLR end "decl_metadata"
 
 
-    // $ANTLR start decl_field
+    // $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 )* ) ;
     public final void decl_field() throws RecognitionException {
         try {
@@ -1067,9 +1094,10 @@
                     {
                     pushFollow(FOLLOW_decl_field_initialization_in_decl_field346);
                     decl_field_initialization();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
@@ -1077,8 +1105,9 @@
 
             pushFollow(FOLLOW_data_type_in_decl_field349);
             data_type();
-            _fsp--;
 
+            state._fsp--;
+
             // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:82:46: ( decl_metadata )*
             loop15:
             do {
@@ -1096,9 +1125,10 @@
             	    {
             	    pushFollow(FOLLOW_decl_metadata_in_decl_field351);
             	    decl_metadata();
-            	    _fsp--;
 
+            	    state._fsp--;
 
+
             	    }
             	    break;
 
@@ -1121,10 +1151,10 @@
         }
         return ;
     }
-    // $ANTLR end decl_field
+    // $ANTLR end "decl_field"
 
 
-    // $ANTLR start decl_field_initialization
+    // $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 ) ;
     public final void decl_field_initialization() throws RecognitionException {
         try {
@@ -1149,10 +1179,10 @@
         }
         return ;
     }
-    // $ANTLR end decl_field_initialization
+    // $ANTLR end "decl_field_initialization"
 
 
-    // $ANTLR start template
+    // $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 ) ;
     public final void template() throws RecognitionException {
         try {
@@ -1181,9 +1211,10 @@
             	    {
             	    pushFollow(FOLLOW_template_slot_in_template384);
             	    template_slot();
-            	    _fsp--;
 
+            	    state._fsp--;
 
+
             	    }
             	    break;
 
@@ -1211,10 +1242,10 @@
         }
         return ;
     }
-    // $ANTLR end template
+    // $ANTLR end "template"
 
 
-    // $ANTLR start template_slot
+    // $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 ) ;
     public final void template_slot() throws RecognitionException {
         try {
@@ -1226,8 +1257,9 @@
             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,10 +1275,10 @@
         }
         return ;
     }
-    // $ANTLR end template_slot
+    // $ANTLR end "template_slot"
 
 
-    // $ANTLR start rule
+    // $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 ) ;
     public final void rule() throws RecognitionException {
         try {
@@ -1270,9 +1302,10 @@
                     {
                     pushFollow(FOLLOW_rule_attributes_in_rule421);
                     rule_attributes();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
@@ -1291,9 +1324,10 @@
                     {
                     pushFollow(FOLLOW_when_part_in_rule424);
                     when_part();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
@@ -1314,10 +1348,10 @@
         }
         return ;
     }
-    // $ANTLR end rule
+    // $ANTLR end "rule"
 
 
-    // $ANTLR start when_part
+    // $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 ;
     public final void when_part() throws RecognitionException {
         try {
@@ -1327,9 +1361,10 @@
             match(input,WHEN,FOLLOW_WHEN_in_when_part439); 
             pushFollow(FOLLOW_lhs_block_in_when_part441);
             lhs_block();
-            _fsp--;
 
+            state._fsp--;
 
+
             }
 
         }
@@ -1341,10 +1376,10 @@
         }
         return ;
     }
-    // $ANTLR end when_part
+    // $ANTLR end "when_part"
 
 
-    // $ANTLR start rule_attributes
+    // $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 )+ ) ;
     public final void rule_attributes() throws RecognitionException {
         try {
@@ -1390,9 +1425,10 @@
             	    {
             	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes458);
             	    rule_attribute();
-            	    _fsp--;
 
+            	    state._fsp--;
 
+
             	    }
             	    break;
 
@@ -1419,10 +1455,10 @@
         }
         return ;
     }
-    // $ANTLR end rule_attributes
+    // $ANTLR end "rule_attributes"
 
 
-    // $ANTLR start rule_attribute
+    // $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 ) );
     public final void rule_attribute() throws RecognitionException {
         try {
@@ -1491,7 +1527,7 @@
                 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;
             }
@@ -1505,12 +1541,11 @@
                     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;
                     }
 
 
@@ -1718,10 +1753,10 @@
         }
         return ;
     }
-    // $ANTLR end rule_attribute
+    // $ANTLR end "rule_attribute"
 
 
-    // $ANTLR start lhs_block
+    // $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 )* ) ;
     public final void lhs_block() throws RecognitionException {
         try {
@@ -1749,9 +1784,10 @@
                 	    {
                 	    pushFollow(FOLLOW_lhs_in_lhs_block610);
                 	    lhs();
-                	    _fsp--;
 
+                	    state._fsp--;
 
+
                 	    }
                 	    break;
 
@@ -1775,10 +1811,10 @@
         }
         return ;
     }
-    // $ANTLR end lhs_block
+    // $ANTLR end "lhs_block"
 
 
-    // $ANTLR start lhs
+    // $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 );
     public final void lhs() throws RecognitionException {
         try {
@@ -1837,7 +1873,7 @@
                 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;
             }
@@ -1867,9 +1903,10 @@
                     	    {
                     	    pushFollow(FOLLOW_lhs_in_lhs625);
                     	    lhs();
-                    	    _fsp--;
 
+                    	    state._fsp--;
 
+
                     	    }
                     	    break;
 
@@ -1895,13 +1932,15 @@
                     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); 
 
                     }
@@ -1930,9 +1969,10 @@
                     	    {
                     	    pushFollow(FOLLOW_lhs_in_lhs646);
                     	    lhs();
-                    	    _fsp--;
 
+                    	    state._fsp--;
 
+
                     	    }
                     	    break;
 
@@ -1958,13 +1998,15 @@
                     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); 
 
                     }
@@ -1977,9 +2019,10 @@
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_lhs_in_lhs667);
                     lhs();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
@@ -1992,9 +2035,10 @@
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_lhs_in_lhs676);
                     lhs();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
@@ -2035,9 +2079,10 @@
                     	    {
                     	    pushFollow(FOLLOW_lhs_in_lhs694);
                     	    lhs();
-                    	    _fsp--;
 
+                    	    state._fsp--;
 
+
                     	    }
                     	    break;
 
@@ -2063,13 +2108,15 @@
                     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); 
 
                     }
@@ -2079,9 +2126,10 @@
                     {
                     pushFollow(FOLLOW_lhs_pattern_in_lhs712);
                     lhs_pattern();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
@@ -2095,10 +2143,10 @@
         }
         return ;
     }
-    // $ANTLR end lhs
+    // $ANTLR end "lhs"
 
 
-    // $ANTLR start from_elements
+    // $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 )? ) );
     public final void from_elements() throws RecognitionException {
         try {
@@ -2127,7 +2175,7 @@
                 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;
             }
@@ -2141,8 +2189,9 @@
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_lhs_in_from_elements726);
                     lhs();
-                    _fsp--;
 
+                    state._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 )
                     int alt30=2;
                     int LA30_0 = input.LA(1);
@@ -2155,7 +2204,7 @@
                     }
                     else {
                         NoViableAltException nvae =
-                            new NoViableAltException("141:21: ( accumulate_init_clause | accumulate_id_clause )", 30, 0, input);
+                            new NoViableAltException("", 30, 0, input);
 
                         throw nvae;
                     }
@@ -2165,9 +2214,10 @@
                             {
                             pushFollow(FOLLOW_accumulate_init_clause_in_from_elements729);
                             accumulate_init_clause();
-                            _fsp--;
 
+                            state._fsp--;
 
+
                             }
                             break;
                         case 2 :
@@ -2175,9 +2225,10 @@
                             {
                             pushFollow(FOLLOW_accumulate_id_clause_in_from_elements731);
                             accumulate_id_clause();
-                            _fsp--;
 
+                            state._fsp--;
 
+
                             }
                             break;
 
@@ -2196,9 +2247,10 @@
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_lhs_in_from_elements741);
                     lhs();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
@@ -2253,9 +2305,10 @@
                             {
                             pushFollow(FOLLOW_expression_chain_in_from_elements764);
                             expression_chain();
-                            _fsp--;
 
+                            state._fsp--;
 
+
                             }
                             break;
 
@@ -2277,10 +2330,10 @@
         }
         return ;
     }
-    // $ANTLR end from_elements
+    // $ANTLR end "from_elements"
 
 
-    // $ANTLR start accumulate_init_clause
+    // $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 ) ) ;
     public final void accumulate_init_clause() throws RecognitionException {
         try {
@@ -2315,9 +2368,10 @@
                     {
                     pushFollow(FOLLOW_accumulate_init_reverse_clause_in_accumulate_init_clause804);
                     accumulate_init_reverse_clause();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
@@ -2343,10 +2397,10 @@
         }
         return ;
     }
-    // $ANTLR end accumulate_init_clause
+    // $ANTLR end "accumulate_init_clause"
 
 
-    // $ANTLR start accumulate_init_reverse_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 ) ;
     public final void accumulate_init_reverse_clause() throws RecognitionException {
         try {
@@ -2371,10 +2425,10 @@
         }
         return ;
     }
-    // $ANTLR end accumulate_init_reverse_clause
+    // $ANTLR end "accumulate_init_reverse_clause"
 
 
-    // $ANTLR start accumulate_id_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 ) ;
     public final void accumulate_id_clause() throws RecognitionException {
         try {
@@ -2400,10 +2454,10 @@
         }
         return ;
     }
-    // $ANTLR end accumulate_id_clause
+    // $ANTLR end "accumulate_id_clause"
 
 
-    // $ANTLR start lhs_pattern
+    // $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 )? ;
     public final void lhs_pattern() throws RecognitionException {
         try {
@@ -2415,9 +2469,10 @@
             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 )?
             int alt35=2;
@@ -2432,9 +2487,10 @@
                     {
                     pushFollow(FOLLOW_over_clause_in_lhs_pattern865);
                     over_clause();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
@@ -2452,10 +2508,10 @@
         }
         return ;
     }
-    // $ANTLR end lhs_pattern
+    // $ANTLR end "lhs_pattern"
 
 
-    // $ANTLR start over_clause
+    // $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 )+ ) ;
     public final void over_clause() throws RecognitionException {
         try {
@@ -2483,9 +2539,10 @@
             	    {
             	    pushFollow(FOLLOW_over_element_in_over_clause880);
             	    over_element();
-            	    _fsp--;
 
+            	    state._fsp--;
 
+
             	    }
             	    break;
 
@@ -2512,10 +2569,10 @@
         }
         return ;
     }
-    // $ANTLR end over_clause
+    // $ANTLR end "over_clause"
 
 
-    // $ANTLR start over_element
+    // $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 ) ;
     public final void over_element() throws RecognitionException {
         try {
@@ -2542,164 +2599,144 @@
         }
         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-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_OPERATOR ( VK_NOT )? ( VT_SQUARE_CHUNK )? 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 )
-            int alt49=28;
+            // /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_OPERATOR ( VK_NOT )? ( VT_SQUARE_CHUNK )? 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 )
+            int alt46=24;
             switch ( input.LA(1) ) {
             case DOUBLE_PIPE:
                 {
-                alt49=1;
+                alt46=1;
                 }
                 break;
             case DOUBLE_AMPER:
                 {
-                alt49=2;
+                alt46=2;
                 }
                 break;
             case VT_FACT_BINDING:
                 {
-                alt49=3;
+                alt46=3;
                 }
                 break;
             case VT_FACT:
                 {
-                alt49=4;
+                alt46=4;
                 }
                 break;
             case VT_FACT_OR:
                 {
-                alt49=5;
+                alt46=5;
                 }
                 break;
             case VK_EVAL:
                 {
-                alt49=6;
+                alt46=6;
                 }
                 break;
             case VK_IN:
                 {
-                alt49=7;
+                alt46=7;
                 }
                 break;
             case EQUAL:
                 {
-                alt49=8;
+                alt46=8;
                 }
                 break;
             case GREATER:
                 {
-                alt49=9;
+                alt46=9;
                 }
                 break;
             case GREATER_EQUAL:
                 {
-                alt49=10;
+                alt46=10;
                 }
                 break;
             case LESS:
                 {
-                alt49=11;
+                alt46=11;
                 }
                 break;
             case LESS_EQUAL:
                 {
-                alt49=12;
+                alt46=12;
                 }
                 break;
             case NOT_EQUAL:
                 {
-                alt49=13;
+                alt46=13;
                 }
                 break;
-            case VK_CONTAINS:
+            case VK_OPERATOR:
                 {
-                alt49=14;
+                alt46=14;
                 }
                 break;
-            case VK_EXCLUDES:
-                {
-                alt49=15;
-                }
-                break;
-            case VK_MATCHES:
-                {
-                alt49=16;
-                }
-                break;
-            case VK_SOUNDSLIKE:
-                {
-                alt49=17;
-                }
-                break;
-            case VK_MEMBEROF:
-                {
-                alt49=18;
-                }
-                break;
             case ID:
                 {
-                alt49=19;
+                alt46=15;
                 }
                 break;
             case VT_BIND_FIELD:
                 {
-                alt49=20;
+                alt46=16;
                 }
                 break;
             case VT_FIELD:
                 {
-                alt49=21;
+                alt46=17;
                 }
                 break;
             case VT_ACCESSOR_PATH:
                 {
-                alt49=22;
+                alt46=18;
                 }
                 break;
             case STRING:
                 {
-                alt49=23;
+                alt46=19;
                 }
                 break;
             case INT:
                 {
-                alt49=24;
+                alt46=20;
                 }
                 break;
             case FLOAT:
                 {
-                alt49=25;
+                alt46=21;
                 }
                 break;
             case BOOL:
                 {
-                alt49=26;
+                alt46=22;
                 }
                 break;
             case NULL:
                 {
-                alt49=27;
+                alt46=23;
                 }
                 break;
             case VT_PAREN_CHUNK:
                 {
-                alt49=28;
+                alt46=24;
                 }
                 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("", 46, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt49) {
+            switch (alt46) {
                 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 )
                     {
@@ -2708,13 +2745,15 @@
                     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); 
 
                     }
@@ -2727,13 +2766,15 @@
                     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); 
 
                     }
@@ -2747,9 +2788,10 @@
                     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); 
 
                     }
@@ -2762,15 +2804,16 @@
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_pattern_type_in_fact_expression948);
                     pattern_type();
-                    _fsp--;
 
+                    state._fsp--;
+
                     // /Users/porcelli/Documents/dev/drools-trunk/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_IN||LA37_0==VK_OPERATOR||LA37_0==ID||LA37_0==STRING||(LA37_0>=BOOL && LA37_0<=DOUBLE_AMPER)||(LA37_0>=EQUAL && LA37_0<=NULL)) ) {
                             alt37=1;
                         }
 
@@ -2781,9 +2824,10 @@
                     	    {
                     	    pushFollow(FOLLOW_fact_expression_in_fact_expression950);
                     	    fact_expression();
-                    	    _fsp--;
 
+                    	    state._fsp--;
 
+
                     	    }
                     	    break;
 
@@ -2805,13 +2849,15 @@
                     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); 
 
                     }
@@ -2859,7 +2905,7 @@
                         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_IN||LA39_0==VK_OPERATOR||LA39_0==ID||LA39_0==STRING||(LA39_0>=BOOL && LA39_0<=DOUBLE_AMPER)||(LA39_0>=EQUAL && LA39_0<=NULL)) ) {
                             alt39=1;
                         }
 
@@ -2870,9 +2916,10 @@
                     	    {
                     	    pushFollow(FOLLOW_fact_expression_in_fact_expression983);
                     	    fact_expression();
-                    	    _fsp--;
 
+                    	    state._fsp--;
 
+
                     	    }
                     	    break;
 
@@ -2898,9 +2945,10 @@
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression993);
                     fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
@@ -2913,9 +2961,10 @@
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1002);
                     fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
@@ -2928,9 +2977,10 @@
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1011);
                     fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
@@ -2943,9 +2993,10 @@
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1020);
                     fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
@@ -2958,9 +3009,10 @@
                     match(input, Token.DOWN, null); 
                     pushFollow(FOLLOW_fact_expression_in_fact_expression1029);
                     fact_expression();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     match(input, Token.UP, null); 
 
                     }
@@ -2973,17 +3025,18 @@
                     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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:190:4: ^( VK_OPERATOR ( VK_NOT )? ( VT_SQUARE_CHUNK )? fact_expression )
                     {
-                    match(input,VK_CONTAINS,FOLLOW_VK_CONTAINS_in_fact_expression1045); 
+                    match(input,VK_OPERATOR,FOLLOW_VK_OPERATOR_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 )?
@@ -3004,55 +3057,41 @@
 
                     }
 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1050);
-                    fact_expression();
-                    _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 )
-                    {
-                    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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:190:26: ( VT_SQUARE_CHUNK )?
                     int alt41=2;
                     int LA41_0 = input.LA(1);
 
-                    if ( (LA41_0==VK_NOT) ) {
+                    if ( (LA41_0==VT_SQUARE_CHUNK) ) {
                         alt41=1;
                     }
                     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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:190:26: VT_SQUARE_CHUNK
                             {
-                            match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1059); 
+                            match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_fact_expression1050); 
 
                             }
                             break;
 
                     }
 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1062);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression1053);
                     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 )
+                case 15 :
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:191:4: ^( ID ( VK_NOT )? ( VT_SQUARE_CHUNK )? fact_expression )
                     {
-                    match(input,VK_MATCHES,FOLLOW_VK_MATCHES_in_fact_expression1069); 
+                    match(input,ID,FOLLOW_ID_in_fact_expression1060); 
 
                     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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:191:9: ( VK_NOT )?
                     int alt42=2;
                     int LA42_0 = input.LA(1);
 
@@ -3061,183 +3100,88 @@
                     }
                     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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:191:9: VK_NOT
                             {
-                            match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1071); 
+                            match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1062); 
 
                             }
                             break;
 
                     }
 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1074);
-                    fact_expression();
-                    _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 )
-                    {
-                    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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:191:17: ( VT_SQUARE_CHUNK )?
                     int alt43=2;
                     int LA43_0 = input.LA(1);
 
-                    if ( (LA43_0==VK_NOT) ) {
+                    if ( (LA43_0==VT_SQUARE_CHUNK) ) {
                         alt43=1;
                     }
                     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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:191:17: VT_SQUARE_CHUNK
                             {
-                            match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1083); 
+                            match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_fact_expression1065); 
 
                             }
                             break;
 
                     }
 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1086);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression1068);
                     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 )
-                    {
-                    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 )?
-                    int alt44=2;
-                    int LA44_0 = input.LA(1);
-
-                    if ( (LA44_0==VK_NOT) ) {
-                        alt44=1;
-                    }
-                    switch (alt44) {
-                        case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:194:18: VK_NOT
-                            {
-                            match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1095); 
-
-                            }
-                            break;
-
-                    }
-
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1098);
-                    fact_expression();
-                    _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 )
+                case 16 :
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:192:4: ^( VT_BIND_FIELD VT_LABEL fact_expression )
                     {
-                    match(input,ID,FOLLOW_ID_in_fact_expression1105); 
+                    match(input,VT_BIND_FIELD,FOLLOW_VT_BIND_FIELD_in_fact_expression1075); 
 
                     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 )?
-                    int alt45=2;
-                    int LA45_0 = input.LA(1);
-
-                    if ( (LA45_0==VK_NOT) ) {
-                        alt45=1;
-                    }
-                    switch (alt45) {
-                        case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:195:9: VK_NOT
-                            {
-                            match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1107); 
-
-                            }
-                            break;
-
-                    }
-
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:195:17: ( VT_SQUARE_CHUNK )?
-                    int alt46=2;
-                    int LA46_0 = input.LA(1);
-
-                    if ( (LA46_0==VT_SQUARE_CHUNK) ) {
-                        alt46=1;
-                    }
-                    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
-                            {
-                            match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_fact_expression1110); 
-
-                            }
-                            break;
-
-                    }
-
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1113);
+                    match(input,VT_LABEL,FOLLOW_VT_LABEL_in_fact_expression1077); 
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression1079);
                     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 )
+                case 17 :
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:193:4: ^( VT_FIELD fact_expression ( fact_expression )? )
                     {
-                    match(input,VT_BIND_FIELD,FOLLOW_VT_BIND_FIELD_in_fact_expression1120); 
+                    match(input,VT_FIELD,FOLLOW_VT_FIELD_in_fact_expression1086); 
 
                     match(input, Token.DOWN, null); 
-                    match(input,VT_LABEL,FOLLOW_VT_LABEL_in_fact_expression1122); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1124);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression1088);
                     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:193:31: ( fact_expression )?
+                    int alt44=2;
+                    int LA44_0 = input.LA(1);
 
+                    if ( (LA44_0==VT_FACT||LA44_0==VT_PAREN_CHUNK||(LA44_0>=VT_FACT_BINDING && LA44_0<=VT_ACCESSOR_PATH)||LA44_0==VK_EVAL||LA44_0==VK_IN||LA44_0==VK_OPERATOR||LA44_0==ID||LA44_0==STRING||(LA44_0>=BOOL && LA44_0<=DOUBLE_AMPER)||(LA44_0>=EQUAL && LA44_0<=NULL)) ) {
+                        alt44=1;
                     }
-                    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 )? )
-                    {
-                    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 )?
-                    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)) ) {
-                        alt47=1;
-                    }
-                    switch (alt47) {
+                    switch (alt44) {
                         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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:193:31: fact_expression
                             {
-                            pushFollow(FOLLOW_fact_expression_in_fact_expression1135);
+                            pushFollow(FOLLOW_fact_expression_in_fact_expression1090);
                             fact_expression();
-                            _fsp--;
 
+                            state._fsp--;
 
+
                             }
                             break;
 
@@ -3248,43 +3192,44 @@
 
                     }
                     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 )+ )
+                case 18 :
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:194:4: ^( VT_ACCESSOR_PATH ( accessor_element )+ )
                     {
-                    match(input,VT_ACCESSOR_PATH,FOLLOW_VT_ACCESSOR_PATH_in_fact_expression1143); 
+                    match(input,VT_ACCESSOR_PATH,FOLLOW_VT_ACCESSOR_PATH_in_fact_expression1098); 
 
                     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 )+
-                    int cnt48=0;
-                    loop48:
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:194:23: ( accessor_element )+
+                    int cnt45=0;
+                    loop45:
                     do {
-                        int alt48=2;
-                        int LA48_0 = input.LA(1);
+                        int alt45=2;
+                        int LA45_0 = input.LA(1);
 
-                        if ( (LA48_0==VT_ACCESSOR_ELEMENT) ) {
-                            alt48=1;
+                        if ( (LA45_0==VT_ACCESSOR_ELEMENT) ) {
+                            alt45=1;
                         }
 
 
-                        switch (alt48) {
+                        switch (alt45) {
                     	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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:194:23: accessor_element
                     	    {
-                    	    pushFollow(FOLLOW_accessor_element_in_fact_expression1145);
+                    	    pushFollow(FOLLOW_accessor_element_in_fact_expression1100);
                     	    accessor_element();
-                    	    _fsp--;
 
+                    	    state._fsp--;
 
+
                     	    }
                     	    break;
 
                     	default :
-                    	    if ( cnt48 >= 1 ) break loop48;
+                    	    if ( cnt45 >= 1 ) break loop45;
                                 EarlyExitException eee =
-                                    new EarlyExitException(48, input);
+                                    new EarlyExitException(45, input);
                                 throw eee;
                         }
-                        cnt48++;
+                        cnt45++;
                     } while (true);
 
 
@@ -3292,45 +3237,45 @@
 
                     }
                     break;
-                case 23 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:199:4: STRING
+                case 19 :
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:195:4: STRING
                     {
-                    match(input,STRING,FOLLOW_STRING_in_fact_expression1152); 
+                    match(input,STRING,FOLLOW_STRING_in_fact_expression1107); 
 
                     }
                     break;
-                case 24 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:200:4: INT
+                case 20 :
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:196:4: INT
                     {
-                    match(input,INT,FOLLOW_INT_in_fact_expression1157); 
+                    match(input,INT,FOLLOW_INT_in_fact_expression1112); 
 
                     }
                     break;
-                case 25 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:201:4: FLOAT
+                case 21 :
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:197:4: FLOAT
                     {
-                    match(input,FLOAT,FOLLOW_FLOAT_in_fact_expression1162); 
+                    match(input,FLOAT,FOLLOW_FLOAT_in_fact_expression1117); 
 
                     }
                     break;
-                case 26 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:202:4: BOOL
+                case 22 :
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:198:4: BOOL
                     {
-                    match(input,BOOL,FOLLOW_BOOL_in_fact_expression1167); 
+                    match(input,BOOL,FOLLOW_BOOL_in_fact_expression1122); 
 
                     }
                     break;
-                case 27 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:203:4: NULL
+                case 23 :
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:199:4: NULL
                     {
-                    match(input,NULL,FOLLOW_NULL_in_fact_expression1172); 
+                    match(input,NULL,FOLLOW_NULL_in_fact_expression1127); 
 
                     }
                     break;
-                case 28 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:204:4: VT_PAREN_CHUNK
+                case 24 :
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:200:4: VT_PAREN_CHUNK
                     {
-                    match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_fact_expression1177); 
+                    match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_fact_expression1132); 
 
                     }
                     break;
@@ -3345,74 +3290,75 @@
         }
         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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:203: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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:204:2: ( ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:204:4: ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
             {
-            match(input,VT_PATTERN_TYPE,FOLLOW_VT_PATTERN_TYPE_in_pattern_type1189); 
+            match(input,VT_PATTERN_TYPE,FOLLOW_VT_PATTERN_TYPE_in_pattern_type1144); 
 
             match(input, Token.DOWN, null); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:208:22: ( ID )+
-            int cnt50=0;
-            loop50:
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:204:22: ( ID )+
+            int cnt47=0;
+            loop47:
             do {
-                int alt50=2;
-                int LA50_0 = input.LA(1);
+                int alt47=2;
+                int LA47_0 = input.LA(1);
 
-                if ( (LA50_0==ID) ) {
-                    alt50=1;
+                if ( (LA47_0==ID) ) {
+                    alt47=1;
                 }
 
 
-                switch (alt50) {
+                switch (alt47) {
             	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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:204:22: ID
             	    {
-            	    match(input,ID,FOLLOW_ID_in_pattern_type1191); 
+            	    match(input,ID,FOLLOW_ID_in_pattern_type1146); 
 
             	    }
             	    break;
 
             	default :
-            	    if ( cnt50 >= 1 ) break loop50;
+            	    if ( cnt47 >= 1 ) break loop47;
                         EarlyExitException eee =
-                            new EarlyExitException(50, input);
+                            new EarlyExitException(47, input);
                         throw eee;
                 }
-                cnt50++;
+                cnt47++;
             } while (true);
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:208:26: ( dimension_definition )*
-            loop51:
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:204:26: ( dimension_definition )*
+            loop48:
             do {
-                int alt51=2;
-                int LA51_0 = input.LA(1);
+                int alt48=2;
+                int LA48_0 = input.LA(1);
 
-                if ( (LA51_0==LEFT_SQUARE) ) {
-                    alt51=1;
+                if ( (LA48_0==LEFT_SQUARE) ) {
+                    alt48=1;
                 }
 
 
-                switch (alt51) {
+                switch (alt48) {
             	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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:204:26: dimension_definition
             	    {
-            	    pushFollow(FOLLOW_dimension_definition_in_pattern_type1194);
+            	    pushFollow(FOLLOW_dimension_definition_in_pattern_type1149);
             	    dimension_definition();
-            	    _fsp--;
 
+            	    state._fsp--;
 
+
             	    }
             	    break;
 
             	default :
-            	    break loop51;
+            	    break loop48;
                 }
             } while (true);
 
@@ -3430,74 +3376,75 @@
         }
         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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:207: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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:208:2: ( ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:208:4: ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
             {
-            match(input,VT_DATA_TYPE,FOLLOW_VT_DATA_TYPE_in_data_type1208); 
+            match(input,VT_DATA_TYPE,FOLLOW_VT_DATA_TYPE_in_data_type1163); 
 
             match(input, Token.DOWN, null); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:212:19: ( ID )+
-            int cnt52=0;
-            loop52:
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:208:19: ( ID )+
+            int cnt49=0;
+            loop49:
             do {
-                int alt52=2;
-                int LA52_0 = input.LA(1);
+                int alt49=2;
+                int LA49_0 = input.LA(1);
 
-                if ( (LA52_0==ID) ) {
-                    alt52=1;
+                if ( (LA49_0==ID) ) {
+                    alt49=1;
                 }
 
 
-                switch (alt52) {
+                switch (alt49) {
             	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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:208:19: ID
             	    {
-            	    match(input,ID,FOLLOW_ID_in_data_type1210); 
+            	    match(input,ID,FOLLOW_ID_in_data_type1165); 
 
             	    }
             	    break;
 
             	default :
-            	    if ( cnt52 >= 1 ) break loop52;
+            	    if ( cnt49 >= 1 ) break loop49;
                         EarlyExitException eee =
-                            new EarlyExitException(52, input);
+                            new EarlyExitException(49, input);
                         throw eee;
                 }
-                cnt52++;
+                cnt49++;
             } while (true);
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:212:23: ( dimension_definition )*
-            loop53:
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:208:23: ( dimension_definition )*
+            loop50:
             do {
-                int alt53=2;
-                int LA53_0 = input.LA(1);
+                int alt50=2;
+                int LA50_0 = input.LA(1);
 
-                if ( (LA53_0==LEFT_SQUARE) ) {
-                    alt53=1;
+                if ( (LA50_0==LEFT_SQUARE) ) {
+                    alt50=1;
                 }
 
 
-                switch (alt53) {
+                switch (alt50) {
             	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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:208:23: dimension_definition
             	    {
-            	    pushFollow(FOLLOW_dimension_definition_in_data_type1213);
+            	    pushFollow(FOLLOW_dimension_definition_in_data_type1168);
             	    dimension_definition();
-            	    _fsp--;
 
+            	    state._fsp--;
 
+
             	    }
             	    break;
 
             	default :
-            	    break loop53;
+            	    break loop50;
                 }
             } while (true);
 
@@ -3515,18 +3462,18 @@
         }
         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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:211: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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:212:2: ( LEFT_SQUARE RIGHT_SQUARE )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:212: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); 
+            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dimension_definition1181); 
+            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dimension_definition1183); 
 
             }
 
@@ -3539,42 +3486,42 @@
         }
         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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:215: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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:216:2: ( ^( VT_ACCESSOR_ELEMENT ID ( VT_SQUARE_CHUNK )* ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:216:4: ^( VT_ACCESSOR_ELEMENT ID ( VT_SQUARE_CHUNK )* )
             {
-            match(input,VT_ACCESSOR_ELEMENT,FOLLOW_VT_ACCESSOR_ELEMENT_in_accessor_element1240); 
+            match(input,VT_ACCESSOR_ELEMENT,FOLLOW_VT_ACCESSOR_ELEMENT_in_accessor_element1195); 
 
             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 )*
-            loop54:
+            match(input,ID,FOLLOW_ID_in_accessor_element1197); 
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:216:29: ( VT_SQUARE_CHUNK )*
+            loop51:
             do {
-                int alt54=2;
-                int LA54_0 = input.LA(1);
+                int alt51=2;
+                int LA51_0 = input.LA(1);
 
-                if ( (LA54_0==VT_SQUARE_CHUNK) ) {
-                    alt54=1;
+                if ( (LA51_0==VT_SQUARE_CHUNK) ) {
+                    alt51=1;
                 }
 
 
-                switch (alt54) {
+                switch (alt51) {
             	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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:216:29: VT_SQUARE_CHUNK
             	    {
-            	    match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_accessor_element1244); 
+            	    match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_accessor_element1199); 
 
             	    }
             	    break;
 
             	default :
-            	    break loop54;
+            	    break loop51;
                 }
             } while (true);
 
@@ -3592,72 +3539,73 @@
         }
         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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:219: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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:220: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:220: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,VT_EXPRESSION_CHAIN,FOLLOW_VT_EXPRESSION_CHAIN_in_expression_chain1213); 
 
             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 )?
-            int alt55=2;
-            int LA55_0 = input.LA(1);
+            match(input,ID,FOLLOW_ID_in_expression_chain1215); 
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:220:29: ( VT_SQUARE_CHUNK )?
+            int alt52=2;
+            int LA52_0 = input.LA(1);
 
-            if ( (LA55_0==VT_SQUARE_CHUNK) ) {
-                alt55=1;
+            if ( (LA52_0==VT_SQUARE_CHUNK) ) {
+                alt52=1;
             }
-            switch (alt55) {
+            switch (alt52) {
                 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-trunk/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_expression_chain1262); 
+                    match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_expression_chain1217); 
 
                     }
                     break;
 
             }
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:224:46: ( VT_PAREN_CHUNK )?
-            int alt56=2;
-            int LA56_0 = input.LA(1);
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:220:46: ( VT_PAREN_CHUNK )?
+            int alt53=2;
+            int LA53_0 = input.LA(1);
 
-            if ( (LA56_0==VT_PAREN_CHUNK) ) {
-                alt56=1;
+            if ( (LA53_0==VT_PAREN_CHUNK) ) {
+                alt53=1;
             }
-            switch (alt56) {
+            switch (alt53) {
                 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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:220:46: VT_PAREN_CHUNK
                     {
-                    match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_expression_chain1265); 
+                    match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_expression_chain1220); 
 
                     }
                     break;
 
             }
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:224:62: ( expression_chain )?
-            int alt57=2;
-            int LA57_0 = input.LA(1);
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:220:62: ( expression_chain )?
+            int alt54=2;
+            int LA54_0 = input.LA(1);
 
-            if ( (LA57_0==VT_EXPRESSION_CHAIN) ) {
-                alt57=1;
+            if ( (LA54_0==VT_EXPRESSION_CHAIN) ) {
+                alt54=1;
             }
-            switch (alt57) {
+            switch (alt54) {
                 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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:220:62: expression_chain
                     {
-                    pushFollow(FOLLOW_expression_chain_in_expression_chain1268);
+                    pushFollow(FOLLOW_expression_chain_in_expression_chain1223);
                     expression_chain();
-                    _fsp--;
 
+                    state._fsp--;
 
+
                     }
                     break;
 
@@ -3677,17 +3625,17 @@
         }
         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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:223: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-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:224:2: ( VT_CURLY_CHUNK )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g:224:4: VT_CURLY_CHUNK
             {
-            match(input,VT_CURLY_CHUNK,FOLLOW_VT_CURLY_CHUNK_in_curly_chunk1282); 
+            match(input,VT_CURLY_CHUNK,FOLLOW_VT_CURLY_CHUNK_in_curly_chunk1237); 
 
             }
 
@@ -3700,18 +3648,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,0x0000000000010000L});
     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 +3677,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,0x0000000000050000L});
     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 +3689,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,0x0000000000080000L});
     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,0x0000000000010000L});
+    public static final BitSet FOLLOW_data_type_in_param_definition275 = new BitSet(new long[]{0x0000004000000008L,0x0000000000010000L});
     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,0x0000400000000000L});
+    public static final BitSet FOLLOW_dimension_definition_in_argument291 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
     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,0x0000000001090000L});
+    public static final BitSet FOLLOW_decl_metadata_in_type_declaration308 = new BitSet(new long[]{0x0000000000000000L,0x0000000001090000L});
+    public static final BitSet FOLLOW_decl_field_in_type_declaration311 = new BitSet(new long[]{0x0000000000000000L,0x0000000000090000L});
     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,0x0000000001000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_decl_field351 = new BitSet(new long[]{0x0000000000000008L,0x0000000001000000L});
     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,0x0000000000080000L});
     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,0x0000000008000000L});
+    public static final BitSet FOLLOW_rule_attributes_in_rule421 = new BitSet(new long[]{0x0000000000020000L,0x0000000008000000L});
     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 +3754,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,0x0000000100000628L});
     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,0x0000000100000628L});
     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,0x0000000100000628L});
     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,0x0000000100000628L});
     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,0x0000000100000628L});
     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 +3772,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,0x0000000100000628L});
     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,0x0000001400000010L});
     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 +3794,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,0x0000000000002000L});
     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 +3808,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,0x0000000000010000L});
     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,0x00003FC0F0114048L});
     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,0x00003FC0F0114048L});
     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,0x00003FC0F0114048L});
     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,0x00003FC0F0114048L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression950 = new BitSet(new long[]{0x0000001F00100048L,0x00003FC0F0114048L});
     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,0x00003FC0F0114048L});
     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,0x00003FC0F0114048L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression983 = new BitSet(new long[]{0x0000001F00100048L,0x00003FC0F0114048L});
     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});
@@ -3893,55 +3843,44 @@
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1029 = new BitSet(new long[]{0x0000000000000008L});
     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_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_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_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_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_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_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_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_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});
-    public static final BitSet FOLLOW_STRING_in_fact_expression1152 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INT_in_fact_expression1157 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FLOAT_in_fact_expression1162 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_BOOL_in_fact_expression1167 = new BitSet(new long[]{0x0000000000000002L});
-    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_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_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});
-    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_accessor_element1244 = new BitSet(new long[]{0x0000000000080008L});
-    public static final BitSet FOLLOW_VT_EXPRESSION_CHAIN_in_expression_chain1258 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_expression_chain1260 = new BitSet(new long[]{0x0000000040180008L});
-    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_expression_chain1262 = new BitSet(new long[]{0x0000000040100008L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_expression_chain1265 = new BitSet(new long[]{0x0000000040000008L});
-    public static final BitSet FOLLOW_expression_chain_in_expression_chain1268 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_CURLY_CHUNK_in_curly_chunk1282 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VK_OPERATOR_in_fact_expression1045 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1047 = new BitSet(new long[]{0x0000001F00180040L,0x00003FC0F0114048L});
+    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_fact_expression1050 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC0F0114048L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1053 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_ID_in_fact_expression1060 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1062 = new BitSet(new long[]{0x0000001F00180040L,0x00003FC0F0114048L});
+    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_fact_expression1065 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC0F0114048L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1068 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_BIND_FIELD_in_fact_expression1075 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression1077 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC0F0114048L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1079 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_FIELD_in_fact_expression1086 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1088 = new BitSet(new long[]{0x0000001F00100048L,0x00003FC0F0114048L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1090 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_ACCESSOR_PATH_in_fact_expression1098 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_accessor_element_in_fact_expression1100 = new BitSet(new long[]{0x0000002000000008L});
+    public static final BitSet FOLLOW_STRING_in_fact_expression1107 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INT_in_fact_expression1112 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FLOAT_in_fact_expression1117 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_BOOL_in_fact_expression1122 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NULL_in_fact_expression1127 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_fact_expression1132 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_PATTERN_TYPE_in_pattern_type1144 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_pattern_type1146 = new BitSet(new long[]{0x0000000000000008L,0x0000400000010000L});
+    public static final BitSet FOLLOW_dimension_definition_in_pattern_type1149 = new BitSet(new long[]{0x0000000000000008L,0x0000400000000000L});
+    public static final BitSet FOLLOW_VT_DATA_TYPE_in_data_type1163 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_data_type1165 = new BitSet(new long[]{0x0000000000000008L,0x0000400000010000L});
+    public static final BitSet FOLLOW_dimension_definition_in_data_type1168 = new BitSet(new long[]{0x0000000000000008L,0x0000400000000000L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_dimension_definition1181 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dimension_definition1183 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_ACCESSOR_ELEMENT_in_accessor_element1195 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_accessor_element1197 = new BitSet(new long[]{0x0000000000080008L});
+    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_accessor_element1199 = new BitSet(new long[]{0x0000000000080008L});
+    public static final BitSet FOLLOW_VT_EXPRESSION_CHAIN_in_expression_chain1213 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_expression_chain1215 = new BitSet(new long[]{0x0000000040180008L});
+    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_expression_chain1217 = new BitSet(new long[]{0x0000000040100008L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_expression_chain1220 = new BitSet(new long[]{0x0000000040000008L});
+    public static final BitSet FOLLOW_expression_chain_in_expression_chain1223 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_CURLY_CHUNK_in_curly_chunk1237 = new BitSet(new long[]{0x0000000000000002L});
 
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/gUnitTest.testsuite
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/gUnitTest.testsuite	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/gUnitTest.testsuite	2008-11-25 18:08:44 UTC (rev 24099)
@@ -1425,10 +1425,10 @@
 rule "test pluggable operators"
 when
     $a : EventA()
-    $b : EventB( this `after[1,10] $a )
+    $b : EventB( this after[1,10] $a )
     $c : EventC( this finishes $b )
     $d : EventD( this not starts $a )
-    $e : EventE( this not `before [1, 10] $b )
+    $e : EventE( this not before [1, 10] $b )
 then
 end>>
 		-> (VT_COMPILATION_UNIT (package (VT_PACKAGE_ID org drools)) (rule "test pluggable operators" when (VT_AND_IMPLICIT (VT_PATTERN (VT_FACT_BINDING $a (VT_FACT (VT_PATTERN_TYPE EventA)))) (VT_PATTERN (VT_FACT_BINDING $b (VT_FACT (VT_PATTERN_TYPE EventB) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT this)) (after [1,10] (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT $a))))))) (VT_PATTERN (VT_FACT_BINDING $c (VT_FACT (VT_PATTERN_TYPE EventC) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT this)) (finishes (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT $b))))))) (VT_PATTERN (VT_FACT_BINDING $d (VT_FACT (VT_PATTERN_TYPE EventD) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT this)) (starts not (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT $a))))))) (VT_PATTERN (VT_FACT_BINDING $e (VT_FACT (VT_PATTERN_TYPE EventE) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT this)) (before not [1, 10] (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT $b)))))))) then
@@ -1893,10 +1893,10 @@
 
 			<<
 		    $a : EventA()
-		    $b : EventB( this `after[1,10] $a )
+		    $b : EventB( this after[1,10] $a )
 		    $c : EventC( this finishes $b )
 		    $d : EventD( this not starts $a )
-		    $e : EventE( this not `before [1, 10] $b )
+		    $e : EventE( this not before [1, 10] $b )
 			>>
 				-> (VT_AND_IMPLICIT (VT_PATTERN (VT_FACT_BINDING $a (VT_FACT (VT_PATTERN_TYPE EventA)))) (VT_PATTERN (VT_FACT_BINDING $b (VT_FACT (VT_PATTERN_TYPE EventB) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT this)) (after [1,10] (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT $a))))))) (VT_PATTERN (VT_FACT_BINDING $c (VT_FACT (VT_PATTERN_TYPE EventC) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT this)) (finishes (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT $b))))))) (VT_PATTERN (VT_FACT_BINDING $d (VT_FACT (VT_PATTERN_TYPE EventD) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT this)) (starts not (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT $a))))))) (VT_PATTERN (VT_FACT_BINDING $e (VT_FACT (VT_PATTERN_TYPE EventE) (VT_FIELD (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT this)) (before not [1, 10] (VT_ACCESSOR_PATH (VT_ACCESSOR_ELEMENT $b))))))))
 

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/gUnitTreeWalkerTest.testsuite
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/gUnitTreeWalkerTest.testsuite	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/gUnitTreeWalkerTest.testsuite	2008-11-25 18:08:44 UTC (rev 24099)
@@ -1216,10 +1216,10 @@
 rule "test pluggable operators"
 when
     $a : EventA()
-    $b : EventB( this `after[1,10] $a )
+    $b : EventB( this after[1,10] $a )
     $c : EventC( this finishes $b )
     $d : EventD( this not starts $a )
-    $e : EventE( this not `before [1, 10] $b )
+    $e : EventE( this not before [1, 10] $b )
 then
 end>>
 		OK
@@ -1649,10 +1649,10 @@
 
 			<<
 		    $a : EventA()
-		    $b : EventB( this `after[1,10] $a )
+		    $b : EventB( this after[1,10] $a )
 		    $c : EventC( this finishes $b )
 		    $d : EventD( this not starts $a )
-		    $e : EventE( this not `before [1, 10] $b )
+		    $e : EventE( this not before [1, 10] $b )
 			>>
 				OK
 

Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_TimeRelationalOperators.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_TimeRelationalOperators.drl	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_TimeRelationalOperators.drl	2008-11-25 18:08:44 UTC (rev 24099)
@@ -32,7 +32,7 @@
 rule "before operator"
 when
     $a : StockTick( company == "DROO" )
-    $b : StockTick( company == "ACME", this ~before[5,8] $a )
+    $b : StockTick( company == "ACME", this before[5,8] $a )
 then
     results_before.add( $b );
 end
@@ -40,7 +40,7 @@
 rule "after operator"
 when
     $a : StockTick( company == "DROO" )
-    $b : StockTick( company == "ACME", this ~after[5,8] $a )
+    $b : StockTick( company == "ACME", this after[5,8] $a )
 then
     results_after.add( $b );
 end
@@ -48,7 +48,7 @@
 rule "meets operator"
 when
     $a : StockTick( company == "DROO" )
-    $b : StockTick( company == "ACME", this ~meets[1] $a )
+    $b : StockTick( company == "ACME", this meets[1] $a )
 then
     results_meets.add( $b );
 end
@@ -56,7 +56,7 @@
 rule "met-by operator"
 when
     $a : StockTick( company == "DROO" )
-    $b : StockTick( company == "ACME", this ~metby[1] $a )
+    $b : StockTick( company == "ACME", this metby[1] $a )
 then
     results_met_by.add( $b );
 end
@@ -65,7 +65,7 @@
 rule "overlaps operator"
 when
     $a : StockTick( company == "ACME" )
-    $b : StockTick( company == "DROO", this ~overlaps[1] $a )
+    $b : StockTick( company == "DROO", this overlaps[1] $a )
 then
     results_overlaps.add( $b );
 end
@@ -73,7 +73,7 @@
 rule "overlapped-by operator"
 when
     $a : StockTick( company == "DROO" )
-    $b : StockTick( company == "ACME", this ~overlappedby[1] $a )
+    $b : StockTick( company == "ACME", this overlappedby[1] $a )
 then
     results_overlapped_by.add( $b );
 end
@@ -81,7 +81,7 @@
 rule "during operator"
 when
     $a : StockTick( company == "DROO" )
-    $b : StockTick( company == "ACME", this ~during[1] $a )
+    $b : StockTick( company == "ACME", this during[1] $a )
 then
     results_during.add( $b );
 end
@@ -89,7 +89,7 @@
 rule "includes operator"
 when
     $a : StockTick( company == "ACME" )
-    $b : StockTick( company == "DROO", this ~includes[1] $a )
+    $b : StockTick( company == "DROO", this includes[1] $a )
 then
     results_includes.add( $b );
 end
@@ -97,7 +97,7 @@
 rule "starts operator"
 when
     $a : StockTick( company == "ACME" )
-    $b : StockTick( company == "ACME", this ~starts[2] $a )
+    $b : StockTick( company == "ACME", this starts[2] $a )
 then
     results_starts.add( $b );
 end
@@ -105,7 +105,7 @@
 rule "started-by operator"
 when
     $a : StockTick( company == "ACME" )
-    $b : StockTick( company == "ACME", this ~startedby[2] $a )
+    $b : StockTick( company == "ACME", this startedby[2] $a )
 then
     results_started_by.add( $b );
 end
@@ -113,7 +113,7 @@
 rule "finishes operator"
 when
     $a : StockTick( company == "ACME" )
-    $b : StockTick( company == "ACME", this ~finishes[2] $a )
+    $b : StockTick( company == "ACME", this finishes[2] $a )
 then
     results_finishes.add( $b );
 end
@@ -121,7 +121,7 @@
 rule "finished-by operator"
 when
     $a : StockTick( company == "ACME" )
-    $b : StockTick( company == "ACME", this ~finishedby[2] $a )
+    $b : StockTick( company == "ACME", this finishedby[2] $a )
 then
     results_finished_by.add( $b );
 end
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/pluggable_operators.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/pluggable_operators.drl	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/pluggable_operators.drl	2008-11-25 18:08:44 UTC (rev 24099)
@@ -3,9 +3,9 @@
 rule "test pluggable operators"
 when
     $a : EventA()
-    $b : EventB( this ~after[1,10] $a )
+    $b : EventB( this after[1,10] $a || this not after[15,20] $a )
     $c : EventC( this finishes $b )
     $d : EventD( this not starts $a )
-    $e : EventE( this not ~before[1, 10] $b )
+    $e : EventE( this not before[1, 10] $b || after[1, 10] $c && this after[1, 5] $d )
 then
 end
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/EvaluatorRegistry.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/EvaluatorRegistry.java	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/EvaluatorRegistry.java	2008-11-25 18:08:44 UTC (rev 24099)
@@ -76,6 +76,19 @@
         this.addEvaluatorDefinition( new SetEvaluatorsDefinition() );
         this.addEvaluatorDefinition( new MatchesEvaluatorsDefinition() );
         this.addEvaluatorDefinition( new SoundslikeEvaluatorsDefinition() );
+        this.addEvaluatorDefinition( new BeforeEvaluatorDefinition() );
+        this.addEvaluatorDefinition( new AfterEvaluatorDefinition() );
+        this.addEvaluatorDefinition( new MeetsEvaluatorDefinition() );
+        this.addEvaluatorDefinition( new MetByEvaluatorDefinition() );
+        this.addEvaluatorDefinition( new OverlapsEvaluatorDefinition() );
+        this.addEvaluatorDefinition( new OverlappedByEvaluatorDefinition() );
+        this.addEvaluatorDefinition( new IncludesEvaluatorDefinition() );
+        this.addEvaluatorDefinition( new DuringEvaluatorDefinition() );
+        this.addEvaluatorDefinition( new FinishesEvaluatorDefinition() );
+        this.addEvaluatorDefinition( new FinishedByEvaluatorDefinition() );
+        this.addEvaluatorDefinition( new StartsEvaluatorDefinition() );
+        this.addEvaluatorDefinition( new StartedByEvaluatorDefinition() );
+        this.addEvaluatorDefinition( new CoincidesEvaluatorDefinition() );
     }
 
     public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {

Modified: labs/jbossrules/trunk/pom.xml
===================================================================
--- labs/jbossrules/trunk/pom.xml	2008-11-25 18:03:17 UTC (rev 24098)
+++ labs/jbossrules/trunk/pom.xml	2008-11-25 18:08:44 UTC (rev 24099)
@@ -925,7 +925,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>
@@ -934,21 +934,6 @@
                 </exclusions>                        
             </dependency>
             <dependency>
-			    <groupId>org.antlr</groupId>
-			    <artifactId>gunit</artifactId>
-                <version>1.0.1</version>
-                <exclusions>
-                  <exclusion>
-                    <groupId>org.antlr</groupId>
-                    <artifactId>stringtemplate</artifactId>
-                  </exclusion>          
-                  <exclusion>
-                    <groupId>org.apache.maven</groupId>
-                    <artifactId>maven-project</artifactId>
-                  </exclusion>                                                                
-                </exclusions>                                             
-            </dependency>
-            <dependency>
                 <groupId>org.eclipse.jdt</groupId>
                 <artifactId>core</artifactId>
                 <version>3.4.2.v_883_R34x</version>




More information about the jboss-svn-commits mailing list